How I decide to work on a side project
Tags: sideprojects
Published: 2020-01-04 18:52:45

# How do you choose?

Generally, I ask myself 5 things when choosing a side project.
1. Can this potentially make me money?
2. Is this going to teach me something I don’t know?
3. Is this useful to anyone?
4. How long is this going to take?
5. What does success look like?

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.

# Consulting work

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.

# Awesome tech stuff

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:
- React + Native + Hooks
- Rails 5
- Apache
- Docker
- Meteor + Mongo DB (data-driven programming)
- Web scraping (multiple languages/frameworks. Current favorite is [Puppeteer](https://github.com/puppeteer/puppeteer/))
- Trello (and project management in general)
- Bitbucket
- Sqlite3
- Vultr + Linux administration
- Google Cloud Platform (and to a lesser extent Azure)

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.

# Open Source Projects/Contributions

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.

# Passion projects

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.

# I can’t decide

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.

1. The Pokemon API is publicly accessible. Can you create a real Pokedex where I can point my phone at a picture of a Pokemon and have it come up?
2. Can you scrape Craigslist for cars in the last month ordered by users’ preference that calculates the model year by how many miles per year on the car?
3. Stretch your design skills and create a personal website from scratch that looks like something you’d want to show people.