Worth doing badly
There’s a G.K. Chesterton line that goes, “If a thing is worth doing, it is worth doing badly.” The first few times I ran into it I assumed somebody had mistyped it. Surely he meant well, not badly! But it’s been rattling around in my head for a few years now and I’ve come around to thinking it might be the single most useful thing I know about getting anything finished.
Most people know the “don’t let perfect be the enemy of good” version, which is alright but I think it’s the weaker framing. It sounds like settling. You wanted the nice thing but you have to accept the less-nice thing, womp womp.
Chesterton’s phrasing is more aggressive than that. The poorly done version isn’t a compromise on the good one. It’s usually the only one on offer because the realistic alternative isn’t always a better version. Sometimes it’s nothing.
The graveyard folder
I have a folder called projects and it is mostly a cemetery. Going back through it, I noticed that almost none of them died because the idea was bad or because I lost interest in the actual problem.
They died at setup: choosing the stack, building a grid framework before a single page existed to put it on, writing a Grunt config for files I hadn’t created yet. There are repos in there whose entire git log is three commits and all three of them are just tooling. You hate to open a project that had seemed promising and then realize you only ever built the scaffolding.
Meanwhile the stuff of mine that actually exists in the world got assembled like three raccoons in a trench coat did it. The first pass at my personal site was one HTML file with inline styles and a nav I’d hardcoded in three places. The one little tool I’ve written that I use every day started as a bookmarklet, one long line of JavaScript that outlined every image on the page in red and wrote its dimensions on top.
I’m not going to pretend that was good, but it got the job done and I still find good use for it. No amount of doing it properly first would have bought me that.
And I don’t think discipline or hustle or any of that is why this works. I think it’s just information. A bad thing that exists tells you stuff, like which part people reach for, which part you got wrong, and whether the premise was off in the first place. The immaculate version still sitting in your head tells you nothing.
So every hour you spend perfecting something before it meets reality is an hour spent optimizing against a guess. Many of the abstractions I’ve lovingly built upfront turned out to be abstracting along the wrong axis entirely. How many of them did I actually need? Fewer than I built, honestly.
I know the counterargument here and it’s a good one. Tech debt is real and cutting corners early leads to bigger problems down the line. That hardcoded nav is going to come find me eventually.
Fair, and debt on code that launched is a real debt with real interest. But I’d just say two things: (1) a project that never launches isn’t debt-free, it’s the entire principal written off, and (2) base rates.
I’ve lost maybe one project to accumulated jank and I’ve lost a dozen to never properly starting. Those two failure modes are not remotely the same size, at least not for me. I think it’s worth being honest with yourself about which one is coming for you.
Do it poorly but don’t be an idiot
I keep landing on the same line, that badly is about polish and wrong is about correctness. A janky layout, an ugly file structure, and three copies of the same helper are all bad. But bad is recoverable and it’s recoverable later, by a version of you who knows more than you do right now.
A form that silently drops submissions isn’t bad, it’s wrong. Launching it doesn’t teach you anything except that you can’t trust your own site.
Outside the code editor
None of this is entirely about web development though. It’s helped me the most everywhere else.
It’s a 10 minute walk instead of the fitness program I’d have to plan first, or 15 minutes of tidying instead of the Sunday deep clean that I keep putting off. It’s cooking something mediocre on a weeknight instead of ordering out for the umpteenth time because I don’t have the energy to cook something amazing. It’s texting a friend “hey, sorry, I’ve been a mess, how are you” two weeks late instead of waiting until I can figure out how to justify the silence.
Being visibly bad at something is its own hurdle and I don’t want to breeze past it because it’s uncomfortable. You get used to being competent at your job and then you pick up a hobby and you’re just openly terrible at it in front of people who aren’t.
But again, being good at it isn’t the alternative on the table. Not doing it is. All else equal, I would rather be bad at a thing than not have the thing. It took me an embarrassingly long time to get there.
I’ve leaned on “one day at a time” more than any other version of this. It’s the same idea wearing a different outfit. Nobody’s asking you to do it well or to do it forever. Just today, and today is allowed to be ugly.
There’s an obvious failure mode here because this is a very convenient thing to believe on a day you don’t feel like working. I’ve used it that way plenty.
I think you can tell by whether the bad version is a step or a destination. If you never go back to it then you were just doing it once and lying about the sequel. That’s a different problem from doing it badly on purpose and this principle isn’t a defense for it.
But if there’s something you’ve been circling for a month, the crappy version you could make in one afternoon this weekend is better than the beautiful one in your head, mostly because it’s the only one of the two that will ever exist.