views:

1237

answers:

23

I'd like to keep this objective and non-argumentative. Read below as to why this is NOT geared towards subjective answers.

An obvious thing to look for when hiring a programmer is experience and knowledge. But what if they're equal?

For instance, if you have two programmers that are both entry level with equally low experience and very basic knowledge, what are some questions that I can legally ask that might point me towards the right choice? Keeping in mind of course that subjective questions are going to be a waste since the interviewee is going to know on subjective questions what kind of response you're looking for.

+1  A: 

Ask what they hope to be doing a few years down the road, what languages they're interested in, if they program in their free time, etc.

Yes these questions are a bit subjective, but even if they have a pre-prepared answer ready, it will still give you a good starting point to learn a little bit more about the candidates.

Just because they're absolutely equal now doesn't mean they'll be absolutely equal in a few years. I'd take the programmer that shows he wants to improve his skills, that enjoys his work, and just as importantly would be a good cultural fit with the existing team of programmers.

Brandon
I like your "in a few years" statement in particular. Good advice!
Citizen
+7  A: 

You can ask them questions that relate to their ability to work within a team with other coders. You can also ask them about their development philosophy; what they consider to be the most important part of their work. You can ask them what the most influential programming book they've read is.

These are questions that aren't subjective; your interpretation of them, however, is subjective. That is, nobody's going to say that they won't work with a team if they know the job is to work with a team; however, you can make a subjective judgment as to who is the most sincere and capable based upon their answer.

McWafflestix
Personality goes a long way.
overslacked
I'm not sure things like "What's your favorite programming book" are good, since he specifically asked about entry-level programmer with little experience.
Edan Maor
You don't have to have experience to have read a few books. Most people who want to be programmers have informal experience, and have read something. If they haven't, don't hire them. Simple.
David Thornley
On the other hand, I'd skip the part about development philosophy. If they're entry-level, it's almost certainly something they read somewhere or were told or it's based on far too little experience. Of course, if they come up with a good one based on home or school work, hire them.
David Thornley
I'd think that if someone didn't read books outside of textbooks, that giving an answer of, "I haven't enjoyed any programming books and thus have no favorite," would be a perfectly fine answer to my mind.
JB King
@JBKing: if they have so little curiosity, in my consideration, it would put them far behind anyone who actually wanted to read about their chosen profession.
McWafflestix
@McWafflestix: In some places on the Earth (not all of them are USA, you know) good books are just not available or too expensive. And they become even more expensive, if you divide the useful information a professional programmer could extract from a book by its price. Does it really mean that there are no passionate programmers, in these areas?
Pavel Shved
@Pavel: I'd expect them to have access to an internet connection, if not at home, then at a library or school. I don't expect them to necessarily buy the books; it's amazing what you can get from Amazon's "search inside the book". In any event, I'd have to say that someone who came from an area where good books on coding were not available or were too expensive to afford and couldn't get the relevant information online, if that person were to (as in the original post) be of equal knowledge and experience to someone who didn't have those restrictions; I'd hire the one without the books.
McWafflestix
+11  A: 

Ask them to talk about their greatest achievement, programming wise; you will be listening out for their passion of technology, how they felt about their achievement, what it was that drove them to achieve it.

Just because they are entry-level doesn't mean they shouldn't demonstrate a passion or interest in technology. Showing a self-driven desire in technology should illustrate who will grow the quickest in your employment.

PP
The achievement will probably not be impressive, of course, but they should have done something they're at least a little proud of.
David Thornley
But it must be noted that passion may dramatically decrease due to improper treatment.
Pavel Shved
Ever watch Gordon Ramsey's Kitchen Nightmares (there are UK and US versions)? It is a foul mouth chef that marches into a failing kitchen and usually ends up telling off the chef who has become lazy when he used to be passionate about cooking. The idea is to re-light the fire that got him into cooking in the first place. If a junior doesn't have passion going into the industry what will restore him when times are tough?
PP
'Greatest achievement' is probably the best question I've seen on this yet. At any age people should be proud of at least one thing they've done :)
Citizen
+1  A: 

You could have them solve some sample puzzles for you and see how they approach your challenge, or have them create a`design. Another way would be asking them to critique some sample code and evaluate their insight on debugging, style, or additional ways to accomplish the same task that the sample code does.

rabbit
Sounds like Google :) Great suggestion.
Citizen
+2  A: 

Some good questions I can think of would be geared at figuring out if they have their passion for coding.

Ask them the million dollar beach house question. "What would you do if you were retired on the beach with a million dollars, what would you do with your free time?"

Ask them about VCS's and if they use them on small one man projects or just when they're forced too.

Ask them when they first learned how to program, was it college or was it when they were 12 messing around on their mom's hard-drive-less IBM.

If I can think of some more good ones I'll try to come back and edit them in.

Bryan McLemore
I agree. *How* someone came to be a programmer is as important as what they know.
Citizen
+4  A: 

You can ask them for their stackoverflow username. If you get one, hire that guy. If you get two, hire the one with more points. If you get none, ask about programming related sites they tend to browse.

Hiring people who are passionate about what they do is important (in my opinion of course).

tappit
If they DO have a lot of points, it could also just mean they regulary spend more time posting on stackoverflow instead of working. Also, high reputation here does NOT automagically correspond with skill.
ChristopheD
Finding out how passionate they are about software development is a great idea but let them give you some examples. Putting undue emphasis on this particular site would be ridiculous.
Joseph
@ChristopheD -- true, but if they have a lot of points, it's easier for you to research the kinds of things they claim to have expertise in. Quite valuable, IMO.
Chris Farmer
This might also be a great way to find out if they're bashful about asking questions when they should. I've asked plenty of questions that a newbie would probably know, but something I've missed by chance after years in a language.
Citizen
+4  A: 

There are a few things that come to mind:

  • Communication skills - Are both equally good at talking technical and non-technical material?

  • Personality - This is more about a cultural fit in terms of how is the rest of the team and how well will this person fit into that team. If one is much more extroverted than the other, for example.

  • Passion/stamina - Assuming the interview is an hour or more, how well do they do near the end? Is there frustration? Has their guard come down? Have they seemed to be more loose and let it all hang out rather than keep things all prim and proper?

Now these are all indirect components that while you can ask, the key is to notice other things like body language, volume of voice, tone of voice, and how prepared or unprepared did each seem. You could ask about what motivates them, why they chose this field, and what goals they have in life for other things to see what kind of answer comes out as there is more than just words that you are wanting to see.

JB King
Great list. A bit on the subjective side but important none the less :) I have known a few programmers, though, that I would easily hire but are awkward in social environments, especially interviews.
Citizen
I am awkward in interview situations. It's the type of pressure, I've not found anything like it in any other stressful situation.
Matt Ellen
While some people may be nervous, uncomfortable or putting their best foot forward, so one has to be careful to look for the trends in the interview more than the initial impression. Some people may look good until words start coming out of their mouth. :)
JB King
+2  A: 

If your company specialises in writing software for a particular industry, chose the candidate with a greater understanding of the business side of the job. It's not all about teh codez!

Antony
+13  A: 

Not all subjective answers are easy to fake. For example:

  • what's your Stack Overflow reputation? (or more simply: have you ever been to Stack Overflow?)
  • do you read any programming blogs? which ones?
  • do you do any programming at home or for fun? are you involved in any open source projects?
  • do you know anything about open source?
  • what programming books have you read recently? (If the candidate gives a blank look, implying he hasn't read any, that would be a big black mark IMHO)
  • are there any new technologies that interest you, that you would be interested in learning about?
  • what gets you excited about programming? (lack of enthusiasm and keenness is another black mark for me)
Ether
I've found asking what books candidates have read to be really telling. Sadly, expect lots of blank looks
sgargan
PP
It was a long long loooong time since I read a programming book. Heck I dont even have time to read any fiction books anymore. I do "cutting edge" programming everyday and are learning by 1) long nights studying online manuals and testing code, 2) blogs, 3) SO, 4) examples from hardware companys and so on. But not a single book in 5 years at least. So I guess Im out of luck if I would need a job. ;) (not that I think thats the case, but it seems so from this answer)
Stefan
To be honest the only book I ever read was a Linux Administration for Dummies book for red hat 5, and that was when I was 12 :) Since then, my book is the internet.
Citizen
@Citizen: kudos for being honest, but would you go to a doctor who didn't crack a medical text after finishing med school and only relied on the internet for information on new developments and ideas?
Ether
@Ether: that's not exactly a fair comparison. Information on programming is plastered all across the web and with it you can become an acceptable programmer; where as medical knowledge is in journals and books far, far more than the web.
Matt Ellen
By acceptable I mean, make working programmes. "Duct Tape" level.
Matt Ellen
Yes, you can get by as a duct tape programmer without cracking any books, but those usually aren't the people I'm interested in hiring. Even when I'm looking for junior programmers, I look for people who are capable of one day being a senior programmer.
Ether
I don't expect my plumber to go home and read plumbing books. I don't expect a chef at a 4 star restaurant to go home and read books about knives and vegetables.
Frank Farmer
@Frank Farmer: neither of those trades change as rapidly as ours do, but I still expect them to keep up with developments in the industry. I definitely expect a high-end restaurant chef to keep up to date with the latest trends, styles, and techniques. They just may not do it with books.
Ether
+1  A: 
  1. the point of subjective questions is not to find the "better" candidate. There's no "right" answer either. The point is to get to know the interviewee, which makes a lot of sense. You might be spending a lot of time with him/her, so try to find out what kind of person he or she is.
  2. If they have as little experience as you say, they'll have to spend a lot of time learning. Ask them about how they learn stuff, if they like to learn stuff, what kinds of (non-ficitional) books they've read in the last year, which (non-fictional) book they liked the most. If one of them enjoyed to read Don Knuth's collected volumes over summer and the other prefers reading books with "in 20 days" or "for dummies" in the title, you have your answer.

Other than that: good luck. Very promising candidates may turn out to be poor developers and vice versa. Hiring unexperienced people is always kind of a lottery ticket.

nikie
+3  A: 

IME what you want most from employees in this industry is that they keep wanting to learn about programming and that they never stop learning. They are passionate about it. Whether they easily learn new stuff is more important than what they already have learned. So whatever you ask should be geared towards finding out about that.

For example, you could ask what books they have just read and when. What they were playing with recently. (They're playing by writing code, right?) What code they've written and what was the motivation for this. If you already had an interview with them, you could try to find out whether they have done/play with/learned any new stuff since.

sbi
+11  A: 

Programming ability is only one of the factors you should be considering in a new recruit to your company.

General Mental Agility

Google have their notorious interview questions for exactly this reason:

http://www.gamedev.net/community/forums/topic.asp?topic%5Fid=299692

http://www.drizzle.com/~jpaint/google.html

http://www.businessinsider.com/15-google-interview-questions-that-will-make-you-feel-stupid-2009-11

Facebook has their facebook puzzles for EXACTLY this reason:

http://www.facebook.com/careers/puzzles.php

Then there are general interview questions that test the interviewee's experience, psychology & social interaction.

http://traderspsychology.blogspot.com/2007/09/50-common-interview-questions-and.html http://www.psychologytoday.com/articles/199305/the-wrong-interview-questions

Its also good to determine if an interviewee can acknowledge mistakes, and show that they can learn from them. Something I once got asked (and have subsequently asked frequently when doing interviews):

"Tell me about something that went wrong on your last project, what happened, what were the consequences and what did you do about it"

reach4thelasers
I can't find the reference right now, but I remember coming across an article recently which stated that the best predictor for a developer performance at Google was how poorly they did in their interview...
Mathias
If you find the article I would be interested to read it!
reach4thelasers
Found it - it's not quite as blunt as I initially put it, but the gist is that "one of the best indicators of success within the company was getting the worst possible score on one of your interviews." http://gawker.com/5392947/googles-broken-hiring-process
Mathias
Many of those silly interview puzzles test your ability to solve silly puzzles, not "General Mental Agility".
Frank Farmer
+4  A: 

Check their ability to reason about problems, by posing them kinds of problems they're unlikely to have solved in the past. Net of knowledge and experience, this probes a person's reasoning abilities (knowledge in the field, or experience at problem-solving, enhance such abilities, but we've posited that they're equal in those -- and if they weren't the correlation might still be a positive, esp. wrt problem-solving experience).

You can do it at very high architectural levels -- "We'd like to design a software system to let people play 'Boggles' ((many other games are also suitable! Just pick ones that you can describe briefly)) -- what functionality would we like in various components?" See if they separate user interfaces from underlying engines, allow for human-human as well as human-computer play, consider multi-user local and remove possibilities, think of optional helpers that might make the game more enjoyable without spoiling its main point [[such as timed play, challenging other players' moves, a computer arbiter to solve a challenge by checking in a large dictionary whether a sequence is indeed a valid word, and so forth]], consider the possibility of interfaces for people with disabilities, and so forth. Such open-ended, very high-level architecture problems tell you a lot about how people go about solving vague problems (are they making a lot of assumptions, or rather generating ideas and checking them with you, for example).

At the other extreme, you can do it at extremely detailed levels -- "In a factory, we keep getting large batches (a few hundreds at a time) of brass rings that are one component in a machinery the factory builds. All rings in the batch are supposed to be exactly the same weight, but unfortunately that's generally not the case -- a typical batch will have N rings all of one weight and M others that are all of a different weight. It's important to the machinery we're building that the three brass rings used in each machine are exactly the same weight as each other, so we need to sort the N+M rings in an incoming batch into the N and M groups. The brass-ring-inspection robot has a set of scales which can only tell it whether the set of rings on the left plate is heavier, lighter, or equal to the set on the right plate. Each weighing takes a fixed amount of time and we want to do our sorting ASAP. Please consider what algorithm the robot should be using to minimize the number of weighings it needs."

This kind of low-level algorithmic problem tells you a lot about a person's facility for algorithmic thinking (assuming they do have "high school algebra" enough to be fully comfortable with manipulating symbolic expressions). There are many other problems of this kind, and some can be expressed more briefly (you might consider having a printed sheet with the problem statement to ensure you avoid ambiguity &c). In some of these problems it's actually fruitful to be slightly ambiguous in the problem expression, again to distinguish candidates who just make assumptions (worst of all, those who make assumptions without even realizing they do so;-) from those who will ask for clarification of the ambiguities (which means they've spotted the ambiguity and have the right attitude -- that it's much better to take a little time but solve the true problem, rather than rapidly solve a problem that's not actually the one you need to solve!-)

Alex Martelli
+2  A: 

If both developers skills are equal. Then you are left with how well they will fit in with your team. This isn't found out by asking specific questions. This is found out by talking with and interacting with your team. There are times that we have actually went with the less qualified person form a skills standpoint because they wore better able to work with the team.

Erin
If anything I'd say how they fit in with your team is more important than skill. What's going to work in the long run, the person who's highly skilled but doesn't get on with their colleagues or the average programmer who does?
ChrisF
+3  A: 

Have them write FizzBuzz for you. This is an intentionally easy problem. They should be able to do it one a white board. If, and only if, they get that right, you may want to move on to something like implement a queue using a stack, but you can have a competent programmer who can do FizzBuzz, but can't figure out a queue using a stack. If he can't write FizzBuzz, he isn't a competent programmer.

Ask him to explain pointers to you. A poor programmer will draw a linked list and say "it has something to do with this". A decent programmer can explain pass by value vs. pass by reference (if not by name, then at least the concept).

"Why did you choose programming as a career?"

"What's a recent problem you have had while programming and how did you eventually solve it?"

Ask them to read a stack trace and tell you where they will look. The correct answer is "here where one of your methods calls a library is the most likely place to start".

Kevin Peterson
Do Java programmers need to understand pointers? Do Python programmers? You might get a blank look from someone who actually understands simple type value passing vs object references and can be really useful but doesn't know the term "pointer".
Andy Dent
I'd be reluctant to hire somebody who came out of a University and didn't understand pointers. I'd think that they were dodging the tougher courses and concepts. That may be all right for a basic code monkey, but I'd like to hire better than that.
David Thornley
@Andy: Yes, they do!
bcat
+1  A: 

I'm a bit surprised about this question. Obviously, you ask them the typical technical interview questions and puzzles about recursion, graphs, strings, algorithms, ... See CareerCup for thousands of examples. Take whoever solves the problems in a better way and knows how to communicate his solutions well.

+2  A: 

What have you programmed outside of work or school?

Doug Knesek
+1  A: 

Ask them to finish a limerick.

There once was a coder named Fred

whose designs just popped out of his head.

When his boss ...

Hire the one who panics least ;-)

Seriously, a tendency to pun and play word games is a great indicator of debugging ability and this surely counts as a creative test.

They get extra points if they can't resist contacting you within the next couple of days with a better version.

Andy Dent
Haha, how about:There was a programmer made of glass,His boss was a real pain in the...The programmer that answers either honestly or finds a technical word to fit wins.
Citizen
+1  A: 

More seriously, assuming you know in advance you are hiring entry-level coders, evaluate them based on the questions they ask - this requires you to be careful about how much you describe about the job and the company. It also depends a bit on what has been mentioned in the job advert as a required skill.

OTOH some people are really passive in interviews and need coaxing, especially juniors, so you may not get much out of this if both candidates fail to ask.

Things I would consider waiting for them to ask and give them points for asking about:

  • Any mention of version control
  • Issue tracking and project management tools (anyone who has been a serious participant in an open source project will be aware of these).
  • Training or mentoring opportunities
  • Who does testing? It may sound like they are trying to evade responsibility but a junior programmer who has at least thought about testing responsibilities is unusual in my experience.
Andy Dent
Great point. I've always preferred interviews where the interviewee contributes with questions.
Citizen
+2  A: 

The thing I look for in people is the willingness to grow and how someone approaches a problem that does not make sense.

One question I would ask is ...

What would you do if the code looks correct, tests correctly and occasionally fails in the field?

Regards

kjtl
+3  A: 

2 questions I was asked recently, thought they were really good ones.

  • Ask them why they want to work for your company, specifically. Why not (insert your competitor name). What you are looking for is not "you guys are the best, I really like your company" but to tease out the reasons why they think you're the best, or are they just BSing or desperate for a job. A good candidate will be able to explain what sets your company apart (culture? environment? work-life balance? smart developers?) because they will have done their homework.
  • Ask what other position they have applied for, whether they got an offer, and if not, why they think they did not. Did they mess up? Hopefully they will be able to reflect on the mistakes they have made in the interviews. A bad candidate will just shrug and say "uh, dunno", a good one will be able to think of points they could have improved, maybe they were too nervous, screwed up the coding question, weren't careful enough about how they answered questions, gave the wrong impression, etc.
Nice idea to cross the question about a competitor! Asking about other applications as well is a good idea.
Citizen
+1  A: 

If they are both equal you could check to see if you have the budget to hire both.

TWith2Sugars
Or interning! I think too many people offer tech "internships" that amount to nothing so people don't trust it any more.
Citizen
+1  A: 

Which is a better writer?

They might be equal, but often people vary a lot in their skills of grammar and formulation. A better writer will also be useful because they also know how to write good documentations.

henrikh