About
Backend engineer, systems thinker, and builder of payment infrastructure.
Software engineer with 7+ years of experience designing and building scalable payment systems and distributed backend applications. Skilled in Golang, system design, event-driven architecture, microservices, GCP, and leveraging AI to improve engineering productivity.
Passionate about building reliable, high-performance systems and solving complex engineering challenges at scale.
Over the past 7+ years I've grown from writing backend services to leading the design of systems that move money reliably for millions of transactions. Most of that journey has been at Ayoconnect in Jakarta, where I moved from individual contributor to team lead, tech lead, and now Principal Engineer.
My focus is the unglamorous work that makes payments trustworthy: idempotency, reconciliation, event-driven architecture, and keeping systems simple enough to reason about under pressure. I care about mentoring, about writing things down, and about using new tools — including AI-assisted development — to help teams move faster without cutting corners.
Engineering approach
How I work through difficult systems problems
Start with evidence
I begin with the behavior users and systems are actually experiencing. Logs, metrics, traces, database state, traffic patterns, and dependency behavior help separate a plausible story from a verified root cause.
Reason across boundaries
Payment flows cross APIs, services, queues, databases, and external providers. I look for concurrency hazards, duplicate delivery, timeouts, retries, consistency gaps, and the effect a local change can have on the broader system.
Choose the smallest sufficient design
Reliability, performance, cost, complexity, maintainability, and delivery speed all matter. I prefer a simpler design when it satisfies the business and operational constraints, and make the trade-offs explicit when it does not.
Change production carefully
Migrations and platform changes need more than a successful deployment. I favor incremental rollout, observable checkpoints, validation against real behavior, and a rollback or recovery plan—especially when working with legacy systems that cannot be redesigned from scratch.
This is also how I review designs and code: not only for whether the happy path works, but for failure scenarios, operational impact, long-term maintenance, and whether the reasoning can be communicated clearly enough for other engineers to build on it.
Progression
How the path unfolded
- 01
Software Engineer
Building backends and REST APIs, learning the craft end to end.
- 02
Team Lead
Owning DevOps, infrastructure, and engineering process for a department.
- 03
Tech Lead
Designing and launching payment products from the ground up at scale.
- 04
Principal Engineer
Driving architecture, mentoring, and platform-level decisions.
Technical depth
Built through real production constraints
My experience is less about collecting technologies and more about understanding the systems those technologies have to support.
Distributed systems
Designing service boundaries, event flows, retries, timeouts, and reconciliation paths.
Payment infrastructure
Building transfer, recurring payment, fraud, pricing, and bank integration systems where correctness matters.
Backend architecture
Using Go, APIs, microservices, and event-driven patterns to keep high-throughput services understandable.
Cloud and operations
Working with GCP, Kubernetes, deployment pipelines, availability, scalability, and production monitoring.
Data and performance
Applying PostgreSQL, Redis, caching, database design, and latency-aware decisions to real workloads.
Technical direction
Reviewing designs, mentoring engineers, documenting decisions, and influencing architecture without overstating management scope.
Skills
Education
Bapatla Engineering College
Bachelor of Technology (B.Tech.), Computer Science
2013 – 2017
Languages
- English — Full Professional
- Telugu — Native