Monday, July 12, 2010

The non-developing developers

What I totally like in a well prepared job interviews is that they, without any doubt, reveal the truth about the candiate. The truth which sometimes is unknown/unclear even to the candidate himself!

Last week the head of one of our development departments asked me to help him with interviewing three people for the Java development positions. The requirements were clear. The perfect candidates had to know what they are doing. Basicaly, they need to be able to think, understand what software development in Java (or any other OO) language is, are able to solve engineering problems, are Agile, etc. Clear stuff. I decided to help. Besides, this was a great oportunity to me as well as I have never interviewed people myself. Usualy it was "them" who interviewd me.

The interviewees

As I already mentioned, I received three CVs to review. Each of them was better then the other. On guy impressed me with his document so much that I felt like an incompetent person to ask him the questions. A whole lot of development expierience, tons of technologies, known programming languages, huge ammount of certifications, OOD, OOA, patterns, etc. Wow! This must be our guy, I thought!



The other two CV's were not worse. The candidates claimed great Java knowlege. (One guy even attached SCJP6 certificate to his documents.) They all could speek at min. 2 languages (important for the project we have) and of course dreamed of working at our company. One young lady attached her photo to the documents... a big, nice photo! ;-) What more do you need?

Preparation

Well, the candidates prepared themselves so I also had to. Since I did not have much time I decided to build a short list of most fundamental questions to verify the contents of their CVs. The idea was also to check if the candidates are able to think. Asking a question like "Describe Factory Pattern" does not mean that the candidate thinks. It just prooves that he knows what Factory pattern is, but does not proove that the guy will be able to use it when necessary. So, I've prepared my "Evil" question list. (I think I will publish it on this blog as well. It got really popular at our corporation so maybe you could slightly modify and use it too.)

The truth

So, what happend during the interviews? Certainly something I did not expect. I mean, I new that the candidates could overestimate their skills but I totaly did not expect them to have no software engineering skills at all!

None of the guys could answer a single question completely; some even partially.
The absolute "hit of the day" was the guy who's spoken with/through his nose. His mouth did not even open (maybe a little) and it was extremely hard to understand what he was saying. He's also spoken very fast and had to correct himself from time to time. OK.. a geek maybe, I thought. Let's test!

He has presentend his SCJP Certificate proudly. Since I also have one... what else could I do then ask a Java Certification question. This appeared to be too much. So I asked the guy to pick up a design pattern he likes (or rather knows best) and describe it. His reaction was: "Hehe.. Singleton". "Singleton... ok, describe it" I asked. So the guy started saying that Singleton is the simplest pattern of all. That this is useful when exactly one object is needed to coordinate actions across the system. This was acceptable answer... wikipedia like. But when I asked about potential problems with Singletons... the guy was gone. (Btw. SCJP6 includes question on threads and synchronization.) He was absolutely clueless! We asked about his other skills, like "How good is your English?". The answer was "Good". So we switched and started speaking english to him. BUM!!! The guy did not understand a word! We decided to finish.

The other beautiful part was when we asked the candidates if they know anything about the products our company builds. The answer was always "NO". No. How can this be? Why do you apply here then? "Yeah, because I know this corporation, its a well known company... bla bla". Amazing! :-)

I almost forgot to mention a female candidate. Young, good looking lady, right after her internship at one of our departments. We did not expect much but were interested in what she can do, if she's motivated, if there is any potential there. etc. She did not know what the difference between an interface and an abstract class is. She also could not explain what do we need interfaces for. Sorry. Oh.. and the only thing she could say in English was "Yes" with an extremely strong russian accent.

Conclusion

We should apply "Holywood" principle into the process of recruiting people. "Don't call us, we will call you!". Otherwise, in most of the cases, you only get developers who can't develop.