A few years ago I thought writing clean code was enough. Naming, abstractions, coverage — all optimized. Then production traffic doubled and everything broke.
Not because the code was messy. Because the system wasn't designed to scale. We had weak caching, poor indexing, almost no observability, and services that were too tightly coupled.
Fixing it took months. Designing it properly would have taken days. That experience changed how I approach every build.
Before writing code now, I ask: What's the failure mode? What happens under 10x load? Where is the bottleneck? How do we monitor this?
You don't grow by writing more code. You grow by thinking bigger than the code.