No matter the reason, the last decade or more has seen the shift of engineering development becoming more distributed across multiple locations, time-zones and skill sets. Demand for software development skills has created wage inflation, forcing further dislocation, and has lowered the mix of skills in many projects.
These factors have caused many complexities in the development of software and high tech products in general. No matter how you slice it, convince yourself otherwise or talk yourself in to plans to manage it — unless you are prepared to recognize that the dynamics of your development capabilities are going to change and get significantly more complex, then you are going to have many challenges maintaining your software offerings.
Agile development depends on iteration, failing fast and making quick but informed decisions. The most effective way to do that is to have few, highly skilled stakeholders co-located. The least effective way is to have large and junior teams in multiple locations split across different time zones.
This is a completely unsceintific chart I made up to relate team size, relative locations of team members and productivity.
And so, in order of overall preference…
- A small team of very experienced people in one place is likely the most productive organization. Location facilitates communication and experience allows for flexibility, creativity and rapid turnaround. You should favor 8 or 9 heads over 2 or 3 in order to get the breadth of skill sets as well as a community large enough to discuss, explore, challenge and co-operate.
- With much more dis-located individuals you have the challenge of time and distance. No amount of Slack, Google Hangouts, GitHub or Trello is going to overcome face to face collaboration. For sure — these tools are essential for dis-located teams, but the huge number of missed communication opportunities weighs the overall productivity down. Given the large amount of dislocation, perhaps slightly smaller teams will be more successful in overcoming communication issues — particularly if they can be contained to common time-zones.
- I rank Large and Junior over #4 in terms of productivity. This is probably controversial. My logic is that a large and junior team IN THE SAME PLACE can, eventually, overcome their lack of experience through collaboration, team working, reviews and enough support from the organization to allow for learning, experimentation and failure. Rarely that kind of support is present.
- Medium sized teams of, say, 20 or so people in more than 3 locations with a mix of highly skilled and very junior team members is a very complex situation where it is hard to have great productivity. It is a fairly common setup however. With teams like this you need to be prepared to spend time and energy to ensure CI. You need to have the best communication tools, network connectivity and tool flexibility because sharing data, simple task management, screens, high quality voice and video are essential to reduce as much friction as possible. You need people who can work unusual hours and you need policies that support home-working with flexibility human resource policies.
- Don’t bother.
What scenario do you find works best? What have you learned about the different types of organizational mixes arising from off-shoring.