Making Technical Decisions You Won't Regret
A repeatable framework for technical decisions you won't regret โ frame the trade-offs, decide for your stage, and write down the why.
A repeatable framework for technical decisions you won't regret โ frame the trade-offs, decide for your stage, and write down the why.
How to make code review actually improve the codebase โ automate style, focus on design, ask questions, and keep PRs small.
Lessons from leading backend teams โ shifting from output to outcomes, sharing context, owning interfaces, and multiplying your impact.
What to instrument for observability โ structured logs, RED/USE metrics, and distributed traces โ and how to alert only on what's actionable.
How to design REST APIs that age well โ versioning, pagination, consistent errors, and backward compatibility that won't break clients.
A backend engineer's mental model for database indexing โ what to index, the leftmost-prefix rule, and why a query still does a full scan.
How to design APIs and message consumers that survive retries safely โ idempotency keys, HTTP semantics, and idempotent consumers.
How to scale a Django backend to 170K concurrent users โ stateless services, autoscaling, load balancing, and protecting the database.
When to break a Django monolith into microservices โ and how, with the strangler pattern, an API gateway, and a database per service.
Designing a workflow engine for processes that mix automation, human steps, and retries โ using an explicit state machine, not tangled conditionals.