It is difficult to find good programmers and is much more difficult to decide in a few minutes which is the ability of each candidate to address a level of difficulty is not trivial. No I am wrong, it is very costly for the company to hire a candidate who can not meet the requirements of the post, it is frustrating for the person and negative for the team in general. Unfortunately I was already past. So the question I prefer to accept rejection.
But if we were more focused on presenting search results and tables (and there’s nothing wrong with that) obviously I would focus more on knowing what is the experience with SQL, reporting tools, creation of interfaces, etc.. the candidate. Unfortunately what I was looking for a candidate with the ability to solve problems that probably neither he nor I have seen, and they do all those mundane things that IT people do.
Find this type of program is quite difficult to find good programmers in general is difficult. Thus the entire process of selecting an experienced programmer (not junior) involves: a review of your CV, an online review and an interview with the written examination.
The online discussion helps me to separate those who claim to have years of experience in C / C + +, which actually have some experience. The questions are not trivial, but some clues and answers can be found by searching the Web. Almost all questions can be answered with less than 100 lines. And because you can choose to resolve the questions are almost always choose the simplest questions. The candidate has a maximum of one week for delivery after the contact. This is because you can be working and could only solve the test in your spare time. That it is delivered as soon as possible is certainly considered a plus. Only 5% passes this stage, maybe less. What is good because it prevents me from working out a single that made the trivial things in C / C + + (as copied from the blackboard in her class of programming languages I, several years ago by the way, that no gentlemen counted as years of experience in any programming language except perhaps VisualBasic), as well as those who really are not very interested in the post and think it’s a hassle to continue with such horrendous review.
Now comes the hard part, deciding between that sent the review to which I really like to recruit those who do not. A first look at the code is sufficient to rule out many, only achieves a 20% pass the exam, and I am not talking about code format, or efficiency of implementation, many programs speak to crash or give wrong solutions.
So I have a 1% of the total assessed. At the outset I must clarify that anyone who has resolved and approved that review on their own are capable of doing any work on moderately complex C / C + +. And you have unlimited resources to spend to hire that person directly. But I have not, so my concern is to measure how much support the candidate decided that review online and how long it would take you right to do all over again under my supervision. Come to think this would be a good solution. This blog is good writing. In fact sufficient to sit for half an hour to realize that the solution was found somewhere and copy or actually take a month to resolve the review before submitting your CV. Now, the fact that he has been able to have their good side, the remaining 95% of candidates failed to do so. On the other hand I would not hire a dishonest person.
The current solution involves asking the candidate to come for a personal interview and a psychological test and programming. The psychological test is a standard IQ test, we had no surprises here, most made between 8 and 10 of 13 (which is within the normal range), where it is if I had surprises in the review of programming. This test is quite simple, and it seemed simple enough, at first I thought it would be ridiculously simple, and expect to see some faces of mocking the candidates to such questions, everything is to verify the ability of each candidate told me. If you say know number theory and I put a question where you multiply 13×14, which is expected is that you can resolve it without any difficulty. Almost like breathing.
This examination can be solved in C / C + + or pseudocode, it matters little if you are wrong there in a close parenthesis key or if the idea is understood. Let me wrong several times in that sort of thing every day, it would be foolish to say you do not know because no schedule put a semicolon at the end of a sentence, such things happen and more often if you’re under pressure and in writing paper. Moreover, and here I shall leave for another topic post: I think that a language that forces you to put a semicolon at the end of each sentence is a nuisance, to say the least. And now, starting to rain the vilification. But since I left my favorite programming language to be C / C + + and Ruby is now not going to change my mind (if you already know that Ruby is slow, why even use C / C + +) but well, what was.
I hope that a candidate with experience to resolve this problem without much consideration: OK, ideally, would give a compiler for a half hour but the review also questions of concept and design, I do not think a PC will help greatly in this, we are well on the precept that the candidate knows well and to schedule. Then we got to the damn question:
Implement a function that returns the n-th term of the Fibonacci series: 1,1,2,3,5,8, … How soon will calculate the value function Fibonacci (75)?
As simple as that, the second part is a hint to the candidate implements an iterative solution because the solution for too recursive and served me well to see if the candidate has implemented some time in their life this basic exercise.
And here comes the unpleasant part and the reason for this post because I had to reject candidates who had the role of knowledge and certification, consideration of which was online in the average quality of accepted (without being brilliant), but whose response this question did many sounding warning bells in me.
There was one candidate who was a master in his CV in a foreign university in computer science, was implemented as a bachelor thesis of complex optimization algorithm, and yet failed to answer all the questions you just did. Since this is the Fibonnacci which could no longer endure. When asked why he replied: “That was something I had seen in college long ago and not remember one that was well with recursion.”
That does not remind Fibonacci did not matter in fact has never seen the problem as serious as the ideal candidate would try to solve it alone with his wit, the series is there, maybe could not remember how the series was formed? Because it is difficult to admit having seen some time and is not a series like this: 1, 11, 21, 1211, 111221, 312211, … If this is a series that will make you hurt your head. The fact is that for me the only candidate known programming from a theoretical point of view, and it may even be well Dijkstra same thought there was something more abstract computer science than just programming. Something which I believe completely. “Computers are not over, the computer sciences, from what the telescopes are to astronomy.” Absolutely true, but I’m looking for a practical program, and all the good programmers and practical know, those who manage to do things, can solve this problem without much thought, perhaps without using a data type that allows you to calculate Fibonacci (75) perhaps without the use of only two variables (and more), perhaps without using the formula of this example, you may not use numbers and special libraries to calculate values giants, etc. Just enter a few variables and a counter inside a for or while dirty, period. Next problem.
So I write this post, perhaps there is a good developer out there, really good to read it, nor know how to program the Fibonacci series and to convince me that someone can not do in 10 minutes you can solve problems even more complex but Practical (?).