I build a lot of small things. A scorekeeper for a card game my family plays. A tracker so I stop forgetting to water my plants. A logger for counting reps that does nothing but count reps. None of them will ever have a thousand users, and that's okay.
There is a particular pleasure in software that solves one problem for one person completely. It does not need a settings panel to please everyone, because there is only one user to satisfy: me. It doesn't need to scale, it doesn't need a roadmap, it doesn't need unit testing... Because it is already finished.
Finished is a real state
We talk about software like it is always in motion, shipping new versions, always upgrading. But a tool that does its job and asks for nothing more has reached a state most products never will. It is done. The sourdough tracker on this site does not want to become a social network. It tells me whether my dough is ready. When it does that, there is nothing left to add.
Small software gets to be honest in a way big software rarely can:
- It can refuse features instead of accumulating them.
- It can be understood completely by the person who relies on it.
- It can be rewritten in an afternoon when the use case changes.
Good enough is a skill
People assume small means easy. It's often the opposite. When there is no onboarding, the thing has to explain itself by being obvious. Stripping a tool down to its single job is harder than piling features on.
But let's not pretend a small tool is harder than the big stuff. Building something a million people lean on, where a dozen people have to agree and a bad deploy wrecks someone's afternoon, is hard in a way my weekend projects will never be. That's a different kind of hard, and not something I want to do in my free time.
The skill I care about is knowing exactly how far to take something and then stopping there. Good enough isn't when I'm bored of the project, it's the point where the tool does the one thing I built it for. Recognizing that point, and trusting it, is its own craft.
Make it as simple as possible, but no simpler. The second half of that sentence is where all the work lives.
So I will keep making small things. Each one is a finished thought, a problem I had and then didn't. Strung together, they are the software I always wanted and never found: all in one place, on my terms, my data, no ads, no paywall.