Published on

On picking side-projects

5 min read - 979 words
  • avatar
    Florian Bellmann
On picking side-projects

Photo by Marcin Szefka on Unsplash

Most people have side projects going on. Could be a sports event, a foreign language to learn, a handicraft or something else. Software engineers often choose coding side projects, because it's very tempting to use programming skills for personal interests. Home automation, self-hosted servers, websites, building tools, contributing to open-source projects or other passion topics. This is great because next to following your interests and the fact that side projects are fun, they can be very beneficial for a software engineering career as they help work on the T-Shape.

Picking the right side projects is hard as we usually have more ideas than time to bring them to life. The following food for thought applies to all types of side projects.


Manage your ideas

Before we start picking a project, we need to manage our ideas first. I use an idea inbox for that. It's essentially a list of quick notes that I add to whenever I have an idea about something I could do. In the past, I realized that some ideas feel so good and important at the moment that the initial enthusiasm is present. But overall it might not be so important after all. To counterbalance the initial excitement to start working on an idea immediately, keeping it in the idea inbox for a few days can help.

Once per week, I process these ideas and might move them into my backlog, if they are worth pursuing at some point.

Picking an idea to work on

There is this great time management metaphor about small, medium and big stones that one has to fit into a glass. The only way to achieve this is by adding the big stones first and letting the medium and small ones fill the gaps later. The gist of it is that one should always do the most important tasks first.

But in reality we have simply too many big stones in the first place! They would never fit. So it becomes more important to pick the right stones.

I never do more than one or two side projects at a time. Limiting my work in progress helps me finish what I set out to do. Only by not allowing me to start anything new, I push through and drop any perfectionism to complete a previous project.

When there is some free capacity, starting with why is a good approach for picking the next idea. It's been said a million times by now, but the concept still holds.

Ask yourself:

  • What has the most benefits for your life?
  • What idea is the most fun?
  • Where can you learn the most?

Create asymmetric wins

I like to construct asymmetric wins in side projects. By that, I mean structuring the project in such a way that the potential rewards greatly outweigh the potential risks or downsides, even if the project doesn't achieve its primary goal.

When I work on this:

  • What will I be learning along the way?
  • Will I be connecting with interesting people?
  • Will I foster new relationships?
  • Will I go out of my comfort zone?

It's like why I started blogging. Even if I didn't like it anymore in, let's say a year, I improved my writing, explored different formats, thought about marketing and was exposed to new tools. That's still a win.

Avoid adding bodies to the graveyard

Like most engineers, I have a big graveyard of side projects. Started with great enthusiasm, and even put a lot of effort into them, but never finished them. Scope creep is common in corporate projects, but even more terrible in personal projects. "Ah what if I add this as well? Nice. And then I can extend it here and even connect it to this ..." and so on and so on.

Corporate projects are limited by budget and we have processes in place to prevent us from derailing too much. This is not the case for our side projects.

That's why I suggest that an iterative approach is necessary for personal projects as much as corporate ones. What is the MVP for your project? Don't try to overdo it. Maybe one or two iterations are enough for the time being. Something else might be more important in the meantime.

Having iterations:

  • Feels amazing each time that you finish one
  • Allows you to stop the project at any time and evaluate
  • Stops infinite energy drain

Another way to confine the project is to set a timebox. Committing to work on a topic for a certain amount of time and then evaluate if it's worth continuing. In any case, we need boundaries in order not to extend indefinitely.

Wrapping up

To sum it up:

  • Manage your ideas and keep an idea inbox
  • Realize that you can't do everything and pick the right projects
  • Create asymmetric wins to make every project worthwhile
  • Set boundaries to avoid scope creep and energy drain

On a personal note, in the past, I built my personal task management system, a home automation server, a website for my wife's business, a blog, a few small tools and other things. Maybe I write about the process of some of these sometime. Right now though, the main points of this post are becoming even more important to me, because of the twin babies we recently had. Personal time is restricted heavily and it is the reason I started writing about this now. I need to be even more effective with my time and energy. Keeping these principles in mind helps.

What ideas do you have? What's your scope going to be and what are you waiting for? 😉