So I'm hiring for a senior developer/team lead role for an ASP.NET MVC3 project. This is a big deal position for our team as this person will lead one of our two main products--a product that hasn't seen much developer love in a while.

So I need to ensure that my candidates do smart things with controllers, views, view models, DALs, unit tests, etc. I use some trivial programming challenges during interviews but I want to give the folks who have trouble in whiteboard coding a chance to shine.

The best assignment I can think of: implementing a trivial log in page, is probably more than an hour of work and even if I cap it at 2 hours, it is unlikely to be 100% finished.

Is this fair? I'm trying to strike a balance between keeping the assignment reasonable and giving the applicant a chance to show off the wide range of skills being a tech lead requires.

This question appears to be off-topic. The users who voted to close gave this specific reason:

"Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Ixrec, durron597, Snowman

You might want to give them a partially completed page (and maybe with a deliberate (but non-fatal) bug hidden somewhere?) adjusted so that it should be easily finished in the time given, but not too trivial.
–
FrustratedWithFormsDesignerApr 27 '12 at 14:53

14

If this is for a 'senior' position, shouldnt the candidate already have an impressive portfolio/history? If they dont, why are they being considered for such a role in the first place? Such an 'assignment' seems pretty silly to me.
–
GrandmasterBApr 27 '12 at 15:20

The problem with a test like this is that you make it too simple and you're not gauging skill, make it too complicated and you're sitting there 5 hours later. Though suffice to say that building a login page would definitely filter out the idiots at least.
–
NeilApr 27 '12 at 15:24

3

@GrandmasterB, not all of us work on things that can be seen by anyone outside the companies we work for.
–
CaffGeekApr 27 '12 at 20:42

6 Answers
6

Having been on both sides of this issue, as a manager and a job applicant, I think you're right on with 1 - 2 hours. Anything longer gets frustrating for some of the job applicants (if not most). Anything shorter, on the other hand, will probably not get you enough information and insights into the candidate's skillset.

The only thing I would add is to make sure that the interview assignment wouldn't come as a complete surprise; perhaps it would be reasonable to give the candidate a general idea of what they should prepare for (even if it's just a general idea). Here's why: I sometimes spend a couple of months, doing nothing but database related programming. I get into a certain groove, and for a while, I'm pretty much on top of database related programming.

Then I'm being asked to implement proprietary video presentations, training, etc. in such a manner that nobody can rip them off...and I get into that groove, pretty much doing nothing else.

So even though you're interviewing a developer/team lead, if the candidate seems like a good guy, give him a chance to find out what you're after, again, if needs be just mention some general issues, or if you feel generous, give him a handful of specific topics to think about.

You and/or others may disagree wit this approach, but job interviews are tough. You want to make sure that the candidate is up to snuff, but you also want to give them opportunities to impress you and feel confident. Most likely, you will find that such candidates will give you much more genuine information than those who are a nervous wreck, because they know there will be some kind of assignment...but they don't know what it will be.

It should be assumed that their resume shows that they can code, otherwise why would you be interviewing them? If you can't see that they code don't bring them in, you are wasting your time.

That said, I would worry more about how they approach the solution than the mechanical part of the solution ( the code ), and how they communicate their solution. This is why whiteboards exist.

If you provide them with a base set of requirements and the first thing they don't do is start asking for specifics, then that is a strike. You should have a specific set of things you want to hear them say or ask before hand, this is more work for you but basing your decision off something like this is more accurate than having someone hack at something that isn't expected to work anyway.

Senior team members should be able to design a solution, present the design and explain it and defend any decisions if needed, or adapt any decisions based on feed back and communicate the plan to junior members of the team and explain it in a mentoring way.

This human interaction is more important than having them partially complete an entry level busy work assignment. Which most will not want to do; if they do it at all and if presented with an offer afterwards, will probably refuse as it is a demeaning task.

There are lots of senior cowboy coders that have no personal skills and don't work in a team at all, a contrived test that you propose will not weed these people out, and trust me you don't want a single one of these type of people on a team of any size!

For this role, I disagree. We are a 20 person company. I have no use for architects who can't code. Some companies want managers who just tell developers what to do. That's not us.
–
Code SilverbackApr 27 '12 at 16:43

4

I didn't say they can't code, as other people have stated, it is assumed that a senior person can code, that should be implicit. If their resume doesn't show that they can code, why are you interviewing them?
–
Jarrod RobersonApr 27 '12 at 16:56

7

Assuming a senior person can code is a practice that has not been validated by experience.
–
Code SilverbackApr 27 '12 at 17:21

Sounds reasonable, but you may want to include at least another page that is used after logging in from the login page.

If you expect them to do this assignment at your office during the interview, let them know ahead of time so that they can plan for it and allocate the necessary time for the interview. In my experience, interviews don't last longer than an hour, so it's only fair to let them know what to expect and how much time you will give them.

The other option is to allow them to complete your assignment at home, but that allows them to use more time and resources (i.e. get help). However, this allows you to give them a more complicated assignment that can showcase everything you expect them to know.

Totally fair provided you tell them up front how much time is required for the interview. If someone doesn't want to write your test then you don't want to hire them. I've had longer tests before and I personally appreciated it. One in particular was difficult and longer than the time allotted but was an excellent measure of the resourcefulness, priority setting, and problem solving skills of the candidates. That employer had very highly skilled developers working there.

I think you are on the right track with what you are looking for in a candidate. All too often a resume lists a million things that the candidate has read about but doesn't actually know. Sometimes you can weed these things out in a regular interview, but if you want to know if someone can actually get something done, make them do it.

Just make sure the expectations are clear and you are testing the skills that are most important for the job.

In your scenario I might also be concerned with how well the candidate understands HTML, javascript and layout.

Do you want to give the same assignment to all candidates. You should be able to get to a shortlist of one. You assignment / test, is there to show the candidate can not only talk the talk but can also walk the walk.

What I would do is bring the candidate back, inform him that the is on a short list (Don't say of 1), put him with one, or two of his potential (day to day) co workers, and get the "team" to solve the problem. 1-2 hours will be more than enough for the team to report back to you that they think he/she is good enough, a leader or follower, a doer or a slacker, competent or .... etc.

You are a small company, and nothing will destroy you organization faster than dysfunctional personal relationships, ladder climbers, backstabbers and workplace psychopaths (about 1 in 20 are). Focus on if the candidate has the right attitude, if he technically average and does, he will out perform 90% of candidates who a experts. Programming may be a solo task, but software development requires a strong team - and you are looking for a team lead as well as a technical lead.