Most popular Agile software development frameworks
As Agile teams begin their forming stage, they often look at frameworks to organize how to work. Selecting a framework as a starting point enables teams to define individual roles, plan work schedules, and organize team collaboration. Over time, several frameworks for organizing how to work have emerged.
The following graph from the 16th State of Agile Report shows a sample breakdown of Agile Methods and Practices Agile Teams employ globally.
Source: 16th Annual State of Agile Report.
Let’s take a quick look into each of these frameworks.
Scrum is a popular framework for solving complex problems and providing a structure for teams to deliver high-value software products. Scrum describes a set of roles, events, artifacts, and rules that help teams organize and execute their work. Scrum is built on the pillars of:
And defines five key values: commitment, courage, focus, openness, and respect.
This framework is one of the most popular for agile teams. Newly formed Agile teams frequently start with Scrum because it defines an easy-to-understand framework for defining and organizing teams.
However, building a high-performing Scrum team takes time and effort to understand and implement the principles in order to maximize the value of the framework. As the Scrum Guide states, Scrum is: lightweight, simple to understand, but difficult to master.
Kanban is not a methodology or framework, however teams frequently use elements of Kanban to improve their performance. Kanban is a Japanese word meaning “signboard”. The “Kanban Board” is widely used by Agile teams to visualize and provide transparency of the team’s work. Each work item is typically represented by a card, sometimes with a user story, requirement or task, with specific information about the work to be done.
The Kanban approach uses a “pull system” to move work through a process so work starts on an item after another item is finished. Kanban does not define a fixed period of time for the individual work item or phase of work.
Kanban is based on five principles:
- Visualize the workflow
- Limit work in process
- Manage the flow of an item through a system
- Make process policies explicit
- Improve collaboratively
In addition to visualizing their work on a Kanban Board, teams focus on limiting the work in progress per person and team to set limits to reduce the inefficiency of multitasking and context switching.
As its name implies, Scrumban takes parts of Scrum and Kanban to form a hybrid approach. Often, Agile teams start with Scrum and apply Kanban principles on top of it to improve performance and efficiency. Scrum provides the team, event, and artifact structure while Kanban supplies techniques for improving the flow of backlog items through the process.
Implementation of Scrumban can vary widely. For example, some teams may use the team and artifact structures of Scrum, but modify the events in Scrum and eliminate the strict timebox definition. Likewise, teams may choose to use traditional estimation techniques, like planning poker, while others, working outside the timebox construct, may use high-level estimations.
Scrumban is often viewed as a natural progression from the more structured approach defined in Scrum to the self-organization fostered by Kanban.
Lean Agile (Lean Software Development)
Like Kanban, Lean Agile is not a framework itself. Lean Agile principles are often used in conjunction with Scrum, Kanban, and other techniques to improve the efficiency and performance of agile teams.
A key goal of Lean Agile is to improve efficiency by removing waste from the Agile software development process.
Lean development is based on seven principles:
- Eliminate waste
- Amplify learning
- Decide as late as possible
- Deliver as fast as possible
- Empower the team
- Build integrity in
- Optimize the whole
These principles provide Agile teams additional tools, techniques and perspectives for improvement. Teams, at all levels of Agile maturity, benefit from applying Lean Agile techniques. For new or maturing teams, principles like deciding as late as possible and empowering the team are important foundations on which to build.
As Agile teams mature, they benefit from working to eliminate waste and amplify learning to reinforce the continuous learning cycle characteristic of high-maturing agile teams.
Extreme Programming (XP) is a development methodology focused on building in short development cycles to reduce the cost of changes in requirements. XP emphasizes customer satisfaction and defines practices for developers to accommodate changing customer needs to maximize value. Most of all, XP emphasizes teamwork and enables key stakeholders: managers, customers, and developers to work together to deliver great solutions.
Extreme programming is based on a set of values, principles and practices. The five XP values are:
XP Principles include: feedback, assume simplicity, embracing change; these principles provide guidance on the overall approach to building a software product.
The number of agile teams using XP exclusively is relatively small, but many of the functional and technical practices Kent Beck and others defined in XP are widespread. As a result, agile teams frequently use Scrum, for example, to organize their teams, events, and artifacts, while using XP rules to drive their product implementation.
Other Agile frameworks
- Behavior Driven Development (BDD): A software development methodology that relies on continuous communication between developers, QA, and business stakeholders, so features are well understood before development starts. BDD applies the Five Whys Principle to each user story to ensure a business outcome connects with the purpose of the user story.
- Test Driven Development: A process that uses small, specific test cases in short development cycles to build applications. Developers start by writing test cases, running those tests and seeing what fails. The developer then writes code and reruns the tests. If the test passes, the developer moves to the next test; otherwise, they continue to update the code until the tests pass. The goal of this approach is to focus first on ensuring any code added to the application passes the appropriate tests.
- Feature Driven Development: A model-driven, short-iteration process that consists of five basic activities: develop overall model, build a feature list, plan by feature, design by feature, and build by feature.
- Hybrid / Home Grown Systems: In addition to the frameworks described above, teams use a variety of other approaches. Those hybrid structures often combine elements of multiple frameworks into a methodology specific to a company or team.
These hybrid approaches often fall into a few broad categories: a combination of traditional waterfall and Scrum (so called Scrumfall), iterative development using a waterfall approach (but with shorter iteration cycles), and Dynamic System Development Method.
The degree to which these approaches achieve agility varies widely depending on the skills of the team, the organization’s culture, and solution complexity.
Agile at Scale
The original Agile frameworks, principles, and methods were designed for small teams or small groups of teams. Management, customers, and teams realized the need to scale the successes from small agile teams to large groups of teams across the enterprise. To achieve this goal, new frameworks for scaling agile have emerged. Those agile at scale frameworks include: Nexus, SAFe, Scrum at Scale, LeSS, Disciplined Agile, and others.
Many Agile teams like Scrum of Scrums, Enterprise Scrum, and Nexus because they allow teams to leverage the existing skills, training, and infrastructure of Scrum in their organizations. Nonetheless, Agile at Scale is a rapidly growing and maturing segment of Agile software development space with many changes expected in the coming years.
Selecting the most suitable Agile framework depends on an organization's specific needs, project requirements, and team dynamics. It is crucial to assess each framework's strengths, limitations, and compatibility with the organizational culture before making a decision.
In an ever-evolving business landscape, where change is constant, Agile frameworks provide a valuable toolkit for organizations to navigate uncertainties, drive innovation, and deliver superior outcomes. By embracing agility, businesses can position themselves for success in an increasingly competitive and rapidly changing world.