All software projects face the challenges of diverse distances -- temporal, geographical, cultural, lingual, political, historical, and more. Many forms of distance even affect developers in the same room. The goal of this book is to reconcile two mainstays of modern agility: the close collaboration agility relies on, and project teams distributed across different cities, countries, and continents.
In Agile Software Development with Distributed Teams, Jutta Eckstein asserts that, in fact, agile methods and the constant communication they require are uniquely capable of solving the challenges of distributed projects. Agility is responsiveness to change -- in other words, agile practitioners maintain flexibility to accommodate changing circumstances and results. Iterative development serves the learning curve that global project teams must scale.
This book is not about how to outsource and forget your problems. Rather, Eckstein details how to carefully select development partners and integrate efforts and processes to form a better product than any single contributor could deliver on his or her own. The author de-emphasizes templates and charts and favors topical discussion and exploration. Practitioners share experiences in their own words in short stories throughout the book. Eckstein trains readers to be change agents, to creatively apply the concepts in this book to form a customized distributed project plan for success.
Review By: Matt Gelbwaks 03/21/2011Distributed development needs clear definition and rationale. Do it because talent or knowledge is dispersed or because, through acquisition, teams have grown beyond borders, but do not do it because you think you will reduce costs. Initially, it is true, the per-head average cost will be less through distributed development or outsourcing of any kind; however, the communications, tooling, technology, and travel costs will all be substantially higher.
This said, if you find yourself needing to do distributed development, agile will help you reduce risk, increase accuracy, establish predictability, and reduce costs over traditional or prescriptive methods, CMMI or not.
And, this book will tell you how to do it.
This is Jutta Eckstein’s second book on distributed agile. This one is a great companion for someone starting to work in a distributed agile environment or seeking to determine why theirs is not working as well as they might have expected it to. It is written in a way that is easily understood and can be read from cover to cover. It can also be read as you would a cookbook—skipping through to find the information you need, when you need it, to address whatever question is germane to you right now (e.g., Do I roast chicken covered or uncovered? How do I establish a project heartbeat across multiple continents?).
Jutta goes to great lengths to cover the reasons for moving focus from distributed centers to distributed center and expresses the value in face-to-face time in all aspects of the project. The one aspect that I was just a little disappointed in was that she did not offer an argument to help the reader with convincing management that a larger travel budget would be valuable. Many distributed organizations I work with assume they will be able to substitute technology for travel, but the issue of time zones often is forgotten. Without a good, relativistic portal mechanism, technology limits you to asynchronous communications from one side of the world to the other. Jutta suggests a number of reasonable alternatives that help in this arena. It still would be extremely valuable to have some help with making the argument for personal interaction over tools and technology. Nevertheless, this is the only flaw I found in a rather enjoyable read, well punctuated with true-life callouts from others similarly versed in this aspect of agile development.
Here is a book I would certainly recommend to my distributed clients or even to my clients thinking about becoming distributed, perhaps as a cautionary tale.