A few stories from my career.

Real situations I lived through, the problem, the call I made, and why.

Standardizing Development in an Era of AI-Generated Code

When AI gave developers full control over the code, we lost the limits that kept projects consistent. I built starters with automatic guardrails, owned by the whole team.

Impact

Starters as an internal product, adopted team-wide

Designing a Process That Didn't Depend on an Unreliable Product Owner

When a client's temporary product owner couldn't manage requirements, we didn't try to fix the person — we redesigned the process around them.

Impact

On-time delivery, zero contract slippage

Designing a Safe Handoff Between Two Development Teams

A client wanted to take over maintenance of a product we built. I designed a risk-based handoff so two teams could work in parallel without becoming a bottleneck.

Impact

Progressive handoff, zero bottleneck

The frontend did not have to read f_title

In 2024 I had the chance to take part in the initial build of a classifieds marketplace. The website was new. The APIs were not. On the server we parsed the JSON with Zod so the frontend read `title`, not `f_title`.

Impact

The frontend never sees f_title

From a Monolith to a Distributed Architecture, Without Rewriting the Product

A monolith stopped working once modules with very different needs began competing for the same infrastructure. I migrated responsibilities into microservices without rewriting the product or stopping development.

Impact

~10 microservices, zero rewrite

When the Platform Had to Handle 20× More Traffic

When demand spiked far beyond what our monolithic backend could handle, we didn't rewrite the infrastructure — we distributed traffic across instances and multiplied capacity by 20×.

Impact

~20× more user capacity