Two types of developers, or why algorithm tests don’t prove anything
I recently came across the best data entry jobs from home, and proceeded to apply for it. And as part of their interview process I had to take a mandatory algorithm programming test. In this article I am gonna explain why I think that a test like that is very useless to evaluate the quality of a programmer.
The academic programmer
There are two major categories of programmers. There is the academic type that studied algorithms and the math behind everything during his/her University carrier. Don’t get me wrong there is nothing wrong with that but the usual lack real world experience. And more then once I worked with some that had very good grades in University but they can’t wrap there head around simple project tasks since they lack of real world experience and in real projects problems are not out of books. So there is no way to just study a topic and then finish the task.
The hands on programmer
The second major category I see is the hands on programmer. That is the type that might have skipped University for various reasons. People like that usual have started working as professional programmer early on, have or contributed to open source projects and in general very eager to learn new technologies out there. The problem is they often haven’t learned the full math behind algorithms so they understand the basic concept but would never be able to implement it them self.
Is that a bad thing? NO! In real projects you pretty much never need algorithms that aren’t already implemented by way smarter people and optimized to a level that for example I would never be able to. The important thing is to know the basic algorithms out there, understand what there purpose is and how to find working solutions. But not necessarily how to implement them yourself.
Is one better then the other?
Of course not. First of all not all academic programmers can’t solve real world problems. And on the other site not all hands on programmers are missing the math behind things. And you need both. For example if it comes to implement new algorithms or optimized existing once.
On the other hand in real world projects you don’t use algorithms very often and if you do there are very well known libraries for it. So logic thinking and analyzing as well as experience in your field are more valuable to a day to day project.
As you can see both types are valuable but there is no easy way to say that one is better then the other. There are just two different types of developer with different knowledge and focus.
What do you think? Let me know about your experience with interview algorithm tests and if you think that they give a good assessment of someones developer experience.