- The Challenges of Offshore Development
- How Agile Concepts Make Offshore Harder
- How Agile Concepts Make Offshore Easier
- How to Succeed at Offshore Agile Development
- Is it Worth the Effort?
How Agile Concepts Make Offshore Easier
So far the picture looks pretty bleakoffshore is wrought with challenges and parts of agile development appear to make offshore even harder to manage. Fortunately, some aspects of agile development directly address and may even eliminate some of the problems posed by offshore.
If practiced with discipline, continuous integrationthe process by which developers integrate their code and build the entire system whenever they have made changesshould reduce or even eliminate configuration-management issues. Our teams working in India check code into the same repositories as our U.S. teams. Check-in is preceded and followed by build verification tests (unit tests) as well as automated functionality testing. When a test fails, a build fails, and it's up to the developer who broke the build to fix itno matter where in the world he or she sits. The value of continuous integration is that it solves small integration headaches immediately instead of trying to solve huge ones at the end of the project. Configuration management of offshore development becomes almost a non-issue.
Most agile methods emphasize the importance of having the people who will perform the work estimate the work. Ideally, agile project plans are built by rolling up the aggregate estimates on a set of featureswhere the development team has provided the estimates. Even under less than ideal conditions, the project plan for an agile project should at the very least be strongly influenced by the opinions of the development team. A project run by an autocratic project manager who estimates for his or her team is not an agile project. If the project team stays true to the values surrounding project and task estimation, they will certainly reduce the risk of drastic disconnects between customers, project managers, and the development team on projects with an offshore component.
Iterative development with frequent delivery to the customer is a core practice in agile software development, and one that directly addresses one of the major challenges of offshore developmentdecreased visibility into project status. Frequent deliveries allow project managers, customers, and users to measure project progress by the amount of working software they have received. During a typical "documentation review" on a project, a group of users sitting in a room can be overwhelmed by an avalanche of documentation that doesn't necessarily represent much progress toward delivering a working system. Give that same group of users access to a machine where they can test your last months' worth of effort, and you'd better believe that the project manager, customer management, and everyone else in the company will know at a very great level of detail how much was really accomplished in that month!