- a conduit is removed, the flow stops. The conduit model simply places a façade of communication over the development effort. In contrast, a facilitator's job is to create and open sustainable communication channels.
- Iterative Development. It is not surprising that iterative development is a must-have practice for distributed agile development. But, as it is such an important concept to agile development it can't be taken for granted. It must be understood that iterations have specific goals of fully-functional, tested deployable code, and that they must be monitored and tracked. Measures such as velocity should be collected and monitored so that trends in productivity and results can be understood and adaptations made.
- Client Collaborator Drives Iteration Demos. An interesting practice that has emerged as very beneficial is having a customer or client run the iteration demos. This tends to lead to a much more collaborative effort between the client, customer representative and the offshore team.
- Global Scrum Meetings. Global Scrum or stand-up meetings tend to be less fluid than co-located Scrum meetings, but they are still essential. This is due in part to language barriers and communication tool limitations. Furthermore, it is essential that the client be invited to every one of the Scrums. What has also emerged as a strong practice is the capturing of notes from the Scrum meetings and making them available. The point is not to spend time on the notes but rather to quickly capture the highlights and obstacles if identified.
- Knowledge Transfer Phase. At the time the offshore team engages (typically late elaboration or early construction, if mapped to the UP phases), we have found there needs to be a two- to three- week dedicated knowledge transfer phase. This isn't an iteration because the goal of a functional increment is absent. Instead, it focuses on how the system or systems fit into the organization and on domain knowledge training. Furthermore, what has been found to be most effective is reverse travel in which a client representative travels to work with the offshore team.
- Globally Visible Backlog. To assist in the realization of transparent development, visible project and iteration backlogs have shown themselves to be essential. They provide for a common focal point for the distributed team.
- On-demand Globally Visible Information Radiators. It isn't enough to have a visible backlog. There should also be information radiators of project health and progress. Trends must be visible such as how much work is being burned, discovery rates, scope changes and velocity.
- Continuous Integration. Continuous integration has emerged as an essential aspect to application development when geography and time zones are not part of the equation. With the added complexities that distributed development brings to the equation, continuous integration becomes nearly essential. The possibility of achieving around-the-clock development is next to implausible if working, tested software cannot be validated at all times.
- Leverage Testing Ability. One aspect of offshore development that has been present for quite some time is the capacity for an offshore capability to facilitate testing. The opportunity present is to leverage the testing knowledge and capacity into a cross-functional and agile development team. Testing experience exists offshore. Leveraging that expertise to include testing as a development activity has been found to be instrumental in lowering defect rates and increasing productivity.
Mapping the Practices to Principles
In the first section of this article, a set of principles were outlined as high level goals that, if achieved, can promote agility in distributed development. Following that were a set of practices that have been found to be effective in realizing these