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:
- setup Talos cluster on Hetzner with Terraform
- setup few operators to make the cluster production ready
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:
- have good gameplay
- support multiple solitaire games
- 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.