Elements of a management methodology related to globally distributed software development are presented in this paper. The methodology is based on mechanisms selected to address commonly identified coordination challenges: collaborative planning, visibility of work, and knowledge management.
Coordination challenges are considered to be dependencies in multiple dimensions: a flow dependency (one activity produces output needed as input by another activity); a resource-sharing dependency (based on sharing limited resources); and a fit dependency (at the lower level, multiple activities produce outputs that have to fit together, as in integration stages).
The approach proposed by Mohan and Fernandez is based on using granular (detailed) deliverable-based work breakdown structures (along management, engineering, and collaboration facets) and reusable knowledge (patterns and standards), and on addressing coordination of activities with standardized mechanisms. Activities are tied with recognized inputs and process tasks are defined to create outputs whenever feasible; whenever explicit outputs are harder to define or activities span multiple deliverables (such as integration), activities include status reporting and instantiation/use of explicit coordination mechanisms.
In addition, the paper discusses observations from case studies that use the methodology. Among the findings are the following observations:
- (a) Transition to effective collaboration platforms was more challenging than training and transition to a new management methodology.
- (b) Email was found to be an ineffective mechanism in bringing new team members on board; storing contextualized knowledge in granular workspaces, while keeping general project context information in a Wiki, is up to three times more effective, measured in hours of communication-intensive work needed to bring new team members to the desired productivity level.
It is worth noting that the time calculation excludes the time the new team member needs to read the posted background information; that is, effectiveness is not expressed in cost savings, but rather in coordination-time savings.
It is my conjecture that the applicability of the approach is limited to situations (of large and/or complex software products) for which a detailed product architecture and a standardized set of mature processes are feasible and available, and the intended use of coordination tools supporting distributed development is affordable. The approach proposed may not fit situations intended for agile development methodologies.