Talent is the best Metric to measure a Software Developer.

Like in any other activity that requires expertise, software developers can be classified based on their productivity and ability to innovate and create new approaches and solutions to specific problems. The main dimensions that dictate the quality of a developer are knowledge, experience and talent and the ability to recognize them is the most important skill for the project leader who tries to populating a world class team.

Why Projects Fail

The most possible reason behind a failing project can be found in the composition of the development team; an inadequate interviewing process results to inefficient teams and missed targets. Unrealistic expectations and misunderstandings about the abilities of each team member generate aggressive deadlines and commitments that cannot be fulfilled that lead to friction among the team members,  and mismanagement in general.

Metrics

Having said this, it is not a surprise that deciding upon the criteria that can measure the level of a programmer have been the subject of a lot of thought and research as companies are trying to improve their interviewing processes and reward their best workers according to their abilities and contributions.

Project management methodologies like agile, scrum or XP for example, encourage the creation of a wide range of  metrics aiming to express the qualities of the developer in simple to communicate figures. In the core of these approaches lies the concept of breaking down each project to small atomic deliverable components whose complexity is decided and assigned a numerical value upfront.

I believe that the adoption of metrics became so popular, mainly because in corporate environments, managers tend not to have a  technical background and lack the necessary experience to recognize development talent. Instead,  they try to overcome their lack of technical ability, relying on a list of metrics that try to measure  the abilities and effectiveness of the team members. Also, the blooming of software outsourcing, is also among the reasons for the popularity of metrics. Senior managers like to believe that a quick glance in a dashboard can provide them with enough input to successfully manage their international development teams!

Things are usually getting worse in the cases of companies who rely on software as a means to the goal rather than been the main objective of the business.  A financial company for example, views software development as a utility that serves the main purpose of operation which can be stock trading or forex.  This means that the most senior positions of the company will most likely be occupied by economists, traders or risk experts while the “computer” people will occupy less important and prestigious roles, usually reporting to non technical people, who happen to be clueless about software development and the related challenges and special needs.

Estimating the abilities of a developer as an array of metrics, consists of a weak approach that can easily lead to erroneous conclusions and needs to be applied very carefully if not avoided completely.

The artistic nature of software development makes the attempt to  decide upon the quality and effectiveness of a developer relying on simplified statistics and metrics a very risky and error prone exercise and represent a huge oversimplification.

Development Speed

Deciding on  the quality of a developer based on how quickly he delivers a working solution is one of the most common fallacies;  although it is certainly important, development “speed” is also overestimated and not necessary the best metric to evaluate the performance of a developer.

What makes it even worse, is the fact that the majority of the developers trying to please their managers accelerate their progress to the point of delivering poor solutions without paying attention to their long term functionality; poorly written code will eventually make its sloppiness apparent as the project matures and become a bottleneck that can be proven very expensive  to fix as it will even require a complete rewrite from scratch!

I am very skeptic when it comes to metrics, similar to the quickness of development as developers tend to adapt to them, shifting their focus from writing high quality code to earning the higher metrics possible something that can become disastrous for the long term performance of a team.

Development speed is tightly coupled with the nature of the project.  Any non trivial project will involve several stages, ranging from rather mechanical and repeatable procedures that can indeed be performed very fast to way more difficult and challenging tasks that might require the creation of custom algorithms, cross platform dependencies or undocumented components that can slow down the progress significantly.

Most projects contain unknown concepts that can significantly delay the delivery of the final solution. I believe that this is where most of the delays derive from while the best way to prevent it lies in experience and talent. Inexperienced developers, will always underestimate the complexity of a project and try to satisfy their managers by offering aggressive and unrealistic estimates that almost all of the time will be proven inadequate and cause some type of a crisis in the development of the project.

Software lifespan: The best and most realistic metric

The best way to measure the quality of any piece of software lies in its lifespan and its adaptation from many diverse domains of application that were not included in the original design.

Almost always, code that is developed under tight deadline constraints contains several weaknesses that it is only a matter of time until they will become an obstacle in the evolution of the platform.

Tangible skills like language or algorithm mastery, operating system knowledge of familiarity with a specific API or framework are relatively simple to detect and classify; a relatively standardized interviewing approach will reveal the level of the candidate when it comes to the mastery of this kind of knowledge which will provide a sufficiently good understanding of him.

Although it is true that the learning curve is very steep and the related knowledge is extremely wide, the distinctive factor that separates a real expert from a senior developer is talent.

A computer programmer is similar to a soccer player or a musician in the sense that for the vast majority of them eventually are reaching a plateau that is impossible to penetrate.  More than anything else, what separates an average from a very good and a very good to a real expert programmer  is talent.

Please note that I have no intention to diminish the importance of knowledge and experience; quite the opposite I believe that both are needed but they are not sufficient unless they are compensated by the required natural talent.  The view that I want to underline is that the distinctive factor when it comes to software development, assuming of course the necessary level of knowledge and experience is without a doubt  the talent of the developer more than anything else.

Of course, I have to make it clear here, that similarly to any other kind of  a product having a large enough budget is also very important for the success of the project.  No matter how good and talented the developers are, if they are work on a poorly funded project, chances are that the produced product will not be a of the highest possible quality.  Obviously the reason why this will happen, lies in the fact that the insufficient funds will create pressure for quick and dirty solutions that will not be able to evolve successfully and serve their purpose for a relatively long period.

Leave a Reply