Agile is an approach to software development that seeks the continuous delivery of working software created in rapid iterations.
However, the phrase "agile methodology" is misleading because it implies that agile is a singular approach to software development. Agile is not a set of prescriptions for exactly which actions to take in software development. Instead, it is a way of thinking about collaboration and workflows and it is a set of values which guide our choices in regards to what we make and how we make it.
In practical terms, agile software development methodologies are all about delivering small pieces of working software quickly to improve customer satisfaction. These methodologies use adaptive approaches and teamwork to focus on continuous improvement. Usually, agile software development consists of small, self-organizing teams of software developers and business representatives regularly meeting in-person throughout the software development life cycle. Agile favors a lightweight approach to software documentation and embraces—rather than resists—changes at any stage of the life cycle.
Agile approaches to work were created to address the perceived limitations of the waterfall methodology, which was derived from the manufacturing method of Henry Ford’s 1913 assembly line and later applied to software development. Since its founding in 2001, agile development has flourished in the software industry and project management, though it has many variations.
Agile started when many software developers began noticing that the production cycles and collaboration methods of waterfall were not producing the desired results. This problem had become pervasive by the early 1990s, when it became common for a several years lag to persist between an organization's validated business need and the delivery of a working application. Business demands and markets could change enough during those years that large parts of software projects would be cancelled before they were ever delivered. This waste of time and resources led many software developers to seek an alternative.
Faced with the threat of disruption, organizations increasingly adopt digital transformation strategies to keep up with the accelerating pace of business. And when they do, agile software development frequently plays a role.
Agile forms the basis of many of today’s digital workflows. Cloud computing, with its flexible, scalable, IT infrastructure, has grown up in parallel with the demands of agile software development. Cloud-native development embraces an agile-like notion of software as a series of interconnected services that scale to meet business needs.
DevOps as a concept breaks down the old wall between software development and operations. SRE is an implementation of DevOps that uses software as a tool to manage systems and automate operations tasks. CI/CD methods accept that software will change continuously, and gives developers tools to accelerate the speed at which they can deploy new code.
By now you may have noticed that the concept of "agile methodology" is itself an agile idea, responding to the needs of its customers (that is, software developers) through changing times. Keep this in mind as we take a brief look at a variety of agile frameworks, which carry different names and often vary from one implementation to another.
Agile frameworks for software development—like Scrum, kanban, or extreme programming (XP)— form the basis for popular software development processes like DevOps and continuous integration/continuous deployment (CI/CD).
Scrum is perhaps the most popular agile framework in use today but not all agile is Scrum and, honestly, not all Scrum is agile. Scrum is a framework for managing work designed for small, cross-functional teams of 5 to 9 people who break their work into actions that can be completed within a consistent period of time called a sprint. Scrum teams consist of team members, a Scrum master, and a product owner. Typically, Scrum is implemented when a large project can be broken up into 2- to 4-week sprints. Scrum focuses on feedback loops through a ceremony called the "retrospective." The unofficial motto of Scrum could be "inspect and adapt."
Other agile frameworks, notably kanban, predate the agile manifesto. But these frameworks are considered to be agile because they promote the values outlined in the agile manifesto. There are too many agile frameworks and approaches to scaling agile to list all of them here.