offshore.Large vendors employ thousands of programmers, and it is very likely that you will be able to staff an Agile project with experienced people.Most successful Agile GDM projects have a strong mix of architects, client representatives and programmers both onsite and offshore.Offshore client representation is crucial to ensuring that any requirements uncertainties are cleared up on the fly. Resources who have worked on the client's onsite locations for a considerable time and have a good understanding of the client's environment can relocate and act as client proxies at the offshore locations.
By developing onsite and offshore, an Agile team is able to realize incredible productivity.The onsite team codes all day, updates the offshore team and then goes home.While the onsite team is asleep, the offshore team is programming.You can start to see how the GDM provides a little extra horsepower to a project.Though productive, this simultaneous coding demands a heavily automated development environment for configuration management, code merge, automated unit testing, builds and delivery. Automation eases and speeds up the development, and is a critical component of a GDM Agile project. In one large project, there was code released into production every 2 weeks. Once coding was complete, automated scripts built code, deployed code, and ran regression tests in order to have minimum human intervention before releasing the code into production. This process was repeated every fortnight without issues. In one of the other projects with lesser automation, code was manually checked into configuration management, manually checked, deployed and tested. Out of the 2 week sprints, these manual tasks took considerably more time-reducing the throughput of the functionality delivered in a sprint.
Creativity in communication is another defining feature of well-run GDM Agile projects.Traditional Agile development is built around an "Agile" room-a central programming location where all developers, client representatives, architects and testers reside.A GDM project will have two Agile rooms, one offshore and one onsite.To ensure that both Agile teams are on the same page, constant and painless communication becomes imperative.We often used instant messaging as a means of inter and intra-scrum communication; IM is easy, free, and quick.Wikis are another great tool, as are web conferencing and videoconferencing.These remote tools help ensure the diffusion of information between team members separated by multiple time zones.
A more traditional tool, teleconferencing, came in handy on a number of occasions.In our effort to beat the 6-month deadline, we decided to speed up the development process.Eschewing the normal two-week release cycle, we elected to release a new piece of code every week, utilizing the onshore and offshore teams to the full advantage. With both teams working, coding progressed nearly 24X7 pushing the envelope for the number of functions delivered in a week. As one can imagine, a number of quality defects found their way into the code. We combated these defects by conducting teleconferenced team-testing, an effective though exhausting technique.In teleconferenced team testing, team members dial into a tele bridge with live meeting and test the software during the session, each member focuses on a particular function and shares results as the project progresses. In one of the projects where we used this technique, higher defect detection rate was achieved with many defects found in only an hour of conferencing.
"So...I've got a project..."
Software development is a constantly evolving and self-improving process.New processes and approaches to development can prove to work exceptionally well in certain circumstances.That is important to understand-one size does not fit all.Every project is unique, and in order to be successful every project needs the right mix of intelligent developers, dedicated clients, and proper planning.