Side projects - why it is important for every developer
I have met hundreds of developers. The best ones always have a side project or two that they hack away on at night. As an employer I encourage that, but I have heard that a lot of workplaces ban personal projects.
So let’s talk about why I think that side projects is a good thing, how I use them to get better and what you have to look out for.
Personal development
Development, programming (and web development in particular) is a fast-changing field where you have to learn new things once in a while. Don’t get me wrong – you certainly don’t have to try every new javascript framework or new in-the-cloud database to be a good developer. I am all for being an expert on a few things and have a basic understanding of the rest, so if you chose to focus on Django and jQuery and want to be the best on that combo - good for your. But make sure you evaluate things like Go, Dart, Less, Slim and Gulp when they pop up on your radar.
Evaluation can be very shallow, just by looking at the code examples and get an understanding of what the new tech can do. Or - if you find it interesting - make a side project of it. Rebuild one of your simpler apps in the new language/framework if you like their approach in theory.
Lab testing before human trials
There is a reason why scientist try out new medicine in a lab before they go on to human trials. Things can go wrong even if they seem good in theory.
Your employer should thank you for trying out new stuff in your personal projects. I have seen far too many live customer projects go wrong because a developer just liked the idea of testing something completely new. Sometimes everything works out with that new MongoDB-adapter, and sometimes it breaks badly – and you have no experience building real stuff with it. So try it out in a personal project before you even think about using it at work.
What is a good side project?
I like my side projects to solve real problems for me or for someone else. It can be a small ruby gem, a web app, an Android app or a widget for the latest apple watch.
Timeframe
Another thing that I like to do is give myself a timeframe. This does not work for everyone, but I need some time pressure to finish the project and make sure it does not get too big. So the first day of any given month I wrap up the old project and start a new one. That does not mean I never work on it again, but it means that the project should be usable and launched.
Side projects should be fun
Note that your side project should be fun, and this is important. Fun can be the problem itself or the new technology, but don’t start at side project that solves someone elses problem with a technology you are not really interested in.
It will feel like work, and make little to no contribution to your own development. If you need the extra cash, check with your employer if it is okay to run this project as a paid freelancing gig - or maybe sell it as work and get even more recognition from your employer as the employee who can contribute with new clients/jobs as well.
Open source it
Consider open sourcing your side project. You will learn more when your code is open for everyone to see. And no, it won’t you from making money.
What? Making money? You have my attention.
First: Side project should not be about making money. Developers generally earn enough money so they should not have to have extra work on the side. Focus on solving the problem and learn new things instead.
That said, it is cool when you get your first payment for a product you created on your own. I remember my first sale in App Store for a simple live scoring app for a local hockey team. It felt crazy that someone wanted to pay me real money for an app I made for fun.
I may write blog posts about how you can make some extra cash on your side projects in the future, but start by solving a problem that you have and it will be a lot easier to sell later.
Sometimes it does not work
See, I told you that shiny new framework maybe is not such a good idea after all. Once in a while your side project will take a lot more time than expected, or you will find it boring after a couple of weeks. That is okay. That is why it is a side project and not your day job. Throw it away and start on something else. You will have a story to tell at work on why we should not pick this option or why that library is a bad choice. Everyone will be thankful that you took the time to make a crash landing outside a project that they are involved in.
Contribute to someone else’s project
Reading code that someone else and fix bugs in it will make you learn a lot. Githubs trending repos is a good place to find repos that is moving forward right now.