The build-it-yourself disease

Published on Sunday, 28. June 2020

Learning to program opened many worlds for me. If I don't like the solutions to a problem I have, I can simply build my own. For example, instead of spending time researching and trying different Pomodoro timers, I took a couple of minutes to write a script for this myself. Naturally, this line of thinking extends to bigger project ideas.

I don't like the interface of WordPress? Build a custom static site generator.

I want to experiment with ways to structure my writing? Build my own text editor.

Using hey.com for email? It's perfect, but I'd like to run an email service on my server. Build it myself.

If I ever pick up music again, the desire to build my own recording software will be a constant companion.

All of these projects might be worth spending time on. Building software is fun, and I would learn a lot by building the tools above. Unfortunately, if you want to do a software project right, it most likely will take longer than originally anticipated. There will be some aspects of the problem that are harder than originally estimated. Some experiments will lead you in a totally different direction. There's also no finish line. You can always build more features. Furthermore, expecting, that writing an email client will be easy because you learned about SMTP in university means you are setting yourself up for failure. Therefore, "this will be fun" shouldn't be the standard to start a project. You should also think about what you want to achieve with it in the bigger picture.

I, for example, want to become a better writer. I believe that building my own text editor would force me to think about writing from another perspective and would enable me to experiment with workflows in a different way. For example, I often skip writing an excerpt or brainstorming a better title, and in building my own editor, I could enforce these steps. On the other hand, developing an email service won't help me in this goal, and would, in the end, be only a distraction. I have many such project ideas. They all sound like fun and some of them creep in a bit more subtle than others.

One of my current goals is to write one blog post per week. To enforce this goal, I use Beeminder, a habit tracker that charges you for habits you set out to do but don't. Then I use a Zapier to connect it to my blog. Once I set them up (which took about one hour), I didn't have to log into these services again. But, having the build-it-yourself disease, I'm inclined to create a solution for this myself. I don't want to use two different services for this, would love to have a version I can run on my webserver. Wouldn't building this tool be worth it to remove these unwanted dependencies? The short answer is, obviously, no.

It's not that removing unwanted dependencies is a perfectly good reason to build something yourself. It is. But for this setup, it's not worth the effort. I already accomplished the goal I wanted to accomplish. Building it myself wouldn't have any functional upsides but would keep me from spending my time with writing. This means, building something for this would run counter to my goal. There are many similar examples I could mention, even for much smaller problems. Once, I wrote a python script to keep track of the points in a rocket league tournament for three people. This task can be done just as well with a piece of paper. And in the end, we didn't even use this script. Nowadays, when I come up with a project idea, I ask myself, if I only want to do it because it would be fun. If the answer to this is yes, I don't follow up on it.