In the world of software engineering, traditional input-output relations no longer apply. As Joel Spolsky shows by analyzing software development data from Yale, software quality and development time are completely unrelated [1]. It becomes even more drastic when considering Brook’s Law, which states that adding manpower to development teams is more likely to lengthen projects rather than shortening them. Which is only partly due to coordination overheads.
A meta-study of more than 4000 software projects by Quantitative Software Management compared the productivity of small teams with less than five and large teams with more than twenty software engineers and concluded that the productivity per software engineer was 4 times higher among the small teams [2].
On top of the paramount effects of team sizes, there are enormous differences in the abilities of software engineers. In his article “Hitting the High Notes” Joel Spolsky points out that no matter how many mediocre opera singers join forces, they will never hit the famous high notes of Mozart’s aria Queen of the Night [1]. Five decent software engineers will not come close to the outstanding software of world-class engineers.
The good news is, most organizations do not desperately require world-class engineers since their software solutions and technological environments are not as complex as the ones of software companies, just like most theaters don’t play Queen of the Night.
Nevertheless, this highlights the significant differences in the capabilities and dexterity of software engineers and the quality of the resulting value. Even between average and skilled engineers, there are drastic differences, which can not be made up for by adding another mediocre engineer to the team.
Whether companies are still stuck in this obsolete way of thinking can often be observed in their choice of names for this specific role. Organizations that talk solely about software developers or worse, programmers, have usually not recognized the importance of the software engineer role. Programmers are thought of as interpreters that are simply translating requirements into code whereas software engineers are critical to the design and overall business value of software solutions.
[1] Joel Spolsky. “Hitting the High Notes”. URL:
https://www.joelonsoftware.com/2005/07/25/hitting-the-high-notes/
[2] Quantitative Software Management. “Top Performing Projects Use Small Teams”. URL: https://www.qsm.com/blog/2012/top-performing-projects-use-small-teams