A Renewed Focus on Shipping

Opinion Software Development

I have had more ideas than I can count. A notes folder full of app concepts, half-baked prototypes in forgotten repos, domain names I bought in a fit of optimism at 2am. Over a decade of this. Life gets in the way. Work gets in the way. Kids, mortgages, health, relationships, fatigue. The ideas pile up and the backlog grows.

If you look at my GitHub, you might think I ship a lot. Nearly 200 repositories. Aurelia plugins, blockchain games, CLI tools, a regex battle game, apps for finance tracking and tattoo previews and bedtime stories. From the outside it probably looks prolific. But I know what is missing. The projects that never left my head. The code that never got written. The things I talked about for years and never touched.

This is not a guilt trip. I am not interested in hustle culture or the idea that every waking hour should be monetised. Rest matters. Family matters. Sanity matters. But there is a difference between deliberate rest and just letting things slide because it feels easier.

The golden era excuse

We are living in the best time to build software that has ever existed. The tooling is absurd. AI can scaffold an app in minutes. Deployment platforms handle infrastructure for free or close to it. Design systems and component libraries mean you do not need to be a designer to ship something that looks decent. Serverless, edge functions, generous free tiers, open source everything. The barriers that used to exist are mostly gone.

So what is the excuse? There is not one. Not a good one anyway.

I do not want to start churning out slop. The world has enough half-finished apps and rushed MVPs that nobody asked for. Quality still matters. But I have been using quality as a shield to avoid shipping at all. Perfectionism dressed up as standards.

The truth is that most ideas do not need to be perfect. They need to exist. You learn more from shipping a flawed v1 than from polishing a concept that never leaves your notes app. Users will tell you what matters. The market will tell you if you are solving a real problem. You cannot get that feedback from a Notion page.

What changes this year

I am committing to shipping more. Not more slop, but more finished things. Small, scoped, real. An app that solves one problem. A tool that scratches an itch. A game that makes me laugh. The bar is not perfection. The bar is done.

This means saying no to scope creep before it starts. It means picking the boring tech that lets me move fast instead of the interesting tech that teaches me something new but doubles the timeline. It means setting deadlines and treating them like client work even when the only client is me.

It also means being honest about what I will not ship. Some ideas are bad. Some are good but not for me. Some would take years to build properly and I do not have years to give them. Letting go of those is not failure. It is triage.

The cost of not shipping

Ideas that stay in your head do not compound. They do not attract users or collaborators or feedback. They do not build your reputation or your skills or your portfolio. They just sit there, taking up mental space, making you feel vaguely guilty every time you remember them.

I have mass in the market. Apps that exist, open source code that people use, writing that gets read. But I also have a graveyard of things that could have been something and never got the chance. The cost is not just opportunity. It is the slow erosion of belief that you can finish things at all.

Shipping is a muscle

The more you ship, the easier it gets. You learn to scope. You learn to cut. You learn to recognise the point where more polish is just procrastination. You build a habit of finishing and that habit carries over to everything else.

I have let that muscle atrophy a bit. Time to train it again.

Here is to 2026. Less planning, more shipping. Less perfection, more done. Less someday, more today.