Motivation for Side Projects
Posted on Saturday January 8, 2022
I'll start this article by explaining why I'm writing it - I'm the first to admit that I'm not always the most motivated individual. That means that over the course of numerous side projects over the years, I've tried a fair few approaches to try and keep myself going.
Here are some techniques and methods I've used in the past and what I still use today.
Side Project - Why?
You might be wondering why to look into a side project at all. After all, you may be spending your working days programming and you might want a break of an evening. Side projects are there to scratch the itch you can't get in your day job - that may be trying out a new language, fixing a problem that's been driving you nuts, or setting yourself a different challenge.
I spend my day looking at enterprise-level problems, so my side projects are usually something closer to home that also may involve a little bit of a motoring angle, another of my hobbies.
Choose something that you'll get a kick out of - that'll help to keep you going.
Planning
Once you have an idea, it's tempting to get started right away. I find at this point it's helpful to take a step back and break the idea down, right to its simplest form, and think about how to build that first of all - an MVP (or minimum viable product). This allows you to concentart on completing part of the project in a short time, going some way to release that serotonin that we all crave on achieving something.
To do this, I use a Kanban board and plan how that initial project is going to work. A simple board such as GitHub Issues or a Trello board will work in this circumstance - it's only for your use and allows you to work on it in shorter periods of time without losing track of your progress.
Also - never forget version control. Even when working on something in isolation, having a full history of your progress to date and sticking with the good habits you exhibit in your day job will pay dividends.
Avoid Perfection
This is something I continually struggle with, where to draw the line on getting something done vs. getting something right. The reality is that you can work at your own pace, and there is plenty of time for you to work on a feature today to get it working, and iterate on it tomorrow to make it better. You're going to make mistakes (you're only human) and you're going to think of different ways to build, don't let that get in the way of making good progress.
Shout About It
Having an auidence has a few benefits - starting from giving yourself a little bit of pressure to keep going, and building to having your first users and your first feedback. Sharing your progress and being honest about the wins and challenges you're facing will give you a great sense of accomplishment, and will in turn help to motivate others.
I'm still a great fan of Twitter and tend to use that as my platform of choice when I have something to share.
Priorities - Enjoyment over Function
Finally, and never forget - you're working on your side project because it's something you enjoy. If things are getting tough, you can take a break and come back to it later. Or, if things aren't working out at all, you can stop entirely.
You're in control, and you don't owe anyone anything here - remember to be kind to yourself first, never punish yourself for a lack fo progress or for running into challenges. Prioritise what you want to achieve and build first of all and have fun.
My Journey
Over the years I've started (and very rarely finished) may side projects - from huge aspiring ideas of products and systems that might transform an industry, all the way down to small tools that might help me in my daily life.
In each case, I've tried to follow the advice I've collected above - everything gets a GitHub repo, a project and a set of issues to work on so I know how I'm doing. I break tasks down into achieveable chunks and try and set aside time each week to work on them.
More importantly, when I can feel something isn't working for me or I'm not getting what I want out of the project, I take a step back and work on another project for a while, or take a break if I need to. Sometimes the day job can be hard enough and I'm not a position to respond positively to other pressures I can give myself.
This blog is a good example - I've worked on it on and off over the Christmas period and before, and I'm now in a position where I can start to iterate over the initial build and start to write up some articles. I concentrated on the parts I enjoy first - automating the build and release of the software, and I'm now working on the initial article ideas I had and wanted to share.
To all of you - best of luck in your side projects!