How to Come Up With Great Side Projects
Here’s what I think: The sweet spot of finding a good side project is to look at the intersection of all these elements:
- A topic that you are really interested in
- Something that can be useful at your current job
- A technology that is hot/new at the moment and on the rise
Why?
- Since you’re going to be doing this on your free time, you’ll need all the enthusiasm you can muster to stick with it. That’s why something that you find interesting trumps all other requirements.
- If your side project revolves around something that you can use in your day to day job then you’ll enlist the amazing power of synergy: you’ll have a place where you can put what you’ve learned into practice and it will have a positive impact in your career in the short and long term.
- Likewise, if your side project revolves around a hot technology (say WebAssembly, Rust, etc) you’ll get stretched out of your comfort zone, develop a skill that will have a positive impact in your career long term, and be able to redefine your career as an expert in this new technology.
I think these items should be weighted like this:
1 > 2 > 3
That is, personal interest outweighs everything else. But this is entirely personal. It probably means that I feel like there’s lots to discover and learn about in my current field.
These are some examples of side projects that I’ve done over the years:
- I wrote a small CMS to learn ASP.NET MVC 2. I think it was my first attempt at serious web development and I learned a ton of things as a side effect: TDD, BDD, IoC, DI and ORMs.
- I barely started GymBuddy, a Windows Phone 7 app to act as a gym companion. It got me started in mobile development and I learned to make nice hi-fi mockups in PhotoShop.
- Yet another barely started game, The War of the Orbs, in Windows Phone 7. It taught me the basics of game development: the game loop, sprites, spritesheets, animations, user interaction, HUDs, etc.
- Quiz4Couples a Windows Phone app to encourage quality time with your better half. It taught me a lot about mobile development, design, user experience and the creation a product from start to finish. This was the first app that I completed and launched to the window phone store. I even made a website for it and it got great reviews. Lots of love was spread in the world thanks to this app.
- I experimented with a pseudo-intelligent personal task management system and built a proof of concept. I was trying to create a JARVIS of sorts. It taught me more about web programming, natural languages and DSLs.
- I started building yet another game, iO, this time in iOS with SpriteKit. This was a great way to learn Objective-C and to develop for the iPhone.
- I then dived into JavaScript head first with two side projects: ilPomodoro a pomodoro technique app in Knockout.js and Serenity a HTML5/JS space shooter based on the universe of Firefly for which I wrote a small game engine. Both of these projects taught me a lot about JavaScript.
And there’s more! Like the books, Earth That Was, the baby-gotchi and many others I forget or never had the chance, time or energy to write about. (By the way, so cool to look back at all these projects.)
If you look back at all these projects there’s several things in common:
- They were a ton of fun and interesting to me
- Most of them I never finished. And by finished I mean that they never became a finished, polished product. Some of them were useful in their super limited functionality but most of them were just toys. Their core goal was to teach me something in a environment free of pressure and stress. (a low stakes environment).
- I learned a ton in each and every one of them
- Most of them enhanced my job and career at the time and I managed to connect my interest with a specific work need. For instance, I developed a game to learn iOS development and Objective-C, which I then used to build and lead the development of an iOS app for my employer at the time. I also developed ilPomodoro and Serenity to get better at JavaScript and improve my front-end development skills for my company at the time that was building a SPA.
So in summary, How Do you Pick A Great Side Project? Pick something that you find interesting and that you can connect with your job and career. Then dive into it and learn tons. Apply what you learn at your job. Write about it along the way and inspire others. And who knows, your side-project may become your new job.
And here go some random tips on working on your side project:
- When starting a new side-project set an achievable goal. What do you expect to take out of this project?
- Timebox your projects to a specific period of time (a month) or a set number of hours (20h). You can focus better on something when you know it has an ending. When the time is up you can reflect on what you’ve learned and decide whether you want to continue or pursue a different project.
- Work in public, share your progress, learnings and findings. This is a great source of teachings and inspiration for others, it can unlock unexpected opportunities and it’s also great for your future self.
- Create a habit of finishing stuff. Things will get rough but if you stick to the finish you’ll reap the most rewards. Also finishing something feels great.
- If you don’t finish it, it is OK too. Be kind to yourself. The most important thing is to learn something. Perhaps you’ll learn that you were attempting too many things at once, or that you are not truly interested in a topic, or something else entirely.
The Life of A Project from the book Steal Like An Artist. Stick with it! You can do it! It'll get better!
Written by Jaime González García , dad, husband, software engineer, ux designer, amateur pixel artist, tinkerer and master of the arcane arts. You can also find him on Twitter jabbering about random stuff.