Martin Fowler recently published CheaperTalentHypothesis on the cheaper cost of more expensive programmers. I apologise for hacking this down
Naturally better programmers cost more, either as full-time hires or in contracting. But the interesting question is, despite this, are more expensive programmers actually cheaper?....
.....If you can find a factor-2 talented programmer for less than twice of the salary of an average programmer - then that programmer ends up being cheaper. To state this more generally: If the cost premium for a more productive developer is less than the higher productivity of that developer, then it's cheaper to hire the more expensive developer. .....
There are some notable consequences to the the cheaper talent hypothesis. Most notably is one that it actually follows a positive scaling effect - the bigger the team the bigger the benefits of cheaper talent. Let's assume...a team of ten talented developers ... twice as productive as the average ... assume that a rival team of average programmers would be a team of twenty.
... Software development depends very much on communication between team members. .... As a result productivity scales ... I'm inclined to guess at [productivity] being closer to the square root. If we use my evidence-free guess as the basis then to get double the productivity we need to quadruple the team size. So our average talent team needs to have forty people to match our ten talented people - at which point it costs twice as much.
Another factor that plays a role here is time-to-market. ... discount the previous paragraphs, and assume the talented team is only twice as productive as the average team. ...
... the talented team wins again. They'll complete the project in half of the time of the average team, ....
What Martin hasn't covered here is the further scaling caused by offshoring. My experiences have led me to believe that there is a further productivity scaling to be gained by the trust that is implicit between the onshore and offshore components. I have been running an offshore team over the last 15 months, I have had one or two onshore contacts and 4-7 offshore team members.. At the beginning the period I was production support focused and just let them get on with it. They were inefficient. I started with a very close coupling, work was handed out piecemeal and thoroughly scrutinised on return, feedback was often pedantic with references to coding standards not being followed. However after 6 months, management allowed me to focus on Dev full time. Initially key pieces of work including prototyping were kept onshore. Overtime, Trust developed. Now whole swathes of development have been handed over from start to finish. In addition code review quality is well up, and so they now are performed at random only.
Now we come to the bit that caught my eye.
Agile development further accelerates this effect. A talented team has a faster cycle time than an average team. This allows the full team to explore options faster: building, evaluating, optimizing. This accelerates producing better software, thus generating higher value. This compounds the time-to-market effect. (And it's natural to assume that a talented team is more likely to produce better software in any case.)
This correlates with my findings on offshoring. With a team in a single time zone, the feedback cycle is much shorter. In the early days I was working from 7am till midnight trying to "extend the timezones" and get better overlap with the team members. Now I just hand over a full piece and since I trust them to come up with good solutions I can let them worry about the details in their own timezone.
Faster cycle time leads to a better external product, but perhaps the greatest contribution a talented team can make is to produce software with greater internal quality. It strikes to me that the productivity difference between a talented programmer and an average programmer is probably less than the productivity difference between a good code-base and an average code-base. Since talented programmer tend to produce good code-bases, this implies that the productivity advantages compound over time due to internal quality too.
Martin's final thoughts are on measurement, which I think is a thoroughly good idea
...At ThoughtWorks we rely on peer assessment - developers abilities are assessed by fellow team members. The result is hardly pinpoint precision, but it's the best anyone can do.
...
... I believe that if the software industry is to fulfil its potential it needs to recognize the cheaper talent hypothesis and close the gap between high productivity and higher compensation.
Oh if only :-) Sorry I was assuming I am productive there for a moment.