Grant Ammons

I blog about engineering leadership, software design, and side projects.

The life-changing benefits of side projects

I am an avid side project-er. At any point in time I always have at least one “thing” going on in the background that feeds my appetite for playing with new tech and learning new stuff.

Side projects can be liberating and super fun. They are great for your career overall and could lead to great opportunities. These side projects have had an amazing effect on my career, and they can help yours immensely as well!

Some of the many benefits of side projects

You learn a ton. There is no shortage of new tech, new languages, new paradigms and techniques that you need to learn and master. Side projects give you a pressure-free environment in which to learn on your own time, in your own way.

They are fun. Work is work. There’s commitments, obligations, shit tasks, server downtime, etc. There’s pressure to ship stuff. You’re not working on stuff that makes your socks go up and down all the time.

Side projects are like being a kid again, playing with Legos in your room. There is no pressure. You are free to enjoy using cool new tech, just for the fun of it. If it stops being fun, you can simply just walk away and try something else. That’s the power of it all.

They are amazing for your career. Side projects can be a great resume booster. If I see a developer with a ton of stuff in their Github portfolio, to me that’s a sign of a developer who cares about furthering their craft. The projects don’t have to be complete. They can be little scraps of experiments or ideas. My Github portfolio is littered with all sorts of crazy crap that I’ve poked at over the years.

If you’re an astute side-project-r, you will find yourself continually reaching off your shelf of built-up knowledge to help further along your company’s and team’s goals. You’ll get more recognition, responsibility, and, of course, more money. You’ll be regarded by your team as the Resident Expert. You’ll likely be promoted faster and have more opportunities down the line.

Side project-ing regularly will do wonders for your career.

They give you something to talk about. Armed with your newfound knowledge, you’re in a great spot to promote yourself by speaking, blogging, and generally disseminating your knowledge. If your project has picked up steam, then by all means talk about your project!

You’ll get a great network. If you choose to side project by joining an open source project, you’ll be working with other like-minded side-projectors like yourself. If you contribute regularly, don’t be surprised if one of them offers you a job! Likewise, if you need help or just need to bounce ideas off someone, you’ll have a great network of people to do so.

This all sounds completely fantastic! How the hell do I start?

The biggest hurdle to starting a side project is carving out some time, being consistent, and having just the smallest amount of discipline. But hear me out! It’s not too bad. It gets so much easier as your project picks up steam.

Get a good general idea. If you’re like me, you probably have a bunch of little ideas in the back of your head of things that you’d love to see exist. I’ve always kicked around the idea of creating a task management system that suits my needs. I was continually bouncing around between Wunderlist, Omnifocus, Todoist, etc, but never felt fully at home in any of them.

Don’t focus on releasing something. Of course, it’s absurd to think that I should re-invent the wheel and create Yet Another Todolist app. But what if I used it as an opportunity to learn Go, React, and Flux, and didn’t really care or focus too much on a releasable product? I flipped the overall goal from releasing something to learning and having fun. And just like that, working on yet another todolist app made a lot of sense.

Pick a consistent time. For me it’s generally between 5:30AM and 9AM on Saturdays, and 5:30 to about 7ish on weekdays. I’m generally a morning person and I chose times that don’t conflict with a household that has 2 small kids, 2 dogs, and is generally a zoo when everyone’s up.

Tomato time, yo. During my Special Time, I try to get in 3–4 Pomodoros, each focusing on a single, small goal. For Example — “Start implementing a priority system in todolist and see how far I get.” Pomodoros are awesome because they encourage you to stay completely focused for 25 minutes. It’s a complete mind hack. It feels like cheating if you tab over to twitter or check your mail. When it’s a game, your brain tends to stay focused until the timer rings.

Be real. If you side project a lot, most of your projects will not actually become anything. By “anything” I mean something that others use, whether they pay money to you or not. But again, that’s not the point. I made a roguelike game engine using Typescript. My goal was not “I am totally going to release a typescript roguelike game engine”. Instead it was “I am going to see what all this Typescript hype is all about and make a roguelike game engine to try it out”.

That’s not to say that you shouldn’t aim for the stars sometimes. I did just that when I decided to start writing my own fer realz Roguelike game called Banhammer. However, it’s still sitting on the shelf, and I feel bad about that. I don’t like feeling bad about not shipping side projects, which is why I think a shipping goal should not supplant the learning goal.

Learning is the primary goal. Shipping something is the next goal.

Don’t even think about monetization or passive income. Sure, this can always be an eventual goal. But remember, focus on learning when you’re starting out, and just getting something started. Monetization or passive income is step 5 or 6, not step 1.

Case study: Ngrok

I recently listened to the latest Changelog podcast where they interviewed Alan Shreve, the creator of ngrok. He mentioned that ngrok started out as a means to learn the Go language. Alan followed a great pattern:

  1. Alan wanted to learn Go. He decided to implement an existing project, localtunnel, using Go. Goal: Learn Go.
  2. He released ngrok and won the hearts and minds of developers everywhere. Goal: Release a cool open source project and see if there is adoption.
  3. He turned the next iteration of ngrok into a paid product. Goal: Make money.

So get out there and side project!

Duck Dynasty can wait. Spend 30 minutes today doing something that will further yourself and your career. Crush some Rails bugs. Learn React and Redux by re-creating 2048. Write a choose-your-own-adventure game in Go. It’s all about finding a little bit of discipline and motivation, and it will work wonders for your future self.