When we talk about agile in software development terms, we refer to a variety of different approaches based on the agile values and principles set out in the Agile Manifesto.
Each of these different ways of doing things represents its own agile framework. While the umbrella concept of Agile — customer-focused, reactive, short iterations — guides each framework, and each one incorporates the same basic elements, every variation has a unique way of working, and particular benefits for particular teams and situations.
While the Agile Manifesto was not compiled until relatively recently, agile methodologies and software development concepts that informed them have been around for much longer. Scrum, for example, was formally developed in 1993 but referenced as a development practice as far back as 1986, while rapid action development has been used since the early 80s.
Iterative and incremental methods can be found as far back as the late 50s and began to be used seriously in the 70s, but agile frameworks really came into being in the 90s, in part as a response to the development of personal computing.
The world began to move faster than development, and the average lag between a business need and a developed solution was around 3 years. As a result, the vast majority of the main agile frameworks were initially developed in the early and mid-90s before agile was formalized with the Agile Manifesto in 2001.
Scrum - Scrum, known as The Art of Doing Twice the Work in Half the Time, is one of the oldest and most popular agile frameworks. The term was first used in the Harvard Business Review back in 1986, and the framework is designed to help to develop complicated software and products and sustain them in the long term. Scrum makes it a priority to deliver completed work at the end of each iteration during the process.
Extreme Programming (XP) - Extreme programming is all about encouraging quality work, and applying best practices to engineering. As with most frameworks communication and teamwork are prioritized, but XP puts an emphasis on shared workspaces as well. Code refactoring and pair programming are fundamental elements of this Framework.
Dynamic Systems Development Method (DDSM) - The dynamic systems development method is one of the more overarching frameworks, looking to go beyond software development teams and have applications across whole projects, even whole organizations. DDSM focuses on every stage of a project from conception to completion, and while it was originally designed as a development tool to address issues with rapid action development, it is now used far more widely and holistically.
Feature Driven Development (FDD) - Feature-driven development mixes the benefits of agile methodologies with model-driven approaches and is designed to scale up from small development teams to much larger projects. FFD has five stages of work, including development, listing, planning, designing, and building.
Adaptive Software Development (ASD) - Based on rapid action development, ASD is laser-focused on the end-user of a product or software and aims to promote constant communication and transparency between the customer and the development team. ASD has an adaptive lifecycle-based around the three core messages of speculate, collaborate and learn.
The Crystal Method - The crystal method is actually another sub-group of methodologies under the agile frameworks umbrella. They are designed to be super-adaptive and elastic, stretching, and flexing to fit any size of team or project. The primary focus of these methodologies is to offer frameworks that can adapt to teams that change in size and approach between projects.
Lean Software Development (LSD) - Lean software development is less of an individual methodology, and more of a set of guiding principles designed to complement the principles and values set out in the Agile Manifesto. The 7 principles of LSD are: eliminate waste, keep learning, defer decisions, deliver fast, empower the team, build integrity in, and see the whole.
Disciplined Agile (DA) - Designed to work for organizations with a bigger staff complement, usually with a large number of remote workers, disciplined agile delivers a project lifecycle with a strong focus on learning, that has (in common with most agile frameworks) people and users as its number one priority.
Scaled Agile Framework (SAFe) - The scaled agile framework takes elements from scrum, Kanban, and XP and combines them with approaches from lean, agile, and DevOps philosophies to create a methodology that works particularly well for larger agile teams.
Rapid Application Development (RAD) - Rapid action development has been around since the early 80s and is the methodology that most other agile variations have taken their inspiration from. In RAD, rigorous planning is discarded in favor of prototyping, a method which heavily influenced the concept of constant, fast iterations or sprints in later frameworks.
For software and product development teams, an agile framework is almost always a useful way to go, offering a number of competitive advantages and benefits. As an overarching philosophy, agile is uniquely suited to be customized and modified by teams to suit their specific needs.
Agile frameworks can all be used as a jumping-off point for teams, projects, and organizations. Each one has its pros and cons, and picking the one that is right for your team relies on a number of factors such as team size, the way your organization is structured, the resources you have available, and the specific needs of your customers. Although the overall principles and values can apply to every team, the agile frameworks are all specific, not universal, and a little experimentation to find the one that suits you may be required.