Update: some readers have pointed that I’m not using ‘average’ ‘median’ and ‘Arithmetic mean’ correctly. Sometimes we use ‘average’ as ‘mean’, and this is not exact. I have also removed the chart: I think average should read ‘arithmetic mean’. You can still check the chart in the original link. Thanks Pedantic ass.Update2: I have modified phrases using ‘average’ when I meant ‘ordinary’. Not the same thing, but can relief the confusion.
A couple of months ago I read this blog entry: Most people are below average. This assertion is wrong: Most people are below the ‘arithmetic mean’, as he says. This article basically assumes something everybody in the industry knows: star performers are ‘rara avis’ and most of developers performs below the ‘arithmetic mean’.
Taking these assumptions to the real life, it means that star performers seems to be much, much more important than ordinary performers. Why? Because a team of developers with ‘mean’ = X, does not perform as much as a team of developers with ‘median’=X, where ‘mean’ and ‘median’ is the ability to build software, and X is a value to measure this skill.
Several years ago, a CIO from a startup company described star performers and ordinary performers like ‘motorbikes’ and ‘trucks’. Motorbike takes you to the top of the hill fast, but you need the trucks to carry all the load. I have believed it for years.
But I guess I was wrong: ‘trucks’ are irrelevant. ‘Motorbikes’ are crucial.
I took a project we finished recently, and I make a little exercise of ‘post mortem’ analysis. I decided to choose Line Of Codes and CVS ownership to measure the activity in the project of each developer. Be aware of the fact that LOC and CVS ownership are counted once the project is finished: so LOC are ‘real’ lines of code, after the Quality Assurance process.
So, on average, each developer had coded 24000 LOCs a year. That’s 3.5 times the average performance of a Java Developer (7000 LOCs a year). What a figures! What a team!
But obviously, developers performs differently. So analyzing the ownership of the code, I found out that best developer performed around 35000-40000 LOCs a year, and the less performing 7000-8000 LOCs a year.
So some developers can deliver 5 times more code with the same quality. Following a simple rule, it means I should pay them 5 times more than the average developer. Can I pay it? No, I can’t. Nobody can.
So, Top Developers are not paid enough because his performance is compared with the ‘mean’, or even worse with the ‘median’. Or, Ordinary Developers are paid too high, because the same reason.
I think this is one of the reason good developers are frustrated with his job: they compare themselves with the ordinary developers, and they feel something isn’t fair. They do more than the rest, they usually take the risks of the project, but the reward does not reflect the effort. Other professionals that outperform their colleagues can get the money they deserve (architects and lawyers, for instance), but Software Engineering seems to be a complete different world.