views:

542

answers:

5

My company is looking for a new web developer and we are eager to find someone that would be efficient as soon as hired and capable of making quality code. I will have to take interview and I would like to give them an assignment, so I can see

  • their general programming skills
  • if they are able to use CSS
  • the general quality of what they product
  • and probably so much more

The only problem I don't have good ideas of what to give to them. Some of the candidate would probably be working in some other company so it should be something like 8 hours work at maximum (like one week end) but it should be complicate enough to show their skills.

So far I was thinking :

  • a contact manager
  • a CD/BOOK manager
  • a blog ?

guys if you have some ideas opinions, please share!

Also the assignment would be in PHP using the Zend Framework, so it has to take in the calculation candidates might not be so experienced with the framework.

+10  A: 

I don't think you should give them such a long "test". In my opinion if you want to do something like this, make it a simple 5-20 minute application. Perhaps a small address book manager that stores name/number and maybe 1-2 other fields. But nothing too complicated. And tell them that it only needs simple styling to look "ok" but nothing fancy is required. If it were me, I really wouldn't want to do "homework" for an interview.

TheMoonMaster
I'd have to agree with this. Unless the position was in some way incredible or I needed a job, I probably wouldn't spend 8 hours of side work just to get an interview.
John Feminella
I kind of agree but the problem is that, if I give only 1/2 hours to produce something they would probably stressed and product code worst then they would do in a normal situation, I am note interested in candidate capable of doing some hackathon, just capable of doing some clean coding in a normal amount of time.
RageZ
plus I didn't mention but my company is really into the interview process, to get me it took 6 interviews and one by phone with some guys on another continent, so anyway the person who is going to be hired would have to spend lot of time to get the position
RageZ
Give them a day or two to do it if you want. But a huge project really isn't the way to go. It is a lot of trouble just to code something up for a job. And even then, it could show how he works under time constraints and pressure which could possibly be a plus.
TheMoonMaster
Multiple interviews are an expected part of the process. Free work never is.
Alan Storm
@TheMoonMaster: I see your point so kind of on place test, so it leave my main question unanswered what kind of test would be good ?
RageZ
Personally, I would test them on the basics. I would ask them to create a small application that interacts with a database to show that they can code. Like my first comment an address book would be nice. Just ask them to make a small address book that allows you to add edit and delete entries. Let them create a Database table (PHPMyAdmin) and add the rows that you tell them. I would suggest requiring a first name, last name, phone number, address, and zip code. Then let him code it up and ask him to comment it well. Print out paper with clear requirements so they doesn't get confused.
TheMoonMaster
@TheMoonMaster: oky look good to me, I will have to work out the specs.
RageZ
+7  A: 

I'm an experienced software developer who would fit your description, and I'd walk away from the interview the moment I was asked to do any unpaid work that would take more than an hour. Only the desperate and/or inexperienced are going to bite on something like that, and neither of them are going to be able immediately contribute on your project.

  1. Ask them to send a code sample

  2. If they don't have a code sample they've cleared with previous employers, ask for a personal code sample

  3. Google them and find the kind of stuff they've produced vs. what they've sent you

  4. Ask for a technical reference, and ask the reference what kind of work they've produced

  5. Hire them on a contract-to-perm/part-time contingency basis. If, after two weeks, they're not living up to your expectations, end the contract with no hard feelings either way.

Alan Storm
Agreed - particularly if it was some rote boring dull project, like yet another address book. Now if the project were *interesting*, I might sink some hours into it...
Philip Kelley
If you'd walk away from an interview the moment you were asked to do any unpaid work without thinking about how interesting it was or what the job was going to entail, that's not desperate or inexperienced, it's arrogant and a little childish. I try to offer interesting problems to solve that require some algorithmic thinking - I don't give a damn is someone can drag and drop an address book together. But good candidates who find a potentially great job will put in a couple hours to do something that they ostensibly love to do. Mercenaries need not apply.
cynicalman
If it was an interesting problem it wouldn't be unpaid work, it would be a chance to think about an interesting problem (irrespective of the interview process).
Alan Storm
+3  A: 

It would probably be better to have them write some code on a white-board in person than a take home assignment. You can learn a lot more about the candidate that way, such as how efficiently he/she solves problems and thought process.

Giving them a take home assignment doesn't really give you a clue as to how efficient they are. You could have two candidates, both of whom turn in the exact same thing, yet one of them did it twice as fast. You would have no way of knowing.

I have to agree with the other answers: if an interviewer asked me to do a take home assignment that was too long, I wouldn't do it.

Ryan Thames
+2  A: 

As others have written, asking people to do so much work for free is insulting.

Assuming you can find some victims, how confident are you that you would be able to objectively esatblish which one produced a better finished article?

Why are you so obsessed about the Zend framework? I would much rather employ someone with a solid understanding of programming, good problem solving and communication skills than someone who can only demonstrate competence with a very specific set of tools - presumably tools where you already have a strong skills base.

Indeed one of the things I look for in candidates is what new knowledge and interpretation they can bring and how it might complement the existing team. I would even value good knowledge of procedural, OO and non-procedural programming alongside knowledge of HTTP over specific skills in PHP.

When I interviewed candidates for PHP programming posts, I had a carefully prepared PHP script (about 1 page full) which was lousy with bugs and bad style (using register globals, calls to header after output started, functions which are not called, using numbered instead of associative arrays, function args in the wrong order, using computationally expensive functions when simpler ones would have surficed....) which only used common PHP function calls and gave them 30 minutes (with access to a internet connected computer) to identify what was wrong with it.

This also meant that they could carry out the test in controlled conditions.

I would hope it was evident to the candidates that this was exclusively a test of their abilities rather than anything I might profit from - and debugging code is a lot harder than writing code.

C.

symcbean
@Symcbean: thanks for your answer, I release asking for a home work style thing is not a god way to go. I will go to some test after I have to workout the content!
RageZ
A: 

I don't think many of these answers are from the employer side of the relationship. Writing a function on a whiteboard gives me a tiny glance at someone's potential, and essentially no real picture of efficiency. There's always a chance that they've memorized a really cool way to reverse a string in place and remove duplicates from a list and count the bits in a byte because those questions are all over the internet.

I've had interviews with people that turned out to be nothing but posers (I guess liars would be a better term for it), so I think it's incredibly important to have some kind of tangible piece of work. I'm not saying 8 hours, but it gives you a few better hints:

  • How is it packaged - a zip with a build? Or a text file pasted into an email.
  • Is there any documentation?
  • Is there a sensible algorithm or is it brute force?
  • Are there objects or is it a whole mess of static gunk in one class?

We're hiring Software Developers that need to be able to design as well as code -- the probation period should not be the first time a person writes more than a method for you - by the time an ass is in a seat, you've spent a lot of money just to find out they get lost trying to write a method with business value.

I'll admit that people can fake it on assignments (this is usually, but not always, pretty easy to flush out in a post-assignment interview), I've had far more success hiring people with good code assignments than hiring people with a great resume and great interview.

If the job isn't important enough for someone to spend a couple hours writing some code (which we ostensibly love to do anyway, right?), then I'm glad they wouldn't do it, because I wouldn't hire them.

cynicalman