Article
Why I Stopped Chasing New Frameworks
There was a time when every new framework announcement sent me into a spiral. A new ORM? I’d spend the weekend rewriting a side project. A new web framework promising 10x performance? Sign me up. A new infrastructure tool? Already halfway through the docs.
I was exhausted.
The Treadmill
The JavaScript ecosystem gets the most criticism for this, but backend engineering has its own version. In the last five years alone, I’ve watched the “correct” way to deploy a service shift from VMs to containers to Kubernetes to serverless to… containers again?
Every year brings a new database that’s “the right tool for every job,” a new message queue that’s “simpler than Kafka,” and a new deployment platform that “eliminates all operational burden.”
What Actually Matters
Around year seven of my career, I had a revelation during a production incident. The system that was failing used cutting-edge technology. The system that saved us was a boring PostgreSQL database with well-designed schemas and a straightforward Python service.
That was the moment I internalized something experienced engineers already knew:
Depth in fundamentals beats breadth in frameworks.
Understanding TCP, HTTP, and how your database query planner works will serve you for decades. Knowing the API of the framework du jour will serve you until the next one arrives.
My Current Stack (and Why It Hasn’t Changed)
For the past three years, my default stack has been remarkably stable:
- Python or Go for services (depending on the problem)
- PostgreSQL for relational data
- Redis for caching and simple queues
- Kafka when I actually need event streaming (which is less often than you think)
- Docker + a simple orchestrator for deployment
Is this the “best” stack? No. Does it let me build reliable systems quickly without chasing documentation for the latest alpha release? Absolutely.
The Framework Evaluation Checklist
When I do evaluate something new, I ask these questions:
- Does this solve a problem I actually have? Not a theoretical problem. A real one I’ve hit.
- What’s the community like in 2 years? Not today. Two years from now.
- Can I debug it at 3am during an incident? If I can’t understand the internals, it’s a liability.
- What’s the migration cost if it dies? Every technology eventually loses support.
If the answer to any of these is unsatisfying, I stick with what I know.
Depth as a Superpower
The engineers I admire most aren’t the ones who know every framework. They’re the ones who can look at a system and immediately understand the performance characteristics, failure modes, and operational burden.
That kind of insight comes from years of working deeply with the same tools, not from surface-level exposure to dozens of them.
The Exception
I’m not arguing for willful ignorance. I still read about new tools. I still experiment on weekends occasionally. But I no longer feel the pressure to adopt everything new.
The best technology decision is often the boring one. And there’s a lot of freedom in accepting that.