Generally, I ask myself 5 things when choosing a side project.
The general theme here is, “Am I wasting my time?” Human life is finite and your productive years are even less. Your time and attention are the 2 greatest commodities you have as an average person. Spending them wisely on things that help you grow and improve your life should be the goal of picking your side project. As your priorities change (buying a house, raising a family, affording that lux apartment) so do your criteria of what constitutes a good use of time.
I consider consulting work side projects since I work a full-time job. So consulting would have to be done on the side. Before I start this though I want to know it’s something I can complete in a reasonable amount of time, or if it’s a project with no clear end date is the workload light enough that I can fit it in my normal life without disrupting things too much.
This is my favorite reason for a side project as it has not only let me play with new technologies that I would otherwise have no reason to but experimenting with something unfamiliar gives me a broader perspective on what good programming looks like and what tools are out there to solve problems.
Things I’ve learned on the side include:
The main thing you want to come out of a technical project is, “What makes this technology interesting and how can I incorporate its learnings into the code I write today?” For instance, writing Rails code taught me the power of convention, working with Sqlite3 makes me rethink how I architect small projects that run on a single server, and React was immediately useful to me when our company chose to move over. I was suddenly in a position where I could take the lead on how our components were structured and the patterns/libraries that were implemented.
When I am using OSS I often want to make a contribution that adds a certain feature or browse their issue list to see if there’s something small I can knock out. To me, this is a great reason to invest some time helping to make the code you use better. It usually won’t make you money, but it’s immediately useful. The people that create these libraries usually also have a second job. So let’s all throw on our solidarity hats and solve problems together.
These are the bane of side projects as they violate 3 of my 5 criteria right off the bat. Who knows if this thing will ever make money? Who knows if this thing will ever be useful? I haven’t even figured out the target audience yet. Success looks like not spending another 6 months typing away trying to figure out a user interaction that testers don’t hate. GLAR. I have spent months of my life on passion projects that never see the light of day because they never reach the level where I want to put them in the world with my name attached.
So you have a bunch of side projects you are looking at but you can’t decide which one to do, or you don’t have ideas but you want to do something. The trick here is to just start doing something. Getting in a routine where you open your laptop and start typing will reinforce this behavior and make it easier to start tomorrow. Abandoned side projects are a meme at this point. So don’t feel bad for tabeling something for later (or more realistically never). If you are stuck here are some ideas to jog your creativity.