This post was written for a technical audience, but its core ideas can also be applied to other fields.
There are many reasons for a software developer to work on a side project. It’s a good way to keep a pulse on technologies that are currently trending in the industry. It helps you keep your programming skills sharp. And it’s fun! Or, at least it should be.
But then there’s that thing we call “life” which can make it difficult to start a side project, let alone finish one. We’re often spending so much time trying to stay afloat in our hectic schedules that it can seem impossible to squeeze a side project in.
I started working on my first side project two years ago, so I am no expert on this matter by any means. During these past two years, I’ve made observations about how I got started on the side projects I’ve started and why I was able to finish some and not others. What follows is neither particularly groundbreaking nor an official guide to working on a side project, but merely the aforementioned observations I’ve made which you may find helpful.
Work on something that interests and excites you
I hesitate to write something that sounds so painfully obvious, but it’s very important. A side project should be something that you get excited about working on. When you wake up on Saturday and you start to go through your agenda for the day, what is your gut reaction when you consider the idea of working on your project? If your thoughts begin with the words “I should probably…”, you’re not off to a great start. If they begin with, “I get to…” or “I finally have time to…”, then that’s starting to sound a little better!
Your project should be many things. It should be fun. It should be something you look forward to working on. What it should not be is a chore. If you’re working on your project and you’re not enjoying it anymore, hit Save, get up from your keyboard, and go exercise. Play video games. Go shopping. Whatever it is you do to unwind, do it. Don’t come back until you feel ready to work on your project again, whether it takes a day, a week, or a month.
On finishing a project
The level of importance for completing a side project varies from person to person, and even from project to project. Some side projects serve as a means for experimenting with new technologies. It’s completely fine to leave those experimental projects unfinished. For the rest, however, having a goal to finish can be very beneficial. The desire to finish your project adds motivation to working on it, and it’s also a nice bonus to be able to show your work to others once you’re done.
Working on something you find exciting (point #1) is especially important for taking your project through to completion. If your project is even remotely substantial in size, you’ll be spending a great deal of time on it, and you may begin to feel fatigue from working on it after some time. The novelty of your project idea might diminish over time, and when that happens, you’ll want as much residual excitement to remain as possible.
One project at a time
While you work on your project, you may start to form other project ideas in your head and get the urge to work on them. That’s great! You can never have too many ideas. Write them down so you can work on them later, but don’t switch to another project until you’re done. Trying to work on two projects concurrently is the best way to ensure that you will complete neither. If you do switch projects, either have a concrete idea of when you’ll pick up where you left off with the original project, or acknowledge that you probably won’t finish the project.
By the way, it’s perfectly fine to end a project without finishing it. That just means that something about the project changed from the time that you started it. It might be technically infeasible. Maybe you’ve learned that your idea doesn’t make sense. Or maybe, for whatever reason, it’s just not fun anymore. Whatever it is, the important thing is to take that information and learn from it.
Find a time that works
Working a slot into your regular schedule is the best way I’ve found to sustain progress and motivation for a project. Make it a ritual. For me, it’s the first thing I do when I wake up on the weekends. I’ll go to my local coffeeshop for a couple of hours, sit and write out some code, and I’ll be done before lunch. This has worked great for me because there are very few social obligations that begin before noon. Furthermore, I’ve found that finding a reoccurring time where I work for a smaller chunk of time (one or two hours) has been more effective than finding those larger chunks of time (three to four hours).
If you’re not having fun, then there’s really no reason to be doing it. Creating something new should be fun and exciting, and when you do it right, it can be one of the best feelings in the world.