I'm lucky enough to follow a good number of people on Twitter who, unwittingly, generate great writing prompts for me. Recently, I've seen a few discussions that focus on questioning modern criteria used by software companies in their hiring policies/processes. Passion is one such criterion. Why is it that passion appears to be so highly prized in our field? Is it, perhaps, one of those bullet point criteria that doesn't actually mean much; one that we simply put on our job descriptions because it sounds good and everyone else is doing it? What does it even mean to be passionate in a software field?
The answer is 42
Of course, I don't have the ultimate answer to the questions posed above, but I do hold a few (hopefully insightful) opinions on them. Before discussing the rationale and reasoning behind passion as a criterion for software development work, we need to start by standardizing on our definitions; otherwise, I'll be discussing one thing, and people reading this could be thinking another.
When I think about passion - in the non-romantic sense, that is - I think of it as unbridled enthusiasm for a subject: in this case, software. The connotations of this software-focused definition include, but are not limited to, the desire to make the best software that you can, the desire to improve your users' lives through the use of this software, the desire to improve your and your fellow engineers' lives by making the software as painless to develop as possible, and the frustration that is felt when dealing with software that doesn't feel like it was developed with passion.
That last connotation is quite important in my mind, as it helps you to focus on what should be done by giving you counter-examples of what should not be done in software.
A passionate engineer
Given the above definition of passion, it's easy to see why companies find it a desirable quality in employees. After all, why wouldn't a company want someone who cares deeply for what they do? And doesn't everyone want to have coworkers who are just as passionate as they are about their work?
So how can we determine if someone is passionate about software? That's where things get tricky and murky and generally uncertain. One indication that someone is passionate about software is if they actively participate in open source projects on, e.g., GitHub. Another is participation on StackOverflow or StackExchange. Having personally-developed apps or games in an app store is a great indication as well.
But what if none of these is the case? What if a candidate doesn't have a GitHub or StackOverflow account? What if they have no published apps in any app store? Should that be a negative mark against their potential for employment at a software company?
I say, no. These indications are just that - indications. They provide no clear guidance either way. All they are is hints, suggestions. There are perfectly good reasons for someone to not have a public presence as described above. NDAs and non-compete clauses are just one kind of example. Spending all your energy on your day job is another. My point is, these simple measures are inadequate in determining someone's passion for software.
In order to determine whether someone is passionate about software, you have to dig. Not into their public presence, but into them. In person. By talking and getting to know them. From personal experience, I know that I wouldn't always be able to answer questions that relate to my being passionate about software during a formal interview; I tend to be somewhat terrified and mentally frozen at that stage. An informal discussion, over coffee or lunch or even beer might work better in figuring out such a complex criterion.
When someone is passionate about software, they should be able to give you examples of them going above and beyond their strict job description to improve something related to that job (in varying degrees of detail due to NDAs and such), or of helping others understand certain concepts better in the context of their job, or of them volunteering to take on a little extra (or maybe just different) work to help their team.
Not just a bullet point
Getting back to the core of this post, having passion as a criterion for hiring a software engineer can indeed make sense, given a certain definition of passion as well as a willingness to genuinely search for that passion in each candidate. However, it's very much possible for a company to simply list the passion criterion as a "me too" bullet point, or to be lazy in evaluating whether a candidate is indeed passionate about software.
To companies out there, I say, either be truthful about your desire for real passion in software development, or just remove that bullet point. And to passionate candidates, I say, remember to judge the company you're interviewing with just as critically as they should be judging you. It's easy to add such a bullet point to a job requirements document, but it's a lot harder to prove that it's genuine. Ask about it. Ask to speak to an employee whom the company considers passionate. If you have passion for software, then so should your coworkers.