Picking a tech stack your future team can actually maintain
The newest framework isn't always the right call, and neither is the safest, most boring one by default. Picking a tech stack gets treated like a technical decision, but it's really a hiring, maintenance, and longevity decision wearing a technical costume. The code you write today has to be understood and extended by people who aren't in the room yet — and that constraint matters more than almost anything else in the choice.
Here are the questions worth asking before committing to a stack, in the order we actually ask them.
1. Who will be available to maintain this in two years?
A framework or language can be excellent on every technical axis and still be a poor choice if it has a small, shrinking developer pool. Hiring for a niche or declining technology takes longer, costs more, and narrows your options when someone eventually leaves the team — which, over a two-to-three-year horizon, someone always does.
This doesn't mean always picking whatever's most popular. It means being honest about where a technology sits on its adoption curve. Something on the way up, with growing community size and improving tooling, is a reasonable bet even if it's less mature than the alternatives. Something on the way down, no matter how well it served its early adopters, is a bet against your own future hiring pool.
2. How much of this problem has already been solved by someone else?
Every stack decision has a "build vs. use existing" dimension baked into it. Choosing a mainstream framework with a mature ecosystem means most of the infrastructure problems you'll hit — authentication, file uploads, background jobs, payment integration — already have well-tested, widely-used solutions. Choosing something newer or more niche often means building more of that infrastructure yourself, which is a real cost even when the core framework itself is excellent.
The honest question isn't "which technology is best" in the abstract. It's "which technology has already solved the most of the boring 80% of my problem, so my team's time goes toward the 20% that's actually specific to my product."
3. What does debugging look like at 2am?
This sounds dramatic, but it's a genuinely useful filter. When something breaks in production and it's urgent, how easy is it to find the answer? Mainstream stacks have enormous searchable histories of other people's problems — Stack Overflow threads, GitHub issues, documentation examples — covering nearly every error message you'll encounter. Newer or more obscure technologies mean you're more often the first person to hit a specific issue, with no existing trail to follow, at the worst possible time to be doing original research.
This is a real cost, and it's one that's easy to discount when evaluating a technology in a calm planning meeting, and very hard to discount when you're actually the one debugging an outage at 2am.
4. Does the team you have (or plan to hire) already know it?
Choosing a technology nobody on the team has used before adds a learning curve on top of every other cost. Sometimes that's worth it — the technology solves a problem well enough that the learning investment pays for itself. But it should be a deliberate trade a team is making with eyes open, not a decision driven by what's currently trending in developer conversations, unrelated to what the team already knows how to build with efficiently.
The practical version of this question: if we hire three engineers next year, how easy will it be to find people who already know this stack, versus how much onboarding time will it take even for strong engineers who don't?
5. What's the actual cost of being wrong?
Not every stack decision carries the same risk if it turns out to be a poor fit. Your choice of frontend framework is comparatively reversible — painful to migrate, but doable incrementally, screen by screen, over time. Your choice of database, core language for business logic, or hosting platform is much more deeply embedded and far more expensive to unwind. Spend more diligence on the decisions that are hard to reverse, and don't over-invest analysis time in the ones that aren't.
The trap of choosing for the interesting problem, not the actual one
A specific failure mode worth naming directly: teams sometimes pick a more exotic or interesting technology because it's more engaging to work with, not because it's actually the better fit for the product. This is an understandable instinct — engineers like interesting problems — but it optimizes for the wrong thing. The stack should be chosen for what it does for the product and the team over the next several years, not for what makes the next few months more fun to build.
This doesn't mean always picking the boring choice either. Sometimes the newer technology genuinely is the better fit, and using something proven purely out of caution is its own mistake. The point isn't "always be conservative." It's "be honest about which motivation is actually driving the decision."
The actual heuristic
Pick the most mainstream, well-supported technology that can genuinely do what your product needs — and only reach past that when there's a concrete, specific reason the mainstream option falls short, not a vague sense that something newer would be more impressive. Boring, well-documented, and widely known beats interesting almost every time, for a product that needs to survive contact with a growing team, a changing roadmap, and the person who inherits this codebase after you've moved on to something else.
*Choosing a stack for a new product and want a second opinion before you commit? [Book a call](#) — it's a much cheaper conversation to have before the first line of code.*
Let's Talk
Have a project in mind already?
Skip the waiting room — let's talk about what you're building.
