Frederick Boulanger picked up on our earlier article about different application development outsourcing models, and extended it with his own good ideas– making it easier for teams to decide which outsourcing model is right for them. Frederick identifies the three key factors that determine which model is most likely to succeed for a given team. They are control, coordination, and communication. Anyone else want to join in? Blog away, and trackback or comment here.
Are we outsourcing turn-the-crank type activities? What about tasks that require only entry-level skills? Frederick points out that there is a continuum of desired control for any company or project. When we maintain as much control as possible, we only outsource very specifically defined work-elements. When we have less need for control, we can outsource more and more of the process. If we keep design in-house but outsource implementation, we still have a lot of control over the final results.
Coordination of activity is central to the success of any team. When everyone on the team is in the same room, coordination almost happens automatically. Having everyone in the same building helps, and having everyone in nearby timezones is the norm these days for non-outsourced projects. A lot of people treat outsourcing as synonymous with offshoring – the term for outsourcing to teams on different continents.
Technology has eased the pain of a geographically distributed team – instant messaging, email, collaboration applications, and video conferencing have reduced the need to travel, and made coordination easier for dispersed teams. Offshoring also creates temporally distributed teams, as team members are working in very different time zones. When team members are eleven and a half hours out-of-phase with each other, coordination becomes much more important.
Asynchronous teams also face an efficiency challenge. The typically iterative tactical communication among team members may only take minutes when folks are simultaneously working. It can take a day per iteration when the communication happens only through email (with a multi-hour delay between each exchange of information).
Defining the communication process our team will use is important. Documenting this process helps to set expectations for the outsourcing team, and is required for most CMMI levels.
Precisely defined tasks (the turn-the-crank variety) require far less iterative communication than more strategic activities like validating requirements or architectural design. Offshoring projects will be more effective initially when the majority of the outsourced work is partitioned into narrowly scoped deliverables.
After developing a good relationship with our outsourcers, and working the kinks out of our communication process, we can begin to relinquish control by outsourcing work with greater scope of impact. I’ve had excellent success in doing this by leveraging documentation to communicate with overseas team members. When giving them greater responsibility, I would require that they document their design and their test design for review prior to any implementation work. This dramatically reduced the effect of ambiguity in the requirements, while implicitly providing an active-listening feedback loop. Most often, misinterpretation of requirements resulted in errors in the test designs. It also had the side benefit of helping my teammates grow their skills more quickly as it forced more critical thinking to occur early in their process.
Communication is important to any outsourcing effort, and increasingly critical when relinquishing increased levels of control. Process execution and coordination determine how repeatably we can communicate at any level of control.