CASE STUDY: Band XI Distributing Agile Development

[article]
Summary:
Software development organizations have evolved to meet the challenges put forth by ever increasing complexity in both the problem spaces and the technologies applied. Unfortunately, the right people for a project may not all be located in the same city or at the same time.

Software development organizations have evolved to meet the challenges put forth by ever increasing complexity in both the problem spaces and the technologies applied. Unfortunately, the right people for a project may not all be located in the same city or at the same time. The skill, experience, and ethics of personnel have risen to the top of our list of essential factors when assembling teams. Our search for optimal teams has gone global and we need to find ways to work together in the face of these new challenges. At Band XI, we have adopted and adapted agile methods to make high-performing distributed agile development teams a reality.

A Short Story
Over the past twelve years, I have engaged in agile development practices with a twist - working remotely from a home office. Given the proscribed strictures of such agile practices as extreme programming and daily scrums, this would seem to be an outrageous claim. One assumes that a distributed team cannot perform in an agile manner. Yet, I would argue that only agile methods can be adapted for successful distributed teams. A couple of years ago, I assembled a team that had no more than three team members in any single location, and was globally distributed in Seoul, Turin, Toulouse, Hartford, Phoenix, Grand Rapids, and Raleigh. We employed a loose collection of agile practices, scheduled periodic face-to-face meetings and successfully delivered the project.

Early in 2004, we had written a proposal to construct an embedded Java reference implementation for an automotive telematics (vehicle based information systems) {sidebar id=1} client located overseas. Although we expected the decision to be made within sixty days, it was actually six months before the proposal was accepted and the project initiated. In the interim, some of the key people we expected to work on the project had engaged on other projects and we needed to find comparably skilled folks. Choosing to have people with the right skills and experience took precedence over simply choosing people because of where they were located. As a result, we had a team that spanned the globe. Fortunately, the team members had all worked together in various combinations on prior projects.

We punctuated our work effort with monthly weeklong workshops where we would all gather together. The effort was book ended with kickoff and closing workshops, but the interim workshops addressed critical technical risk items and enabled the team to spend some time together after hours in a social setting. The most effective teams demonstrated a capability to both work hard and play hard together. That provided a solid foundation for the relationships that could enable effective and candid communication. Everyone on the team had significant practical experience with the tooling and technologies that we used, as well as the pace and style of working in a continual release mode.  Below, I briefly outline the key elements that enabled us to successfully work as a team, even as we were distributed across continents and time zones.

Enabling Technologies
As a small company, we love free software. Therefore, we look to the open source community to find tools that help us communicate and work better together.  We are happy to use the lowest tech option that works. We leverage the pre-existing electronic social interaction skills with which most software developers already exhibit great facility - email, instant messaging, voice over IP, and code itself.

Integrated Tooling : Using a fully integrated tooling platform, such as Eclipse, for our Java development enables us to share work artifacts quickly and easily through online CVS and Subversion repositories. Incremental development and

About the author

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, TechWell.com is the place to go for what is happening in software development and delivery.  Join the conversation now!