Developing software isn't just a linear stream of ideas to lines of code. If a 5 minute discussion with another team member leads to a design that will save a week of refactoring later on, then the team with those 2 people is now MORE than those two people would have done if you cut off all communication between them. Or in other cases, another set of eye balls will find a bug in 1 minute instead of half a day.
Heterogeneity, even among very skilled software engineers, exists. Thus you want people whose skills and weaknesses blend, so that the weaknesses of team members can get helped out by others on the team, and thus increase productivity.
Comments
Developing software isn't just a linear stream of ideas to lines of code. If a 5 minute discussion with another team member leads to a design that will save a week of refactoring later on, then the team with those 2 people is now MORE than those two people would have done if you cut off all communication between them. Or in other cases, another set of eye balls will find a bug in 1 minute instead of half a day.
Heterogeneity, even among very skilled software engineers, exists. Thus you want people whose skills and weaknesses blend, so that the weaknesses of team members can get helped out by others on the team, and thus increase productivity.