This post is a result of a discussion about software development methodologies, which some of the people involved were convinced that Agile was just a chaotic way of getting a software product done.
The Agile software development methodologies are often mistakenly compared to cowboy coding and related to undisciplined developers. This couldn't be more far from the truth. But before I continue, let me explain what Agile software development is.
Agile is a conceptual framework that tries to mitigate the risks in a project by developing software in a short amount of time. It's an iterative method, and each iteration can last 1 to 4 weeks, having casual tasks from a complete project life cycle (planning, design, coding, testing and documentation).
Each iteration starts by defining the requirements (interaction stories) and ends with potentially market-ready software.
Teams have the ability to self organize as they speak directly with other team members and the stakeholders.
But what makes Agile really different from other methodologies is the fact that the entire process is adaptive. While others like the waterfall model, spend allot of time and effort trying to predict every aspect of the process, Agile just keeps going and adapts itself to whatever comes along. Just think about all the planning that the waterfall needs, and then if something changes, it goes back to the start. It's slow and tends to resist change.
Of course that this is not suited for every software project. The best case for Agile is when you have a medium size project with a small team (up to 20 programmers), a constantly changing environment, and a demanding client that loves to add or remove features from the projects every new day (don't they all do?) and is collaborative.
In the end, you get a happy client, because he is not locked up in a contractual negotiation, instead he collaborates in the project and has the freedom to change his mind whenever he feels that something should be different. Generally this also increases usability, because once again, the client/user took part in the process. Quoting Jakob Nielsen regarding Agile methods:
"Agile methods hold promise for addressing the many ways in which traditional development methodologies erect systematic barriers to good usability practice."
You can read the article about usability and Agile methods by Jakob Nielsen right here.
There are some famous examples of Agile methods, like XP (Extreme Programming) or Scrum, and I will talk about them later in another post. For now, just concluding the title, Agile is probably the right way for most of today's projects, specially in the Web 2.0 field. But it's not easy to change to this kind of methodology, and requires everyone involved to collaborate intensively. If the change comes naturally, you will probably get great and fast results.
More about Agile: