Sometime last year, I was asked to evaluate and identify the best programmer from a number of graduating IT students. The projects have been preselected by the faculty members. The criteria for the selection is not specifically defined. They trusted me, being in software development for sometime, that I will be able to gauge who will be awarded of the contested award given to graduates of the Information Technology bachelor's degree.
To provide me with some insights on how to go about the evaluation, I had to ask some of the faculty members who identified me to be the "judge". One of them presented that the best programmer should be the one who used a well-known development framework in their projects. Another argues that someone who developed their own framework is the better programmer -- having "invented" his own framework.
Another faculty favors the programmer who had developed the most number and more complex system features will determine the best programmer. Another expounds to include the scope of the system -- the system solves a wide variety of problems.
All the projects started at about the same time. Each project are developed by about two to five individuals. From each team, one stands out to be the project leader -- most often, the developer-lead of the team. The cohesiveness of the development efforts vary from each team with the complexity of the individualism among the members. Some instances, from among the team, only one is doing the programming, while the rest will do something else - financial support, documentation, etc.
The determination of the best programmer ignores the collective effort of the team. Be it that the system is developed by one person or by the whole team, the selection dictates the completeness of the presented system. Technical expertise as a baseline criteria was also not considered.
I pity those good developers, idealistic, all-knowing, but are unable to produce a near-complete product by the due date.
In my selection, I had to consider, the development journey of the system by the developers concerned. The best programmer should be someone who delivered the finished product by applying the lessons learned in their earlier years. Having the best project, having used or developed their own framework, are factors in the selection. The measure of performance is the extent of effectively applying what was learned.