Lately, I’ve been talking with software testers and developers about software methodologies, and I’ve noticed the Agile vs. waterfall camps are very divided.
Miss Manners will tell you to stay away from controversial topics, such as politics or religion, when you’re meeting a new acquaintance. Some people have such strong opinions that they have a hard time discussing them without getting into a heated debate. I’m sure you could add many things to that list. I’ve known sports fans — or are they fanatics? — who have had such heated arguments that nacho wars are a real danger at Super Bowl parties.
And geeks? What do we get all hot and bothered about? All kinds of things. Techies argue about operating systems, tools, databases — just about everything — each certain that their way is the right way. I’m amazed at how personally people can feel about these things!
Yes, the Agile-versus-waterfall debate can be added to the list of controversial things that geeks have strong opinions about.
Many groups are convinced that Agile is the best methodology for any type of development effort. Others feel it works well for small projects, but not for large enterprise development projects. There are even some that speak out against Agile. Software pro, blogger and self-proclaimed software entomologist Dave Whalen makes no secret of his feeling that the Agile movement can be like a cult. On his blog, Whalan complained:
“Like most cults, if anyone dares to have a different opinion or refuses to drink the Agile Kool-Aid, the true-believers will rally their masses and crucify you…Don’t get me wrong –I like Agile. It’s a great process. It works well in SOME, very narrowly defined, situations. NOT every situation!”
I found this “Agile Made Simple” video on YouTube by Rodrigo Coutinho that I think does a great job of explaining the difference between the two models.
[kml_flashembed movie="http://www.youtube.com/v/rhIu-hjvxc4" width="425" height="350" wmode="transparent" /]
As I responded to Dave in his post about cults, my opinion is that not any one methodology is the right answer to every software development project. Some of the considerations I think are important:
- Size of the project: I would think smaller projects cater more to agile, because the smaller the team, the easier to collaborate.
- Compliance/regulations: Some government projects may require documentation and processes that are not always present with Agile.
- Risk of project: High risk, life-and-death type projects require more rigor and discipline than low risk.
- Existing processes, tools, methodologies, team expertise: There’s always a learning curve and pain involved in changing the way things have been done. Change is good, but might want to take baby steps, depending on the criticality of the project.
- Team mindsets: Is the team excited about trying agile? It seems it would be a lot more effective if there was buy-in rather than mandate.
I asked an agile expert whether there were certain types of projects, such as the ones I mentioned above, that might be better being done using a waterfall approach. Her opinion was that all projects would benefit from using an agile methodology. She felt smaller, iterative releases would always be an advantage.
SearchSoftwareQuality’s contributors have been participating in the debate, as well as offering useful information about Agile and waterfall. They’ve covered such topics as waterfall versus iterative development misconceptions and if Agile and traditional project management can co-exist. Also, in two articles, software testers Matt Heusser and Lanette Creamer debated the differences between test automation and test-driven development.
When deciding on a methodology, there are a lot of things to consider, a major being choosing Agile, waterfall, or something in between. Which is right for you and why? And no virtual nacho-throwing for those who disagree!