I have a hundred things I should be doing right now. My company is adding customers faster than I can count. My clients have work they need me to finish. I should be making sure my data backups work, or migrating my email away from Google.

I know, I’ll start a blog.

I could share all these interesting things I’m working on. Surely people care about that!

What I should talk about is breaking through software perfectionism and shipping! Clearly, there is no irony in delaying my other projects to start a blog about getting software done.

Where do I begin?

There are hundreds of things to do: automate deployment, tailor UI, brand graphics, content schedules, commenting systems… this will take me days to build!

Like all my projects, I ~~wanted~~ needed the perfect system. It had to be as valuable as Hanselman and as polished as Signal vs Noise. It had to represent my experience as a developer and reflect my own values. Because “if something is worth doing, it’s worth doing right”.

Right?

That idea has destroyed more projects than I care to recall. I’ve never built even one system “right”, how could I do it for everything?

What do I really need to do here? This blog isn’t the important project, it is a gateway to the important projects. It needs to get done. I need to ship and move on.

What is Minimum Viable Product (MVP) here?

That’s what I really need to do. Get it done.

Software isn’t done. It’s never done, but it can be good enough. This blog is good enough, for now. Now I’m moving forward to shipping things that matter.