Luke Davis

In my many years of learning things like music production, programming languages, and website building, I’ve learnt an important lesson: overcomplicating your projects will kill your desire to finish them. In fact, they’ll never actually get finished because you’re tinkering with so many moving parts.

I was reminded of a great quote yesterday (via v buckenham):

Perfect is the enemy of done.

I spent a lot of my early years in music production tinkering with songs until they were just right and I had the free time so it was okay. But as I got older, had a child, and more responsibilities, I didn’t have that time to engineer sounds and compositions as much. So I had to build simpler heuristics to get music out and still enjoy what I was doing. The results weren’t as “perfect” as before but I didn’t have so many unfinished project folders.

Same kind of thing with Python and websites for me. Progressive enhancement means you have the most important stuff done in the most accessible way and build on top from there. Going straight in with JS libraries, i18n when you only write in one language, Tailwind because it feels easier, so many web components… you’re going to get overwhelmed.

My advice? Get the HTML right first, then just enough CSS to make it look good (not perfect [yet]), and then sprinkles of JS. After that, build from there (unless you need to scrap whatever SSG you’re using—honestly, I’ve been there.) For Python, don’t necessarily make everything perfectly neat and Pythonic if that takes time and energy away from building something that works.

Another great piece of advice that I follow came from a New Yorker interview with John Swartzwelder:

[…] Since writing is very hard and rewriting is comparatively easy and rather fun, I always write my scripts all the way through as fast as I can, the first day, if possible, putting in crap jokes and pattern dialogue—“Homer, I don’t want you to do that.” “Then I won’t do it.” Then the next day, when I get up, the script’s been written. It’s lousy, but it’s a script. The hard part is done. It’s like a crappy little elf has snuck into my office and badly done all my work for me, and then left with a tip of his crappy hat. All I have to do from that point on is fix it. So I’ve taken a very hard job, writing, and turned it into an easy one, rewriting, overnight. I advise all writers to do their scripts and other writing this way. And be sure to send me a small royalty every time you do it.

No one can read an unwritten script but they can read a lousy one and you can improve it afterwards. There are plenty of caveats and exceptions to this as some things need to be perfect, particularly if they affect people’s lives and the quality of them. But for silly little websites and Python apps and songs, get that stuff down and/or out and worry about enhancing them later. You’ll be surprised by how much people love seeing rough drafts. Look at all the Cyberpunk 2077 enjoyers over the years.

Filed under: creativity | music | Python | the Internet
Adapt or die? Why only two options? This is how I blog in 2025