In software application development, Agile is a methodology that anticipates the need for flexibility and applies a level of pragmatism into the delivery of the finished product. Agile requires a cultural shift in many companies because it focuses on the clean delivery of individual pieces or parts of the software and not on the entire application.
Twelve principles of the Agile Manifesto
In 2001, 17 software development professionals gathered to discuss concepts around the idea of lightweight software development and ended up creating the Agile Manifesto. The Manifesto outlines the core values of Agile, and although there has been debate about whether the Manifesto has outlived its usefulness, it continues at the core of the Agile movement.
Included in the Manifesto are concepts that were revolutionary at the time, including the emphasis on people and communication, rather than on processes and tools. Other key parts of the Manifesto include working directly with and satisfying customers, breaking all work down into small chunks, meeting daily to ensure work is on track and being open to changes even at the very end of the process.
Types of Agile methodologies
In any Agile environment, it is likely there are several Agile methodologies being used. One of the oldest of these is extreme programming, which is based on the idea that for successful development to happen quickly, testing must be done regularly. In many cases, the tests must be written even before the code.
Another Agile methodology that is widely used is Scrum. Scrum brings everyone on the team, including the business stakeholders, together to agree on features. Then, specific goals are set for a 30-day sprint, at which point the agreed-upon software is delivered.
Some Agile proponents emphasize Lean development, or Lean programming, which strips software development down to the basics. Feature-driven, test-driven or behavior-driven development can also be used in an Agile environment, depending on the needs of the organization.
Advantages of Agile
Much has been compared over the years with Agile versus Waterfall approaches.
In the Waterfall era of software development, coders worked alone, with little to no input before handing the software to testers and then on to production. Bugs, complications and feature changes either weren't handled well, or were dealt with so late in the process that projects were seriously delayed or even scrapped.
The idea the behind Agile model, in which everyone -- including the business side -- stayed involved and informed in the development process, represented a profound change in both the culture and a company's ability to get better software to market more quickly.
Collaboration and communication became as important as technology, and because the Agile Manifesto is open to interpretation, Agile has been adapted and modified to fit organizations of all sizes and types. The Agile cultural shift also paved the way for the latest software development evolution, DevOps.
Disadvantages of Agile
Many would say the biggest disadvantage of Agile is the fact it has been modified -- some would say diluted -- by many organizations. This phenomenon is so widespread that the "Agile my way" practitioners are known as "Scrumbuts," as in, "We do Scrum in our organization, but...".
Although Agile opens up the lines of communication among developers and the business side, it's been less successful bringing testing and operations into that mix -- an omission that may have helped the idea of DevOps gain traction.
Another potential concern about Agile is its lack of emphasis on technology, which can make it a difficult sell the concept to upper managers who don't understand the role that culture plays in software development.