Tuesday, April 5, 2011

Hiring developers...

This month we stared hiring developers, by the way, if you are a C# developer with strong knowledge of javascript(jquery nice to have) you can send your resume to hmatamoros@sciodev.com, anyways, we are hiring, I am in charge of most of the technical interviews and this time I am using a different approach for the interviews, let me elaborate:

Most of the times, in most of the companies when they perform remote interviews, the interview goes like:

Interviewer - do you know what is "X"(some obscure or new language feature)? -
Candidate - err (googling the question)...yes, sure!, I used that on my last project -
Interviewer - what does MVP, MVC, MVVM mean? -
Candidate - (googling)...answering.
etc., etc.

Some other companies(us included) use small problems like the famous "bizz buzz", and this is ok, but a developer is not going to be solving simple bizz buzz problems always!, so if you are relying on that kind of tests you are screwed, take a look to:

 for (int i = 1; i < num; i++)
{
     Console.WriteLine(i % 15 == 0 ? "FizzBuzz" : i % 5 == 0 ? "Buzz" : i % 3 == 0 ? "Fizz" : i.ToString());
}

does that tells you if I know OOP, if I know programing principles? does that tells you if I know how to apply some patterns?, of course no!, I also found that some guys that practice for programming concourses solve this kind of problems "easily" but their OOP skills are terrible.

The problem with many technical interviews is that those are not evaluating the skills and knowledge that the individual is going to be using on daily basis, thats why I started to use a slightly different approach, I still use the quick challenges, but I also put them some weird code and I expect them to fix it or comment what is wrong with that code, I also ask them to write some code like a simple repository, and also exercises that help me evaluate their OOP skills, like write a simple game engine.

The results so far are great, previously we hired some people that were not very good programmers, and what happens when you put some pressure on bad programmers? they quit or they just put everybody on trouble and we have to ask them to leave the company, why in the world would I accept a job if I know that I cheated using google on the interview? why would I take the risk of moving to a new city if I know that I am not qualified?, that's something that I will never understand.

Just to finalize, I know that I need to learn a lot of many things, but I am honest and when I don't know something I just said, "I don't know" and then I will put my self to study, I expect the others to do the same, our company always give the people the oportunity to learn, we just use the interview to know if the people is a good match for our culture and to have an idea of their skills.