I didn't major in CS, I merely took lower-division classes in it at my university. That's sufficient for a lot of jobs, at least so I'm told. But I don't have a substantial portfolio of work, and most of the companies hiring Web Developers (the area I'm looking for jobs in) ask for a link to a personal project of some sort. I've spent the past month teaching myself preliminary basics: things like how to set up a server, build a basic website using a Node framework. -- Comment on a Reddit discussion
This isn't an isolated case of an employer inquiring about personal projects. Nowadays many companies ask interview candidates for a link to a personal software project. They want to find out how passionate you are about programming because someone who really feels strongly about their craft will always want to create something beyond what they do professionally. Can you imagine a photographer who never photographs anything she isn't paid to do? Or a musician who only performs at paid gigs? Granted that software development is slightly different from music or photography, but it's not that different. Perhaps musicians don't have to deal with the kind of deadlines we have to, neither do they have to deal with midnight conference calls and knowledge that has such an insane half life. But still, a true craftsman will not be able to put down their tools the moment they walk out of the office. A personal project shows that you care to hone your craft.
But that's not all. Working on a personal project offers many benefits, but at the same time it is also taxing on our energy and work-life balance. In this article I'll discuss some more benefits of personal projects, some hindrances that make it difficult to actually work on them, and how to overcome these hindrances.
The importance of hobby software projects
Practice, experimentation, keeping up with new technologies, trying out different approaches, something to put on the resume and better job prospects. As if you didn't already know :-)
That's a lot of reasons. Enough, I hope, to make you sit up if you aren't already working on a hobby project. A friend of mine loved working on personal projects in his free time because they helped him try out different technologies to keep his skills and knowledge current. I remember him working working on an Android project (in the early days of mobile programming) to manage his household accounting. Interestingly after a few months when his company needed to build a mobile app, he was one of the few people who already knew what goes into making one. He was able to bring knowledge from his hobby project to benefit his company and himself. Working on side projects has also helped me propose technologies or libraries which no one else had heard about, at work.
Although staying current with new technologies is an important benefit of hobby projects, there is another benefit which is just as important from a practical standpoint - they can get you hired! The obvious reason being they show you are passionate about your work. But there is another less obvious reason as well. Nowadays many employers want to see some code the candidate has written. It's often difficult produce anything because many of us are bound by contracts with previous employers making it impossible to show code we have written at work. Candidates who are able to show something are the ones who have build hobby projects. Sharing code for them is as easy as emailing a link to their Github projects. It's important to note at this point that there are developers who have actually received interview calls based on their Github profiles.
Most employers won't hold it against you if you don't have any personal projects, but it will certainly work in your favor if you do.
It's one thing to say that we need to have a hobby project; it's another to actually work on building something with limited time, limited energy, personal commitments and crazy deadlines. However unless you are already heavily overworked, or unwell, or personal commitments need an unusually higher amount of time, it's possible to make it happen with a little sacrifice and some smart working.
Even though it's a cliche to work smarter instead of harder, I think we have to work hard. There's no alternate to hard work if you want to stay on top of changing technology and the job market. That's the baseline. Those who do well work smart work and hard. The question is what can be sacrificed. Health, family and leisure cannot and should not even be considered. What's left, for most people, is television, video games and commute. Those who manage to work on side projects do it when most people are popped up in front of the idiot box. Many people also work on the commute, if they are lucky enough to travel in company cabs/buses or public transport. Hard work is not about stretching yourself until you break; it's about reclaiming the time we spend on perceived leisures which neither help us relax nor help us work.
Working smart on the other hand is about being efficient. The biggest source of inefficiency is multi-tasking and not setting limits. So time-box everything with a Pomodoro to make sure that tasks don't run away with your time.
In his book, Good To Great
, Jim Collins speaks about the Hedgehog Concept
for selecting the right kind of work or business by being at the intersection of three essential answers: What are you passionate about? What can you be the best at? What can actually make you a living?. In this Smashing Magazine article
, Paul Boag speaks about a similar trinity for selecting hobby projects: combine interests; create structure; know yourself.
Combining interests means combining your natural hobbies or interests with side projects. Perhaps you are interested in Zen meditation - why not make an app for meditators? Or maybe you enjoy cycling - can you make an app or a website to solve problems faced by cycling clubs? Creating structure is far more important than you might imagine. Structure is mostly about making a schedule, sticking to it and time-boxing all tasks. Finally knowing yourself is about understanding your own skills, shortcomings and working with the flow rather than against the grain. You can read this article
for a deeper understanding of what the author means by these concepts.
I hope I have been able to convince you about the importance of side projects and how to overcome the hindrances that make it difficult to work on one. I'll discuss some project ideas next week, but I'd like to end this article with a little note of caution. As important it is to work on side projects, it is equally (or more) important to take care of work-life balance. A burned out programmer is no good to anyone. Be sure that side projects add to the joys of your life and not detract from them.