Earlier today, Alex Payne blogged about side projects, which prompted me to write down my own thoughts on this matter, as I had been planning a blog post on this subject for a while. Alex states some of the benefits of having a side project, such as keeping you learning, dealing with different types of problems than during the day job, having fun, making new friends, and potentially even being profitable (all of which I completely agree with). Alex also mentions that side projects are a way of showing that you care and that they ask candidates about this in their job interviews at Twitter.
I tend to ask the same question when interviewing engineering candidates, and it’s definitely a big plus when a candidate starts to excitedly talk about a side project they’re working on. However, I would tend to generalize this a bit further. Ultimately, I am looking for a strong sign of passion, but there are several equally relevant things that a developer might be passionate about:
- Coding, which might manifest itself in a side project (either a project of their own, or contributing to another project, perhaps open source).
- Technology. Perhaps they like to examine the latest web or desktop application frameworks, testing tools, or programming languages. They might not be working on a concrete project in their spare time, but they clearly like to follow what’s going on in the software development arena. They probably get their actual coding fix at work, but being aware of the technologies out there will broaden their horizon and help them in making informed decisions.
- Software Engineering, i.e. things like best practices, process (such as Agile Development), or design patterns. They might not be interested in working on an actual spare time project (or lacking the time to do so due to family obligations), but they love to keep up with the software engineering discipline by reading books and blogs, discussing these subjects with their peers, etc.
- A Domain relevant to the job. For example, my previous job was at a mobile games company, and being able to convey passion (and ideally knowledge) about either the mobile industry or gaming was definitely an advantage.
Personally, I tend to go through phases. I always have ideas about various potential projects, and I maintain a personal wiki that allows me to capture and flesh out these ideas at any time. Sometimes an idea from this list seems exciting enough (either immediately or after maturing for a while) that I start playing with it by writing some code, although admittedly very few of these projects end up seeing the light of day. At other times, I spend more time exploring various tools and frameworks, or perhaps learning a new programming language. Granted, this is often triggered by a concrete project, but I often end up embarking on a mission to try out various new web or desktop frameworks, etc., and the concrete project gets left by the wayside for a while. Yet other times (for example during times in the past were I had very little spare time due to a long commute and a newborn daughter) I have spent very little time in front of the computer and a lot of time reading software engineering books instead. But a domain that I can relate to and get excited about is generally something I look for in all my jobs. Life is too short to work on boring applications…
It can be difficult during the short time frame of an interview or even a phone screen, but it’s worth trying to figure out what makes a candidate tick. An actual side project is a huge plus in my opinion. If they don’t have a side project (or at least a good idea for a spare time project that they would work on if they had the time), and they don’t manage to convey any enthusiasm for technology or the domain of the position they’re interviewing for, that’s definitely a big red flag. I am always surprised when I come across such a candidate, but it happens way more often than I would expect…