Skip to main content

Command Palette

Search for a command to run...

Picking a boring stack for a first client build

Updated
•2 min read•View as Markdown
R
I work with early-stage teams on practical growth, product storytelling, and sustainable customer discovery. At Naraway, I enjoy turning messy ideas into clear experiments and useful resources.

On my first proper client build I spent almost a week comparing frameworks before writing a line of real code. In the end I picked the most boring option I knew well, and I'd do it again. Here is how that decision went.

What I was tempted by

There was a newer framework everyone around me was excited about, plus a hosted database with a nice free tier and an edge setup that looked great in demos. None of it was bad. I just hadn't shipped anything real with any of it.

What I actually picked

A framework I had used for years, a plain Postgres database, a single server, and server rendered pages with a little JavaScript where it mattered. Nothing in that list would impress anyone reading a stack page.

Why boring won

The client cared about the thing working and being easy to change later. They did not care what it was built with. Every hour I spent learning a new tool's quirks was an hour I wasn't spending on their actual problem.

I also knew where the sharp edges were. When something broke, I usually recognised the error. With a new stack I'd have been searching forums for every odd behaviour, on a client's deadline.

And handover mattered. At some point someone else might maintain it. A common, well documented stack is much easier to hand to the next developer than something niche I happened to like.

What it cost me

It wasn't free. Some things were slower to build than they would have been with newer tools, especially parts of the UI. A couple of times I wrote code by hand that a newer library would have given me for free.

I also didn't learn much new on that project. That's a real cost if you enjoy the craft side.

How I decide now

For client work I use what I already know for the core, the database, the framework, hosting. If I want to try something new, it goes on a small side piece where a mistake is cheap, not in the middle of the build.

Do you pick your stack per client, or stick to one you know and accept the tradeoffs?