How do you hire a programmer if you’re not one yourself? Some things to look for…
1. How opinionated are they?
Ask them about a juicy programming topic (e.g. Ruby or Python?). The tone and reasoning of the answer will reveal a lot. In our recent podcast on programming, Jeff said, “When people have strong opinions about things — when they can talk at length about something — it’s a good indication that they’re passionate about it.”
2. How much do they contribute to open source projects?
Look at their contributions. Though you may not be a coder, you’ll be able to tell if there’s some code there. And the fact that somebody is contributing something is a good start. “The fact that somebody is contributing at all means they’re using the tool,” said Jamis. “It means they’re scratching an itch, like they ran into something that they thought should be improved, or ran into a bug and they fixed it themselves. That level of participation is a good discriminator.”
3. How much do they enjoy programming?
They don’t have to spend every second of their free time hacking, but you do want to see some level of passion. Jamis said, “It’s not so much that coding in your free time is the important thing so much as it is that you’re showing you’re passionate about it and that you have opinions.”
4. Do they actually ship?
Find out how they manage their work. Software often slips — find out how they avoid this. Find out when they shipped something on time and ask why that project was successful. Or find out lessons learned from a delayed project. “The ability to ship software is critical,” according to Jeremy. “How they manage the very task oriented part of actually needing to get something done and finished by a certain time.”
5. What have they mastered?
Randy Nelson of Pixar argues that mastery in anything is a really good predictor of mastering something else. So look for someone who’s mastered something. Is the candidate a great chef? Or mountain biker? Or something else? That’s a sign they can be a master on your project too. “That sense of I’m going to get to the top of that mountain separates them from all of the other candidates almost instantly,” says Nelson. “There’s very little chance that someone’s going to achieve mastery on the job if they didn’t get there before coming to your workplace.”
6. How well do they communicate?
The less you understand about programming, the more you’re going to rely on this person to translate what’s going on to you. That’s why hiring great writers, regardless of the position, is a good idea. For example, here’s Jeff explaining a Basecamp API update to the rest of the team inside the project site:
I just pushed an update to Basecamp’s People and Companies APIs.
We now allow client and firm employees to see people and companies that they have access to through projects. Prior to this update, firm and client employees could only see people using a specific project ID. There was no way for them to see all people (i.e., colleagues) that they are involved with across projects.
For example, if the API user making the request is on one project with Bob and another with Jill, /people.xml will return Bob and Jill. If the requesting user is an administrator, all people in the account will be returned.
The same is true for companies.
When programmers can both code and speak a language that non-programmers understand, things are a lot less likely to go wrong.
Test drive
If you can, get out of all-or-nothing decision mode. Bringing on a full-time employee is a big, hairy decision. Hiring someone for a mini-project they can do in their spare time is a lot easier for both sides to swallow. “Kick the Tires” in Getting Real talks about this:
Before we hire anyone we give them a small project to chew on first. We see how they handle the project, how they communicate, how they work, etc. Working with someone as they design or code a few screens will give you a ton of insight. You’ll learn pretty quickly whether or not the right vibe is there.
Scheduling can be tough for this sort of thing but even if it’s for just 20 or 40 hours, it’s better than nothing. If it’s a good or bad fit, it will be obvious. And if not, both sides save themselves a lot of trouble and risk by testing out the situation first.
It’s also a good idea to think hard about what you’re offering and how you can make your situation as attractive as possible. The sweeter the pot, the more bees will fly into it. (Hmm, pretty sure that’s not a thing right there. Anyway…) In “Great Hackers,” Paul Graham offers a list of what attracts the best programmers: good tools, open source software, rooms with doors, an interesting problem to solve, and wise coworkers. If you’ve got any/all of those, make sure to let potential hires know.
Do it yourself?
All this stuff can help, but the absolute best way to hire a programmer is to know at least a little bit about programming. Hiring for a job you’ve never done before is really hard. So is managing that person after they’re hired. Graham discusses this in his “Great Hackers” piece:
I’ve seen occasional articles about how to manage programmers. Really there should be two articles: one about what to do if you are yourself a programmer, and one about what to do if you’re not. And the second could probably be condensed into two words: give up.
The problem is not so much the day to day management. Really good hackers are practically self-managing. The problem is, if you’re not a hacker, you can’t tell who the good hackers are.
So see if you can pick up some programming skills before hiring. (As we say in REWORK: “Never hire anyone to do a job until you’ve tried to do it yourself first.”) Jason actually began learning PHP before he partnered up with DHH. Similarly, 37signals didn’t hire a sys admin until one of us had already spent time learning how to set up servers. Go this route and you get a deeper understanding of what you’re looking for in a candidate and the problem(s) you hope to solve.
As for the mistakes you’ll make along the way, keep in mind that’s how “real” programmers work too. “Running our iterations feels like a neverending series of error recoveries,” explains Jeremy. “That sounds demoralizing, but it becomes empowering. Hell, even test-driven development is a series of error recoveries. So some advice is to work this way yourself at first.”
Related: How to hire a programmer to make your ideas happen [Derek Sivers]
Michishige Kaito
on 26 Oct 10It’s also interesting from a programmer’s perspective, as to what we should be doing to appear more attractive to prospect employers.
Chris
on 26 Oct 10I really disagree with some of the points in this post.
2 – I know a good number of programmers who are well skilled and have never had anything to do with the open source community. I can see that it can be an advantage for the programmer to have the experience, but I would not disqualify a hire for this reason. 3 – I agree that a programmer should enjoy programming, but I would prefer to work with a programmer who takes part in other activities during their freetime. I have known a lot of socially awkward programmers who were hard to work with because they spend all their freetime programming and lack normal social skills.Robert
on 26 Oct 10It’s not so much that coding in your free time is the important thing so much as it is that you’re showing you’re passionate about it and that you have opinions
Robert
on 26 Oct 10Ugh, my comments got cut off.
Joe Misiti
on 26 Oct 10I agree totally agree with Robert:
1) contributing to open source is nice, but it really doesnt mean much. The best programmer I know has two kids and doesnt know what github is.
2) If your whole life is coding, your a boring person and would not be fun to work with. Another thing that attracts good programmers besides tools, doors, and open-source is cool smart colleagues. No one wants to work with a genius that lives in a cave…..
tommy
on 26 Oct 10@chris, re: 2 Try seeing it from a employeer’s perspective. Consider if you have two equal programmers except one has open source contributions and one doesn’t. With the open source programmer, you have a concrete way to see and evaluate their code. With the non-open source programmer’s, you can only guess how well their code actually is.
ML
on 26 Oct 10If your whole life is coding, your a boring person and would not be fun to work with..
Like Robert said, this isn’t about making coding your entire life. It’s about showing that you’re passionate about it when you do it as opposed to just going through the motions.
Adriaan
on 26 Oct 10I think there is a difference between a programmer and webdeveloper. If you want somebody to build a Basecamp worthy service, then you are looking for somebody who is a specialist in some field, and I think this post is about those heavy lifters.
I am a freelance webdeveloper and want to build a Basecamp one day…so I think my attempts will get through the tests…i hope not, because then I failed with my attempts ;)
Paul
on 26 Oct 10Hrrrm
I mostly agree with these, but I would add a caveat to point 1.
I’m not sure overly opinionated is good. Passion is great, but you need to watch out for anything that borders on blinkered closed mindedness. I’ve worked with people convinced that their personal obsession is the one true solution to all problems, it’s not fun for anyone.
I think showing that you know enough about a subject to have formed an opionion on it is great, but if it turns into automatic predjudice against anything else then you have a problem.
I’ve used enough programming languages and techniques over the years* to know that there is no one true way – although Ruby and Ada both do pretty well :)
[*] http://paulleader.co.uk/articles/2009/07/06/techie-stuff/2009/07/06/programming-languages-i-ve-known-and-lovedhated/Ben
on 26 Oct 10Good article, but it’s missing a key component: attitude.
I can find a programmer that has all of these traits, but if their attitude sucks, I’m not hiring them.
Walt
on 27 Oct 10Another (IMHO) strange use of the word “passion”.
I have passion for my wife. Everything else good in life I have appreciation or enthusiasm for, but not passion. “Passion” is turning into yet another MBA-Speak word that literally means nothing without context.
I always wonder about these guys who boast about their open source contributions or (lately) their stackexchange status – don’t you guys have a life? If so, how do you actually get productive work done for your employer?
This all comes from an old fart who runs a good sized (500+ servers) 24×7x365 operation. Take it for what its worth, but I think the passion word should die unless there are naked bodies involved.
Programmer.bz
on 27 Oct 10Stimulating article. After 3 decades of software development, hire the smartest person you can find, who you can get along with.
1 and 3. Opionated and Passionate – the way you use them, kind of collapse into the same thing and I agree. They have to love writing software.
2. Open source – not a requirement
3. Do the ship – good insight, and can they estimate accurately
4 and 5. Mastery and Communication – interesting. These go along with my point that they need to be really smart and you need to be able to get along with them. Really smart programmers tend to be masters at everything they take the time to do, including communicating. If a person cannot organize their thoughts with words, good chance they cannot organize them with code either.
Carey
on 27 Oct 10Walt so totally nailed it.
Scott Bressler
on 27 Oct 10I find it amusing that there is a typo in the block quote demonstrating that Jeff is supposed to be a great writer.
Amir
on 27 Oct 10@Walt..
but.. but.. what if someone codes in the nude?? :D Not me mind you [although I have been known to run night sessions without any pants :P]...
Rams
on 27 Oct 10Do be careful about judging solely based on mastery. The reason is very simple: “Competence is not fungible”.
Ole
on 27 Oct 10Someone that have the abillity to learn new stuff, so you need to ask when he last learned a new programming language or something else new. If a programmer don’t have that skill, then he will be useless over time, and believe me, not all of them have :-).
James Wallis Martin
on 27 Oct 101. I will hire open-minded over opinionated any day of the week. I want the best technology for the solution, not the one the programmer “likes the most”
2. I look at how much do they contribute to helping others on forums, rather than working on coding open source. (That works for both proprietary and open source). Help your fellow coder means you will help those in your team.
3. I think the word we are looking for is attitude rather than obsession.
4. Scope creep is inevitable in the real world, it is more important how they cope with scope creep than sticking to their guns to meet a deadline date set by a sales guy. Sticking to ship dates usually results in bad coding decisions.
5. Give me a well-rounded jack-of-all-trades (or jill-of-all-trades) who understands business needs, quality assurance, and programming over someone who purely codes.
6. I completely agree with this point. However, the most important part of communicating is being able to listen and put themselves in the shoes of the person talking.
Josh
on 27 Oct 10Re. item (4) and “Test drive”—there are websites with on-line programming tests (codility.com, codeboff.in, codechef.com). A test won’t tell you whether a candidate is a programming genius, but at least will give you some assurance that he/she is can get the basic stuff right.
Andy
on 27 Oct 10I’m a long term contract lead developer.
So you want someone who’ll bore you loudly. Try all the latest patterns they don’t understand and produce unmaintainable code. Refuse to adapt to your way of thinking. Would rather work for free than work for you.
Plus, the kicker. You want to manage someone doing a technical job with no understanding of what they’re doing.
I see some scope for problems.
I’ve never contributed to any open source project. Too busy working for money. If I was inept and couldn’t get a job, maybe I’d give open source a go.
Another Adrian
on 27 Oct 10All very well but I have come accross some real talkers, peple who could persuade even the skilled that they were The Doga Bollocks, but, in the end, turned out to be all mouth. A bigger problem is how do you manage a programmer if you are not one yourself. The answer: Hire Another Programmer!
Mekki
on 27 Oct 10Simply Ask them to show you some products of their own
Gary
on 27 Oct 10I’ve been programming for 25+ years. I currently own a software development firm that produces commercial and custom products. I’ve worked with, hired, managed and sometimes fired dozens of programmers over the years.
I’ve found that there’s no need to hire programmers any differently that one hires anyone else. The same characteristics that make any other person a good employee apply to programmers – attitude, enthusiasm, qualifications, personality fit to the group, etc. Such things matter as much for the system architect as it does for the receptionist. For God’s sake – programmers are not aliens.
And while open source contributions are one way to evaluate a person’s coding ability there are far better ways to do so. One of the best is to simply require the candidate to submit examples of his or her work; the code should use the language that they’ll be working in. That usually eliminates 1/3rd of the candidates right off by the way, as posers are unable to provide meaningful examples of their work (they’ll sometimes claim that all their code is the proprietary to their employer – if they haven’t done anything on their own, just for their own education or amusement then in my experience they’re not a viable candidate).
George
on 27 Oct 10@Walt
Going further along your tangent on the word ‘passion’...
‘Passion’ actually has a much broader meaning than its use in a sexual situation. For example, ‘The Passion of Christ’.
It’s instructive to consider another word from the same root: ‘passive’. ‘Passion’ is the opposite of ‘action’ in the sense that an ‘action’ is something you do, whereas a ‘passion’ is something that happens to you.
In a sexual situation, the passion is the feelings, emotional and physical, that just happen without any doing on your part. But, you may also be passionately angry, or passionately enthusiastic for coding.
So to say someone is a ‘passionate coder’ is to say that they can’t help themselves. They just love to code. It’s like a wave of desire that sweeps over them. There is something potentially inordinate about such a desire, but it’s a valid use of the word, nevertheless.
Alex Kashko
on 27 Oct 10Like Andy I am a long term contractor.
A simple Heuristic If someone has been a contractor for longer than about 5 years they are either (a) good or (good at talking fast). If (a) check how well they adapt to new systems, learn new technologies/languages and adapt to new ways of working. Communication skills are also important. If you hire them and it is (b) then ask them if they want to move into sales :)Open source is not a requirement and tests do not correlate too well with on the job performance.
Spare time coding: I used to do that now I have too much of a life. Instead I have written and published articles on aspects of software development via Triond, though I prefer writing about mathematics among other things
Many potential clients split the interview into two, one run by a non tech person and another, often informal, by a good techie.
From a developer point of view I find the irritation is that non-tech people think everything that can be stated in ten seconds can be solved in ten minutes, so your candidate should be able to explain the process to a suit in a way they can understand it might take a long time.
Steve Naidamast
on 27 Oct 10Hiring a programmer when you are not a technician yourself can be quite a daunting process. Here are the guidelines I have used to recommend people for hiring in various companies throughout a very long and still active career in IT. All of my recommendations have been successful…
1) Do not mistake passion on specific technologies for anything but the fact that the candidate may also be very narrow minded in their recommendations. I have seen this quite often in professional developers who land up proposing the wrong tools for the job.
Better to get a feel for how a candidate views technologies in general and their views on the current environments they work in. A good way to find out this information is to ask about the various environments they have worked in and what the advantages and disadvantages are for each.
2) Don’t waste your time in requesting candidates work on projects or extensive solutions. You will not attract the very best people in this manner as most experienced people find such a tactic as highly insulting while seeing it as free work for the company. In addition, you may be violating labor standards in your state.
3) Don’t worry too much about whether the candidate does open-source work or not. Open source is highly overrated and means nothing in terms of the quality of work performed. Most open-source projects are poorly built and more poorly documented. In addition, there is no such thing as a “free lunch”, which open-source attempts to promote and in the interim has done a lot of damage to the profession of developing source-code for a living.
The best way to find out whether a candidate is interested in his or her profession is to ask for a sample of the work they have done on their own either for their own interest, for sale, or even open-source. You may not understand source-code but you can surely tell if it is legibly written. Legibility is a key factor in understanding a candidate’s quest for quality.
4) Read up on software engineering and its standards so you can intelligently discuss project scheduling and development styles with your candidate. If your candidate promotes XP or Agile methodologies ask them to explain how they would go about implementing such a style for your project. In this, understand that planning and analysis is a vital component to a successful software project. If you get responses that appear to belittle or ignore good planning practices it is a sure bet that your project’s implementation will suffer as a result. In addition, XP and Agile programming practices are “fads”. XP was founded on a project that eventually completely failed while Agile attempts to use the standard software engineering life-cycle of “incremental development” by putting it on steroids to get work done quickly. Most such environments are as slipshod as ones that have no environmental processes.
A good review of high-quality practices can be found in Stephen McConnell’s 1996 classic, “Rapid Application Development”, which promotes high quality software engineering practices as they should be implemented for both large and small projects.
Dan
on 27 Oct 10Ugh. I see SvN is still reprinting the worst of Joel-on-Software (I like most of Joel’s stuff, but a lot of his how-to-hire writing is just an excuse to talk about how great people like Joel are).
There are many impracticalities in this list of recommendations:
1. Unless they’re mind readers, a smart candidate is going to hedge and not make himself out to be “a python guy” or “a SQL Server guy”. Questions like Ruby-or-Python should be answered with an explanation of why both can be great, ending with a firm-but-not-zealous preference for one. Unless it’s a contracting gig, that kind of flexibility will allow your reputation to be shaped by other questions (like the ones about your past experience) rather than some preconceived ideas the interviewer has about users of X.
2. Anyone who works for a medium-to-large-ish company (1000+ employees) will have to jump through many hoops to be a legit open source contributer. I work for a large software company and while many of our employees contribute to open source projects, it’s all very regulated – if I want to go contribute to some random project that is not relevant to my day job, I need permission from management and my legal team. You don’t just “scratch an itch” in corporate America. It’s annoying, and a disincentive.
3. You know what else you don’t do in corporate America? Work 40 hours a week. Every company I know of is now on a Google-style 4-6 month release cycle even if their products are not web-based or consumer-driven. They’re also running a tight ship – the economic pendulum is not on our side at the moment. All of this leads to some long hours. Assuming your family doesn’t resent you at the end of it, you might want to do something with them rather than programming for free. As they say in politics, the optics are bad.
4. I imagine that you experience great cognitive dissonance when evaulting the answers to “do they ship?” and “are they passionate about projects in their free time?”. Shipping on-time and for-profit requires many things, and while many of them are creative, some are also ugly, tedious, and non-Joel-like. When you go through all of that in order to ship something profitable, it’s hard to get it up for some random software library that ten people have downloaded on github. It’s just… kind of irrelevant.
Narud Shiro
on 27 Oct 10Hey! This isn’t a guide of ‘how to hire a programmer’. This is a guide of ‘how to catch a rarely unemployed-subvaluated-obsesive-overskilled developer that, in add, could be your link with a world totally unknown for you’.
Let be honest, how many of us would like to apply for a job (with a pay-per-hour instead an offer of association) where all this ‘gifts’ are required?
Dave
on 27 Oct 10Thanks for the great post Matt.
I think that a developers initiative to learn new things is a great means of understanding how they will deal with a fast paced environment. It also help demonstrate their ability to problem solve.
I also find asking about what they don’t like in a work environment is a great way to find out interesting things about a person. Quite often this is an open slate for the candidate to go negative, but I use it to see if our environment fits their needs. I’ve really been surprised about what this reveals, thinking that most people just go with some canned response. However, most candidates just give their honest opinion, which really helps provide the perspective we need to find a great match.
qwerty
on 27 Oct 10Proceed with caution. If I find out during an interview that you are asking me programming-related questions that you might have picked up but are not backed by real experience I’ll be a lot less interested to work for you.
I do agree, however, that there are good and bad questions to ask a programmer. I find it fair to present an algorithmic question, to discuss it, and to move to the main points of an implementation. I was once asked during a Google interview how to find the one bad process that violates a locking protocol, for example.
Martial
on 27 Oct 10I often ask about books that influenced them and/or continue to inform their practice.
Good people (i.e. smart and competant) get very involved in describing their influences. They can cite chaper and verse on how something had an impact on their lives.
Anyone who says my work influenced them had better be able to back that up with specific examples.
Anyone who makes the assumption that because I’m not a whatever (programmer, designer, climate change expert) that I won’t know what books in the field are relevant and tries to blow off the question is a jerk and we won’t get along.
Anyone who doesn’t have any books that influenced them probably sucks at the job and isn’t trying to get better.
Dave
on 27 Oct 10I am a long term verteran as it were, and in the end only one thing really matters, can they deliver. I do not care what their obsession, favorites, passion etc, what matters more than any other one thing is that they can ship working product.
That is what we get paid for
Wholesale Flea Market Products
on 28 Oct 10Though, the task seems to be a simple one but to have it implemented to perfection will be a difficult one to pull out and the only way to achieve a good and knowledgeable candidate. Also, knowing the candidate as a person would help but his knowledge about the subject and his capabilities to provide good results with efficiency is something that should be having the priority here.
David O.
on 28 Oct 10There are people who say Einstein and Newton were socially awkward. I rather work with a productive person who is socially awkward then a unproductive person who thinks the office environment should be like a sitcom.
patbob
on 28 Oct 10Test Drive? That pretty much rules out the applicants who are currently employed full-time at some other company. Not a bad idea for weeding through the unemployed who have had lots of free time to bone up on the latest buzzwords though.
Peejay
on 29 Oct 10I haven’t been a programmer for 10 years ago. I got into it orginally because I found most programers never ever considered the user. They always wanted to write the software their way. No thought for the users. I turned to write manuals for a while then when windows introduced the help and standised layouts, things improved. But I still find some accounting software like MYOB Accounts has some very basic flaws. eg. when selecting a acct number there is no option to select via the mouse, Pressing a function to pop open a window, type in the number or scroll using arrow keys is old school.
ChrisB
on 29 Oct 10I’m not an employer, but I am a programmer so I’d like to give my perspective to these discussions.
While I agree with some of the points made, I think that the article itself is some what flawed.
The IT industry, like the fashion industry, is very fad based and by that I mean it is constantly changing but not necessarily evolving. New ideas (and sometimes not so new ideas) pop up and suddenly become popular or fashionable and every company under the sun thinks this the way they should be doing things, not because it suits their needs, but because everyone else is doing it. Look for an employee that doesn’t do things just because it’s the “in” way to do it. Would be a start in finding a good developer. However, you probably wouldn’t employ someone that thought that way as that’s a little too contravercial. Free thinkers, who’d what to employ one of those?
I’ve been developing software for 20 odd years, using various different technologies and in various different languages and have a reasonably good business sense. I have never contributed to open-source and probably never would as I just don’t have the time to do so. Does that make me a bad developer then? I find that really insulting. I have a library of different projects that I have started and not always finished, simply as a means of learning/understanding a new technology or just a new way of doing things and I usually always take examples of my work to interviews. Mostly, companies that I have been interviewed by aren’t interested in this (as to be fair, this doesn’t prove I wrote the code I’m showing) and they have tests instead – this usually means they hire the person with the best memory, not the best programmer.
Do they actually ship? Well, exactly what does that mean? Again insulting – I work as part of a team and personally (except some software I have written privately) I have never shipped a piece of software in my life as such. The teams I have worked in though have, so am I supposed to take the credit for all the work? Writing good software isn’t just about the developer, there are lots of people involved and they are all part of the shipping/release process. So because I haven’t personally architected the sofware, gathered the requirements, carried out the business analysis, written the software single handedly, tested it and QA’d it and then released it, that makes me a crap developer?
We’re all opinionated – when we know something works, we’ll always try and apply it again when we can. Afterall, this is how patterns work. What you don’t want is obstinate people – people closed off to any other idea. They’re usually called managers.
As my last point I would like to mention mastery. What have I mastered? As already mentioned I’m a developer with at least 20 years experience, what have I mastered in that time? probably nothing other than adaptability. The IT industry changes too rapidly to master anything. To have mastery of something usually implies specialism – a specialism in the IT industy makes you less employable (although arguably better paid when you find work). Just to add a certain justification to that last point, I’ve seen job ads requiring: ASP.net C# Vb.net HTML CSS WCF Web Services SQL Server 2005/2008 VB6 SSIS WPF TSQL (including triggers and stored procedures) Silverlight LINQ C++
While it is possible to have some experience in all or most that shopping list, can anyone really be a master of all those different skills? If you really think you need someone that can do all of that on a day-to-day basis, then you really have no idea what you are looking for.
Sukh
on 29 Oct 10Good insight, usually learned on the job over years.
Calaelen
on 29 Oct 10Contributing to open source doesn’t feed my family…
Gaurav Sharma
on 29 Oct 10Rework was a great book, but these tabloid style blog posts are abhorrent, and you’re ruining your reputation with them.
Some of the worst programmers (and worst people) are ones with the strongest, deluded, opinions, a shared open attitude is not always the best approach (e.g. Apple iPhone), and if they can ship and communicate useful products then why on earth would they apply to work for someone who doesn’t understand their work?
It’s important for you, just as much as Microsoft, to understand that the world doesn’t revolve around you. Perhaps you should try to get the best out of people instead of bending them to your ideals.
Peter
on 29 Oct 101. How opinionated are they?
If they start to tell you how awesome Ruby is, then maybe they are passionate, but maybe they are also elitist snobs. IMO, developers should know their personal language bias is no criteria for professionally selecting one over the other.
2. How much do they contribute to open source projects?
While there is some validity in the argument, I am wondering what percentage of all developers in the world actually do contribute to OS projects. I’d say the majority doesnt. But not doing so doesnt tell anything about someone’s qualification or their mindset.
3. How much do they enjoy programming?
I have never met a developer (and I do attend conferences at least twice a year) who does not enjoy programming. In fact, if they complained, then it always was about the job environment. And again, being passionate and opinionated is not necessarily a good thing.
4. Do they actually ship?
Does anyone? Ever? In Time? Unless you are using time boxing techniques and small iterations, you are always doomed to fail to deliver in time. That’s just my experience.
5. What have they mastered?
Completely disagree. While it might be helpful to have mastered something to more easily master something else, I would never claim for myself to have mastered something. As they use to say: the fool who thinks he is wise is indeed a fool – claiming mastership for yourself is a sure road to stagnation IMO. Be modest and eager to learn more instead.
6. How well do they communicate?
The only thing I fully agree with.
steve
on 30 Oct 10it seems obvious to me that the author has never hired anyone.
the only thing in the article that was accurate was the generic “communication is key” – oh, really? the passion foolishness – passion is no substitute for competence
mastery? ^ echo the poster above… sigh
Trevor
on 30 Oct 10Jeff is an appalling writer. What on earth made you decide to chose that quote for an example? Just his English is bad enough without even considering how clearly he explains his point.
Gloops
on 31 Oct 10Well, of course, if you define a dozen qualities that you feel fit to the position, it does not mean that the candidates are bent to be the best considering each quality, but that the candidate that is nearest to the whole will have your preference. That if a candidate has one unique quality among the dozen that you evaluate, and the others have none, the candidate who has one of the qualities will have your preference.
It seems there is a debate about to which point it is a quality to be passionate by programming, maybe the point is, does it prevent the candidate to be normally involved socially speaking ? Is he able to exchange, mainly about his job but possibly not in a boring way, with co-workers, with customers, with perhaps somebody else who could be involved_?
A somewhat current question is, why did you choose this profession ? It can then be completed by another, why did you choose this position ? The drawback of an open question is that it is more difficult to provide a grid, telling if he answers this, he is good, if he answers that, he is bad. But, maybe it gives you a richer information, if you are able to receive it. Maybe, the fact you are able to receive that information in a pertinent way is an indication for the person to be engaged, that you can be a valuable employer. So, maybe we must be prepared to often hear and answer the same questions, except if somebody finds an original way to ask them.
WallMountedHDD
on 31 Oct 10I think the quote in #6 is actually a semi-bad example. It reads like someone a CIS/CS major would read in a simple book their very first semester in intro books, but not something that should be targeting people who are completely non-tech.
All in all, a decent list. I don’t fully agree with all of it. I think passion, strong opinions, a degree in at least CS if not MIS/CIS (a lot of programmers with no computer degree with disagree, but I stand by my opinion), and experience in at least a few contrasting languages is enough. They don’t need to be a Google Summer of Coder winner, master chef, and the founder of Drupal just to be a good programmer to hire.
Gemma
on 01 Nov 10I do think the point about employing programmers that can communicate well is a good point, but only if you’re hiring one programmer who you need to present at meetings or to clients.
I’ve worked in places before with larger development teams where there were only one or two programmers that had the ability to succinctly communicate technical information into simple terms. This didn’t make the rest of the team bad programmers. In fact, most of the extremely talented programmers I’ve met weren’t natural communicators. If you’re expanding your team of programmers, it’s important to see what a potential new developer has worked on before, and how those solutions could fit in with the projects that you’re planning rather than dismissing a talented person because you wouldn’t put them in front of clients.
Additionally, I felt (like many of the commenters here) the contribution to the Open Source Community was somewhat superfluous. Yes, it’s a bonus if they’ve contributed, but I’d have much more interest in a person who has always worked on paid projects as it shows their skills are in demand.
Ed Yarnold
on 01 Nov 10@Gemma It depends what you’re after.
If you’re selling software as a service, I guess that the programmers you are after are what I call ‘true programmers’, you know, the guys that do everything by the book, get genuinely excited about optimising SQL queries, spend all of their free time contributing to a Linux build and might fall in to the slightly overused programmer stereotype of “not being a good communicator”. These people will produce your software that you’re selling as a service to a high quality in hopefully a reasonable timeframe.
But in reality, a lot of people that are hiring web developers that aren’t developers themselves are hiring on behalf of a smaller firm that isn’t selling software as a service, but selling bespoke software.
In that circumstance it can be better to have a developer that doesn’t necessarily get excited by the tech they work with but can provide some degree of translation between client, project management team and the rest of the tech team?
I think of myself as falling in to the latest category. I understand and read about the tech I work with every day (and even maintain my own blog and do extra freelance work alongside my 9-5 job) but in reality I’d rather have friends and family that I spend time with than spend the remainder of my time contributing to open source projects.
Also; really; how long can someone maintain working 9-5 and then going home and sitting in front of a computer and contributing to open source projects?
I think 8 hours a day in front of a screen is bad enough. Let alone 12 or 15!
monster
on 01 Nov 10This is total BS. I can code anything you want but when I go home I like to do other things. Would it be good if I were really opinionated about Ruby when your company uses .Net? You don’t have to be a ‘geek’ to be a good programmer. People try way to hard to belong. I read articles like this that tell you to search the web for blogs, etc. Would you like me blogging all day while working for you company? Oh yeah, I’m supposed to go home and write code all night too, just to prove I’m a good programmer to prospective employers.
This discussion is closed.