Stack choice gets treated as a taste question. Pick the language you love, the framework that excites you, the database the cool teams use. That framing works when someone else is running the thing in production. When you are the only operator, stack choice becomes an operations question, and the criteria change.
Choosing a stack for a product you will run yourself, with no team, at revenue that starts at zero, means naming the criteria that matter when you are the one who gets paged. The goal is not to talk you out of any specific technology.
The criterion that reorders everything
When a team runs a product, you can afford a stack that is optimal for one dimension and acceptable on others. One person optimizes for developer experience, another for query performance, another for deploy ergonomics. When you are solo, you are all of those people, and the dimension that dominates is the one you cannot delegate: operational burden at low revenue.
Operational burden is the cost to keep the thing running when nothing interesting is happening. It is the upgrades, the CVE patches, the certificate renewals, the disk space alerts, the version-mismatch debugging at the hour you did not plan to be working. A stack with high operational burden is survivable when revenue funds a team. It is fatal when revenue is zero and you are the team.
So the first question is not "what is the best tool for this job." It is "what can I keep running, alone, for a year, without it becoming a second job."
What boring tech actually buys you
Boring tech - the tools with years of production wear, large communities, and known failure modes - gets dismissed as unambitious. For a solo builder, it is the cheapest insurance you can buy.
Known failure modes mean known fixes. When Postgres throws an error on a Sunday morning, the message has been seen a million times and the fix is one search away. When the clever database you picked has the same problem, you are reading its source code on a holiday weekend. Boring tech keeps your worst-hour work on your product's bugs, not your infrastructure's bugs.
Large communities mean cheap answers. A stack with a big community has answered your question already, in a post dated three years ago, with a working snippet. A niche stack has a Discord where you wait. As a solo operator, time-to-fix is the metric that matters, and boring tech minimizes it.
Stable interfaces mean upgrades that do not consume weekends. The boring stack changes slowly. The clever stack changes fast, and each change is a weekend you spend migrating instead of building. Over a year, that adds up to weeks you do not get back.
The hidden cost of the clever stack
The clever stack has real upsides, and pretending it does not is dishonest. It can be faster to develop in, more fun, and a better fit for certain problem shapes. The costs that get quiet are the ones that hit solo operators specifically.
You become the world expert on your stack. That sounds like a compliment. In practice it means there is nobody to ask. Every weird behavior, every edge case, every performance mystery is yours to diagnose. A team can absorb that. A solo operator cannot, and the cost shows up as time, not as money.
Hiring help later gets harder. If your product grows and you want to bring on a contractor, the pool of people who know a popular stack is large and cheap. The pool who know your niche stack is small and expensive. The stack you pick at zero revenue shapes the cost of every future hire.
Tooling drifts out from under you. Niche stacks move fast. By the time you have a product, the framework has a new major version, the deployment story has changed, and the docs you learned from are outdated. Boring tech also moves, but slower, and the migration paths are usually documented by someone who already did it.
A test you can run before you commit
Before you commit to a stack, run this test. It takes an afternoon and it tells you more than any benchmark.
Build the smallest possible version of your product's hardest part, in the stack you are considering. Deploy it to a cheap VPS. Set up TLS, a database, and one background job. Then walk away for a week. Come back and answer four questions:
- Is it still running?
- How long did it take you to remember how to deploy an update?
- When you broke something on purpose, how long did the fix take?
- Could you explain the failure modes to a stranger in one paragraph?
If the answer to any of those is "too long" or "no," you have learned something the benchmark would not have told you. The stack might still be the right choice, but now you know the operational cost you are signing up for.
What this post does not do
It does not name the stack you should pick, because the right answer depends on what you already know. The best boring stack is the one you already have muscle memory for. A stack you know is cheaper to operate than a stack you have to learn, even if the new one is technically simpler. If you have shipped in Go, ship in Go. If you have shipped in Node, ship in Node. The boring-stack advantage compounds when it is also the stack you do not have to learn at the same time you are building a product.
It also does not apply to teams. A two-person team can absorb more operational burden than one, and a five-person team can run a clever stack sustainably. The criteria here are the solo criteria. If you have a co-founder, the math changes.
Where this applies
This is about the server-side stack. Frontend and mobile choices have their own criteria, and they interact with hiring and maintenance differently. The solo operations argument applies most cleanly to the parts you run on a server and have to keep alive. If your product is a mobile app with a thin backend, the backend is where this test matters most.
Pick the boring stack you already know. Boring tech buys you known failure modes, cheap fixes, and slow drift. The cost of learning a new stack and operating it at the same time is what sinks solo projects. For the operations playbook that keeps that backend running, Deploy & Ship walks through Docker, VPS, TLS, and the production checklist.
Field reports
Log in to submit a field report.
Loading reports…