Building Products That Last

January 15, 2025

Over the past decade, I’ve had the privilege of building and shipping a wide range of software products. Some took off immediately. Others needed patience and iteration. A few didn’t make it at all.

Through all of that, I’ve developed a set of principles that guide how I think about product development. They’re not revolutionary — most of them are common sense once you’ve lived through enough launches — but they’re worth writing down.

Start with the problem, not the solution

It’s tempting to fall in love with a technology or a clever architecture. But the products that last are the ones that solve real problems for real people. Every feature, every technical decision, should trace back to a user need.

Ship early, learn fast

Perfection is the enemy of progress. The best feedback comes from real users interacting with real software. Get something in front of people as quickly as you can, then iterate based on what you learn.

Simplicity scales

Complex systems are fragile. Simple systems are resilient. When you’re tempted to add another layer of abstraction, ask yourself: does this make the product better for the user, or just more interesting for the engineer?

Invest in foundations

Good infrastructure, clean code, and solid testing aren’t glamorous, but they’re what allow you to move fast over months and years. Technical debt compounds faster than you think.