I’m frequently (weekly) asked by clients I visit, “Where doesn’t an agile development approach work?” Or, they tell me an agile approach won’t work in their environment for numerous reasons.
In my experience, general agile development practices are superior when the problem domain is complex and/or dynamic, and solving the problem benefits from a more empirical approach. This is true even with distributed teams.
This is because in dealing with complex problems, the natural cognitive approach for human beings is to decompose the problem into smaller pieces, and work to understand the smaller pieces so that those pieces can enable an understanding of the whole problem domain.
The amusing thing to me is that this behavior happens within the phases of sequential, phase-based approaches to software development projects, yet the overall approach ignores this and tries to freeze the dynamic nature of the problem domain. Agile project management expresses this idea up through its execution approach with the inspect and adapt cycle.
Does this require more communication/collaboration? Yes. Is this an issue with agile processes? No. The same conversations need to occur to understand and allow requirements to evolve. It is a choice by the organization undertaking the problem whether they have the conversations or not.
If you have a problem domain that is simple, one where using the same sequential process results in getting the same outcome that is within your acceptable measure of quality, then use that approach.
I was just recently at a client that stated that agile wouldn’t work for them because the high degree of complexity in their problem domain and because of their distributed team nature. They continued to explain that using waterfall enabled them to not have to communicate as much
Waterfall software development methodologies allow people to sweep all types of process, organizational and interpersonal dysfunction under the proverbial rug and defer the problems this causes until the “death march” — or in the worst case, after the so-called value has been delivered to the customer and they find dysfunction in terms of their needs not being met or poor quality.
So the next time you hear this question, consider whether the issue is the approach, or because of lack of discipline, lack of competence, organizational dysfunction or interpersonal dysfunction within your team; all of which, agile approaches are brutally blunt at pointing out. Many just don’t want to deal with the impediments and feel more comfortable “sweeping them under the rug”.