back

by fredley·3y ago·view on hn ↗
The three most important things are: simplicity, simplicity and simplicity. Things that are more simple have less ways they can break, and if they do they're easier to reason about.

Be constantly asking yourself: is this the simplest way to do this? Is there a simpler way? e.g. Do you need a database? Do you need a server at all? How far can you get without these things? On the other hand maybe you're looking at newer serverless architectures? Is it really simpler to do that than use a VPS?

Be constantly explaining to yourself why the way you're doing it is the simplest and most robust way.

3 comments
I'm going to push back (slightly).

Simplicity is great, I 100% believe avoidable complexity is the enemy of good software. Sometimes the complex solutions are complex for a reason and simple has a way of working until it doesn't. My rule is always, build things the way you know how. If that's Kubernetes and a MySQL database, that's perfect. If it's AWS Lamdba + Dynamo, as long as you can support the cost model go ahead.

At some point as a solo founder, you're going to need to bring in other people to operate the software you (and eventually your team) are building. Onboarding those people into your genius "simple" solution ends up turning into a shitty version of existing, more complex solutions that you know have to support is what tends to happen everywhere.

This is great advice.

It's fascinating how far you can get without adding things most people consider "essential".

If you just work backwards from goals and do scalability based on real numbers, you'll often get away with less than you think.

Complexity is the enemy of availability.