The overview speaks well of agile practices, with the possible exception of John's answers to the question "When should I avoid using agile programming techniques?" John gives four situations in which a managers should avoid adopting agile methodologies:
- What Are the Business Reasons for Using Agile?
- What Makes Agile Programming Different?
- Won't I Have to Do a Lot of Extra Work?
- What's Different, Besides Working in Iterations?
- Won't Working Like this Change Our Corporate Culture?
- When Should I Avoid Using Agile Programming Techniques?
- Is There Just One Kind of Agile Programming?
- Creating a huge application that can't be broken down into small pieces
- For applications that require a distributed development
- Building a mission-critical application where every single piece has to work at the outset
- If the company has a command-and-control management style
Your section on "When Should I Avoid Using Agile Programming Techniques?" is something I would've expected to see in 2001, not in 2007... the XP/Agile world has utterly shattered ideas that XP/Agile doesn't scale past 20 people or that it doesn't work on distributed projects...
Industrial Logic (my company) does 100% of its programming using distributed XP and we're quite happy with the results. We do distributed planning sessions using real-time planning software (called ProjectCards), we use Skype to have voice and video conferences, we use VNC to do desktop sharing, and we all integrate into a shared repository. It works so well that now we don't think about geography when we hire people, since we know that we can do our distributed agile process with great people from around the globe.
A strong rebuttal. However - Joshua's experiences notwithstanding - any organization adopting agile practices for the first time shouldn't underestimate the difficulties of doing agile with a distributed development team, or applying agile to build a large, mission-critical application. In particular, those seeking the adoption of agile within their organization should pay heed to John's fourth example - the company with a command-and-control management style. This is a subset of a larger problem: trying to foster open and honest communication within an organization where open and honest communication isn't valued. Changing the value system of an organization demands efforts towards community development, which is ordinarily beyond the scope of any but the most ambitious of agile teams.