I'm really bad at side projects

I like side projects. Basically, my whole life is a side project after a side project after a side project. You’d think by now I must be some kind of a side project ninja, but no… I almost never finish them.

Before we dive deeper why I rarely finish my side projects, I want you to understand what a side project means to me, as you may have a different definition. It’s a project that I work consistently on for at least few days. It does not need to become public one day nor it needs to become a potential revenue stream. Oftentimes, side projects are just about learning stuff that I consider interesting.

A few weeks ago, I’ve been playing with Talos. Talos is a Linux distro designed for Kubernetes. It’s pretty secure and minimal. This project involved a few things:

It’s a perfect example of a project that does not have clearly defined boundaries. I started by just wanting to play with Talos a bit. I quickly realized that playing on my Mac is not a great idea so I’ve decided to set it up on Hetzner, which is a great cloud provider (seriously, use them) that’s not gonna cost me a fortune. It could just do that, but why not use Terraform? After all, I wanted to get to know it better since I don’t use it that often at work. Maybe even write a blog post, who knows, right?

I’ve worked on it for maybe 2-3 weeks, set up few essential operators to make the cluster ready-but-not-quite and moved on. Frankly speaking, I don’t even remember why - I was probably busy with something in real life. It’s not like this project was a total failure though, I learned a ton of stuff and played with many tools that I don’t use on a daily basis.

Here’s an older project: Solitaire site. I love playing solitaire games. They seem to be so boring to an outsider until one day I played a game and realized how great they are! For some time, I’ve been just a player, I found a site that worked for me, but as I was playing, I’ve increasingly grew frustrated with that site: why is the layout shifting to show me an ad?

Of course, I’ve developed an idea: what if I were to build an app that doesn’t have that annoying quirks and still looks great? Silly me. My mind conveniently forgot that I suck at design. What if, I thought, the framework would be powerful enough to support many solitaire games?

I’ve spent weeks building the functionality. I never really finished it, but one day I decided that the site looks really bad and at this stage I should have a better design. And that’s where problems started.

Eventally, frustrated, I moved on. One day, I said to myself.

These are just two examples of my side projects that failed in some way. I didn’t write that blog post, didn’t create a site to play with the experience that I wanted to have. With my failure rate, should I just give up?

Personally, I find working on side projects to be enjoyable process and that’s why I continue finding new projects to work on. Sure, there are frustrating parts when things don’t work as intended or I need to rework some functionality, because I realize it’s not what I thought it would be.

Why I don’t finish my side projects

Perhaps you already have an idea why I struggle to finish my side projects (if you do, please share your thoughts with me).

They key problem I’ve identified is that I want my side projects to be perfect. They need to be superior to existing solutions. This is obviously wrong. A good way is to start small, release and iterate. I don’t have that problem at work, I preach about agile approach during meetings and yet, when working on my side projects, I struggle with it.

For example, when I wanted to build my own solitaire site, I had three goals:

  1. have good gameplay
  2. support multiple solitaire games
  3. have good design

Put it that way, it’s clear I could have not succeeded. I should have limited the scope to support just one game I played the most and don’t stress too much on the design. These things can be improved later.

As a side note, I feel like I blog the right way. Granted, the thing that matters in blogs the most is the content and blogging itself is iterative: you publish one post at a time. I wanted to own the content and decided to publish on my own domain with my own theme. That’s also why this blog looks like shit. ¯\_(ツ)_/¯

Another failure on my side was that I used to announce to my friends what I was working on. I should have focused on building stuff and show them a working prototype, not a concept. Telling friends sounds great, but I feel like it gives a false sense of an accomplishment.

More recently, I’ve discovered that even when I struggle to do something and don’t feel particularly excited about working on that the next day, it’s still a good idea to force myself to work on it, even if only for 15 minutes. By the time is up, I may have come up with a plan how to solve it.