Agile Fallacies
Based on reading and hearing people’s (mis)interpretations of Agile software development, here are some Agile fallacies I have seen, both from detractors and supporters of Agile:
Agile means chaos. On the contrary, being Agile requires a development team to be highly organized and disciplined in how they go about their work, and it results in a highly predictable development process which will automatically drive towards maximizing value to the customer. When someone writes chaos I assume what is being misunderstood are the requirement of an Agile team to be self-managing, and the much diminished amount of documentation required up-front.
There’s no design. There is as much design as a correctly implemented Waterfall process, except Agile design work is spread throughout the duration of the project and is performed on a “just-in-time” basis, thereby leveraging the advantage of having as much knowledge as possible at the time any piece is designed.
Agile is easy. Agile development processes tend to be lightweight and simple, but that doesn’t make them easy. It requires diligence and effort in order to be “agile”, and to correctly follow a methodology such as Scrum.
An interesting observational side note combining the first and third of these is that many people I see criticizing Agile methods as chaotic seem to prefer more up-front design, i.e. the waterfall model. I believe that in order to provide a similar level of confidence in creating and delivering a product to specification and within reasonable timescales to one developed Agile, the Waterfall proponent would have to generate highly detailed requirements, risk analysis and design documents, break out COCOMO, create all the Gantt charts to match the milestone delivery requirements, write full acceptance and unit test plans, etc… I suspect that those who call Agile”chaotic” or “Cowboy Coding” aren’t doing Waterfall themselves, and could possibly apply those same terms to themselves. I further suspect that correctly following any methodology is difficult (whether or not that methodology is useful), and that Agile methodologies are probably easier to adhere to than other methodologies.