User Experience

The benefits of Agile development

Wednesday, November 28th, 2007

Many software and application developers are using a process called “Agile development” or “Agile project management” to create a workable schedule and development environment. This method is becoming so popular because of the benefits it creates for the team and the client alike. The basic idea behind agile development is to limit your production period to a strict time frame. The duration of this type of project is measured in weeks rather than months, and the work is performed in a highly collaborative manner. Teams share information in an open, free exchange of ideas, quickly and collectively building a prototype application. Each revision of the application is called an “iteration”, and these typically last one to four weeks. The iterations are like miniature projects of their own, and they include all the necessary tasks to release a new functionality: planning, requirements, analysis, design, coding, testing, and documentation.

One of the benefits to Agile methods is that it emphasizes personal, real-time communication over written documents and virtual correspondence. Agile teams are housed in clusters which include all the people necessary to the project. At a minimum, this includes programmers and their “customers” (customers are the people who define the product; they may be product managers, business analysts, or actual customers). The agile fishbowl may also include testers, interaction designers, technical writers, and managers. This allows the team necessary access to each other, and reduces the chances of miscommunication and failure to meet deadlines.

Agile methods also emphasize project functionality as the primary measure of progress. When an iteration is complete, the client has a working model of the application to explore, test, and critique. The real benefit here is the efficiency. Agile methods produce completely developed and tested features (a very small subset of the whole) every few weeks or months. Not only will your clients be astounded by the speed of completion, but your team will have the satisfaction of churning out products that truly meet the needs of the customers.

Combined with the preference for face-to-face communication, agile development produces very little written documentation relative to other methods. For this reason, they are sometimes characterized as being at the opposite end of the spectrum from “plan-driven” or “disciplined” methodologies. This distinction is misleading, as it implies that agile methods are “unplanned” or “undisciplined.” A more fair distinction is to say that methods exist on a continuum from “adaptive” to “predictive”. A predictive method would be more rigid, focus on a pre-written action plan, and have a strict schedule. Agile methods exist on the “adaptive” side of this continuum. Adaptive methods focus on adjusting quickly to changing realities. When the needs of a project change, an adaptive team changes their focus as well. This allows major changes to be incorporated into the existing schedule and prevents delays.

A major mistake that is made when using an agile process is to assume that you don’t have to plan or you can “make it up as you go”. This is the furthest from what agile is all about and such an approach will only lead to disaster. Understanding the goals, metrics, scenarios and audience, including high-level requirements, are key ingredients for making agile methods work. Combining the power of the iterative nature of Agile with clear goals and focused team is the best way to maximize the benefits and promise of this methodology.

For more information about agile methodology and the benefits of using this technique, visit www.agilemanifesto.org.

By Haley January Eckels