{"id":174,"date":"2017-09-16T04:59:08","date_gmt":"2017-09-16T04:59:08","guid":{"rendered":"http:\/\/96.126.106.214\/?p=174"},"modified":"2023-11-26T01:01:21","modified_gmt":"2023-11-26T01:01:21","slug":"talent-is-the-best-metric-to-measure-a-software-developer","status":"publish","type":"post","link":"https:\/\/codingismycraft.blog\/index.php\/2017\/09\/16\/talent-is-the-best-metric-to-measure-a-software-developer\/","title":{"rendered":"Talent is the best Metric to measure a Software Developer."},"content":{"rendered":"<p>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.<\/p>\n<h2>Why Projects Fail<\/h2>\n<p>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, \u00a0and mismanagement in general.<\/p>\n<h2>Metrics<\/h2>\n<p>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.<\/p>\n<p>Project management methodologies like agile, scrum or XP for example, encourage the creation of a wide range of \u00a0metrics 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.<\/p>\n<p>I believe that the adoption of metrics became so popular, mainly because in corporate environments, managers tend not to have a \u00a0technical background and lack the necessary experience to recognize development talent. Instead, \u00a0they try to overcome their lack of technical ability, relying on a list of metrics that try to measure \u00a0the 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!<\/p>\n<p>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. \u00a0A financial company for example, views software development as a utility that serves the main purpose of operation which can be stock trading or forex. \u00a0This means that the most senior positions of the company will most likely be occupied by economists, traders or risk experts while the \u201ccomputer\u201d 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.<\/p>\n<p>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.<\/p>\n<p>The artistic nature of software development makes the attempt to \u00a0decide 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.<\/p>\n<h2>Development Speed<\/h2>\n<p>Deciding on \u00a0the quality of a developer based on how quickly he delivers a working solution is one of the most common fallacies; \u00a0although it is certainly important, development \u201cspeed\u201d is also overestimated and not necessary the best metric to evaluate the performance of a developer.<\/p>\n<p>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 \u00a0to fix as it will even require a complete rewrite from scratch!<\/p>\n<p>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.<\/p>\n<p>Development speed is tightly coupled with the nature of the project. \u00a0Any 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.<\/p>\n<p>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.<\/p>\n<h2>Software lifespan: The best and most realistic metric<\/h2>\n<p>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.<\/p>\n<p>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.<\/p>\n<p>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.<\/p>\n<p>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.<\/p>\n<p>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. \u00a0More than anything else, what separates an average from a very good and a very good to a real expert programmer \u00a0is talent.<\/p>\n<p>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. \u00a0The 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 \u00a0the talent of the developer more than anything else.<\/p>\n<p>Of course, I have to make it clear here, that similarly to any other kind of \u00a0a product having a large enough budget is also very important for the success of the project. \u00a0No 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. \u00a0Obviously 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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"footnotes":""},"categories":[6],"tags":[],"class_list":["post-174","post","type-post","status-publish","format-standard","hentry","category-programming"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":64,"url":"https:\/\/codingismycraft.blog\/index.php\/2015\/10\/07\/metrics-converted-to-goals-lose-their-focus\/","url_meta":{"origin":174,"position":0},"title":"Metrics converted to goals lose their focus","author":"john","date":"October 7, 2015","format":false,"excerpt":"One of the common discussions I have had with my colleagues over the last years was about the creation of metrics to express the productivity and the quality of an individual developer. At first glance, the idea of expressing the ability of a programmer, with a small set of easy\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":52,"url":"https:\/\/codingismycraft.blog\/index.php\/2014\/05\/28\/a-wrong-metaphor-about-software-development\/","url_meta":{"origin":174,"position":1},"title":"A wrong metaphor about software development","author":"john","date":"May 28, 2014","format":false,"excerpt":"A very common metaphor used when we talk about software development is to compare it with home building. Although there are some commonalities, software development differs from home building to the extend of considering the metaphor to be completely wrong! Terms like scaffolding, foundation, architecture any many similar, have become\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":68,"url":"https:\/\/codingismycraft.blog\/index.php\/2016\/05\/25\/falsifiability-and-unit-testing\/","url_meta":{"origin":174,"position":2},"title":"Falsifiability and Unit Testing","author":"john","date":"May 25, 2016","format":false,"excerpt":"Without a doubt, Test Driven Development (TDD) lies in the core of my software development approach. \u00a0I have been a very early adapter of automated testings since my C++ and C# days and always felt very enthusiastic about their impact on the quality of the software. I have to admit\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":60,"url":"https:\/\/codingismycraft.blog\/index.php\/2015\/01\/14\/deadline-blues\/","url_meta":{"origin":174,"position":3},"title":"Deadline Blues","author":"john","date":"January 14, 2015","format":false,"excerpt":"Please, do not make any evening plans until the end of the sprint I remember being a member of a project that was obviously going to miss the promised deadline and the project manager's reaction was to try to extend our working hours to the point of not having any\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":46,"url":"https:\/\/codingismycraft.blog\/index.php\/2013\/05\/01\/be-extra-cautious-of-early-decisions-in-your-development-cycle\/","url_meta":{"origin":174,"position":4},"title":"Be extra cautious of early decisions in your development cycle","author":"john","date":"May 1, 2013","format":false,"excerpt":"I do not see how can anyone disagree with The McDonald Theory which states that initiating a process is more important than finding the ultimate solution at once. In deed this is how science and technology are progressing and naturally the same principle applies to any human activity which can\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":56,"url":"https:\/\/codingismycraft.blog\/index.php\/2014\/06\/17\/lessons-from-a-pyramid-foreman\/","url_meta":{"origin":174,"position":5},"title":"Lessons from a pyramid foreman","author":"john","date":"June 17, 2014","format":false,"excerpt":"A few thousand years ago in the desert of Giza, the construction of one of the most ambitious constructions ever was initiated. Hundred of thousands of workers were involved in what is today know as the Pyramid of Giza which remains an eternal monument of the creativity of the human\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/codingismycraft.blog\/index.php\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts\/174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/comments?post=174"}],"version-history":[{"count":1,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts\/174\/revisions"}],"predecessor-version":[{"id":175,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/posts\/174\/revisions\/175"}],"wp:attachment":[{"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/media?parent=174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/categories?post=174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codingismycraft.blog\/index.php\/wp-json\/wp\/v2\/tags?post=174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}