Developer Interview Questions: Testing Attention to Detail

In Personality Traits of the Best Software Developers we looked at four key personality traits of the best corporate software developers.

One of the comments, posted by Paul Norrie, raised an important question about interviewing: How can we test for attention to detail?

Attention to Detail
Someone who pays attention to detail stands less of a chance of forgetting to check their code into source control, checking their code into the wrong place, misspelling method, variable, or column names, having poor quality or missing comments, etc…

Here are a few interview questions to get you off in the right direction, realizing you should ask multiple of this type to avoid false negatives:

  • Data Model – Provide a simple, two table data model with two column names spelled slightly differently (e.g., UserKey and UsrKey). Ask the candidate to write an inner join using the misspelled column. Most candidates will notice right away that something is wrong, but if they write the query and match the spellings to the data model you have to give them the benefit of the doubt and assume they didn’t want to offend you by pointing out a mistake. If they write the entire query and spell both columns the same (UserKey and UserKey), you have a problem.

  • Paper Form – Give the candidate a very brief paper form asking for their contact information, but instead of asking for their current address ask only for their previous address. The candidate should raise a question about this. If they don’t, ask them if the address they wrote down is their current or previous address.
  • Scenario – Give the candidate a scenario: you’re developing software at an enterprise software shop. You have all the standard tools: an IDE, database, source control, unit testing suite and bug tracker. Ask the candidate to provide every step in the process of creating a “Hello World!” application and getting it into QA. Note: There are no right or wrong answers to this question, but some commonly missed steps are: checking the code into source control, labeling the code, creating and checking in unit tests, emailing the appropriate person in QA or Change Management to move the code to QA, checking compiled assemblies into source control (some companies don’t perform this step), and creating and checking in documentation (some companies don’t perform this step – try not to work at those companies).
  • Comments – Provide the candidate with a non-trivial function and ask them to write a comment block describing what it does. If at all possible give the candidate a laptop or workstation so they don’t have to write longhand on paper. Misspellings are not the issue here – a succinct, informative description is key. If their comment describes the method line by line that should raise a red flag. A C# sample method I’ve used in the past is:

private void X(Control parent)
{
Label lbl;

foreach (Control ctl in parent.Controls) {
if ((ctl) is Label) {
lbl = ((Label)(ctl));
if (lbl.CssClass == “error”) {
lbl.CssClass = “formlabel“;
}
} else if (ctl.Controls.Count > 0) {
X(ctl);
}
}
}

If you have other ideas please post them in the comments.

Start Small, Get Big
Growth Secrets for Self-Funded Startups. It'll Change Your Life.
What you get for signing up:
  • A 170-page ebook collecting my best startup articles from the past 5 years
  • Previously unpublished startup-related screencasts
  • Exclusive revenue-growing techniques I don't publish on this blog
"The ideas and information Rob provides should be required reading for anyone that wants to create a successful business on the web." ~ Jeff Lewis
Startups for the Rest of Us...
If you're trying to grow your startup you've come to the right place. I'm a serial web entrepreneur here to share what I've learned in my 11 years as a self-funded startup founder. Luckily several thousand people have decided to stick around and join the conversation.

For more on why you should read this blog, go here.

13 comments ↓

#1 Aleksey Linetskiy on 09.12.06 at 1:37 pm

I totally agree that attention to detail is an important trait, and definitely should be tested during an interview. However, I think that your questions test the trait on a superficial and, I would say, formal level. Here is what I would suggest: – Give the candidate a problem which is prone to off-by-one errors; make sure that, if the proposed solution has the error, the candidate is aware of the possibility of the error and knows how to test. – A problem with potential “special cases” – something along the lines of writing a function that calculates 1/x, but a little bit more complex, so it will not be that obvious.

#2 Oli on 09.12.06 at 5:06 pm

I disagree with the “paper form” test if it’s going to be given DURING the interview. I know I would rush through it to get it over with, so we could get on with the REAL interview, because too many times those forms are just to satisfy some bureaucratic fantasies. That and if I see a company is forcing me to write out by hand something I could have typed (or that could have been copy-pasted from my resumé) then I wouldn’t be entirely sure they knew how to use computers to run their business.

#3 Paul Norrie on 09.12.06 at 9:33 pm

Some interesting ideas Rob. Once I did try missing a line number from a code listing the candidates had to code review. The line itself wasn’t missing, just the line number skipped the number 20. No one picked it up. On reflection, I believe it was partly that this was for new graduates who had probably never read code on paper before, let alone with printed line numbers so they never even were cogniscient of the numbers. I do like the idea of having them review or write a small routine that has a lot of ‘what-if’s to be handled.

#4 http:// on 09.13.06 at 10:20 am

What most ‘looking for details’ questions tend to be are just like “where’s waldo” games – if you can spot him, well enough, but then why? Here’s a simple technique – Ask him to write a simple program, in whatever language you were recruiting for, and have him/her present it for different people – himself/herself, co-programmers, boss, other departments like marketing, and clients. If you’ve been through the motions, you’d know how one version would not work for all. Then, you’ll see how detailed or adaptive he/she can get.

#5 http:// on 09.13.06 at 3:29 pm

These tests won’t show you if a candidate pay attention to details. They only show that, on that given moment, he was nervous. It is much better to talk to them, and bring this topic during conversation: “do you focus on details? are you more interested on general concepts?” etc. Talking is much better than silly tests.

#6 Christopher on 09.13.06 at 4:22 pm

If some company managed to produce an interview question like #1, I would interpret it as incompetence and would want to find the exit quickly. see thedailywtf.com for more great interview questions like that!

#7 alexander on 09.13.06 at 5:32 pm

Since these questions seem hostile to the interviewee, it’s important that they be armed with the proper responses. #1. Ask why the company doesn’t already have a stored procedure in place for the join? Ask for an explanantion of the business process being supported to clarify if an inner join is really necessary. Finally, write the inner join using column numbers instead of names since the company hasn’t been able to normalize their spelling. #2. Ask for a copy of all applicable HR documentation detailing the use of the information you’re about to provide. Insinuate that the company is using the hiring process as a cover for the collection of email addresses to sell to spammers. #3. Ask for a copy of the company’s code creation procedure manual that documents this process (They do have this stuff written down don’t they?), read it back to the interviewer. Alternatively, begin your description with “wake up in the morning, get out of bed…”, provide a minutely detailed schedule of everything that you would do leading up to the creation of the Hello World application. If the interviewer claims that you’re including extraneous details explain that completion of your morning meditation is an integral part of writing good code. Then branch into an explanation of your holistic world view and why we shouldn’t eat corn (“The kernels are crying man! Can’t you hear them crying?”). #4. This is actually a fair question. Answer it as best you can.

#8 http:// on 09.13.06 at 6:32 pm

In my current company (and previous lives) I’ve seen the greatest benefit (and detriment) of attention to detail in the project planning (PM) – especially at the beginning of a project. This is because (IMHO) people with attention to detail tend to gravitate more towards thinking through and figuring out as much as possible at the outset instead of a project (don’t get me wrong, I’m not a PM evangelist, I believe in a well balanced approach to all thinks, and I would never claim that PM is a sliver bullet.) So testing with the scenario option is a good plan, and I also appreciate what another poster says about “talking it out” instead of trying to mathematically figure it out with questions (not that the author suggests this, but I see how it’s inferred.) So here is my sample scenario: give the candidate a rough functional specification document for a piece of software (or anything for that matter) and see how detailed their response is. The more detail, the more they’re paying attention. Caio, A fellow worker

#9 rwalling on 09.13.06 at 10:11 pm

Thanks for the really great suggestions and feedback. I plan to implement several of the ideas that have been presented in the comments. One comment of my own: Bringing things up conversationally doesn’t work very well because it’s too easy to give the “right” answer. Q: “Do you write good code?” A: “Yes” Q: “Do you show up for work on time?” A: “Yes” Q: “Do you focus on details?” A: “Yes” You haven’t really learned much from those answers.

#10 http:// on 09.14.06 at 1:39 pm

OK, this may just be me but the “the candidate is nervous and therefore can’t think” line of thought really grates on me. I just don’t buy it. I need someone who can analyze problems and make decisions under pressure, because during the course of a multi-million dollar software project, pressure situations come up. But mostly, the line of thought bugs me because even though I’ve had plenty of interviews where I’ve been nervous, I’ve always been able to think the interview questions through and reason them out.

#11 http:// on 09.18.06 at 6:21 am

Just on a sidenote: A company that makes me take a test on writing a query on a poorly designed datamodel and only worries about the spelling might not be a good company. Clearly the relationship between User and Address is such that the user has an address (not that the address has users) – therefore the addresskey should be on the usertable to begin with ! Even more important would be the question how good the reuse of that address really is. Why not keep them in one table as that relationship is clearly 1:1 to avoid your frontend developers having to build not needed functionality?

#12 rwalling on 09.20.06 at 11:49 pm

Thanks for your comments, Alex. The SQL question is not intended to test someone’s SQL ability – surely this join is too trivial for that. This question serves the sole purpose of looking for attention to detail (in this case, a simple spelling mistake). Keep in mind no single question can give you a sure-fire method of evaluating a candidate. That’s why you should ask several questions along the same line to gauge a candidate’s abilities. A user does have 1 or more addresses, therefore the UserKey is in the Address table. If we added an AddressKey to the User table a user would have 1 and only 1 address. We want a 1 to many relationship (not 1:1 as you mentioned).

#13 jvvw on 09.22.06 at 12:29 pm

I’d be wary about giving any questions with deliberate mistakes in because if I were a candidate who paid attention to detail I probably wouldn’t go and work somewhere that appeared not to! How you test attention to detail is an interesting problem though.