This morning's Dilbert cartoon had me rolling. The pointy-hair boss commands Dilbert's team to start using Agile programming. In the boss's description, he states that Agile programming means "no more planning and no more documentation." The boss goes on saying that the programmers can "start writing code and complaining."
Alex Iskold writes about the Future of Software Development at Read/Write Web. There he makes a few nice points comparing the waterfall model to today's more trendy and talked about agile processes. He doesn't get into the various other software development life cycle models (SDLC) such as Spiral, Incremental, XP, etc.
In the real world, software projects have ill-defined and constantly evolving requirements, making it impossible to think everything through at once. Instead, the best software today is created and evolved using agile methods. These techniques allow engineers to continuously re-align software with business and customer needs.
Alex talks about the failures of the waterfall model, which most everyone should have learned in college or during any reading of a good software engineering book.
The only part of the article that I don't seem to grasp is the intentional exclusion of mentioning the .NET framework. Even if the author doesn't like the framework, surely it is worth a mention in his list of "modern programming languages." In his list, he only includes Java, PHP, Python, and Ruby.
A few commenters pointed out the lack of including the .Net Framework as a modern language or reusable library. David Murphy of BuzzSort wrote "On... The Future of Development" and reminded us about Workflow and LINQ (two of the newer .NET technologies).
..whilst it was an interesting read I believe the picture it left was incomplete and inaccurate.
I believe that all of the agile buzz over the last several years is just a fad and eventually the good items from the agile processes will just be commonplace in the development environment (we'll probably have a new name for it by then). Just look how some of the agile processes are now being incorporated for the masses (Microsoft Solutions Framework (MSF) for Agile Software Development, Microsoft eScrum).
I also believe that there's not one technique, model, or set of methodologies that can work for every project or team. And that it is the job of software engineers along with project managers to help focus the energies and talents of the developers and designers to make the best possible product.
Having fewer developers and a good strategy should result in better products. This is the same conclusion that Bob Warfield came to in his article titled "To Build Better Software, You Need Fewer People (But Why?)".
A few choice quotes from the R/W Web comments:
Waterfall said "I can't see anything you've described not being possible by following the waterfall method. Somehow people have turned the phrase agile development into a mythical beast capable of achieving miracles."
Paul W Horner said "Software developers have always had huge problems when working in large teams. That hasn't changed at all. In many ways Agile is just dodging the real issues."
Jimbo said "There's much more to software than web 2.0, search engines and social networking sites."