What are the most common agile development methodologies?
You want to embrace more agile ways of working. Understanding the different methodologies that agile teams use — such as kanban, lean, scrum, and others — can help you determine the best approach for your team. Because every engineering team is unique. The workflows and processes that are optimal for other groups may not be right for you. Your specific industry, company culture, team size, and the type of product you are building will all influence the methodology you choose.
Whether or not your team follows agile principles, it is crucial to have guidelines and practices in place for how you will complete your work. When everyone understands and agrees on a method, it is easier to make progress towards your goals. You can achieve faster results and deliver a better customer experience.
Typically a CEO or CTO will select the methodology that a company uses, with support from the engineering team. This is because building and delivering a winning product requires cross-functional collaboration across the entire organization — product, design, engineering, marketing, and customer success. Everyone in the organization needs to be aligned on the methodology that the development team uses so that planning and communication go smoothly.
Agile development principles
Agile methodologies provide a framework for software development that is centered around collaboration, iteration, learning, and value delivery. Development teams break large efforts into manageable increments and tackle them in time-boxed cycles. The idea is for your team to have a clear, unified approach for how to define and complete work — for more flexibility, faster time to market, and higher quality software.
There are four values at the core of agile approaches, as stated in the Agile Manifesto:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
The day-to-day implementation of these values will vary depending on what your team needs and how you manage your work. But regardless of each team's processes, you can plan on incorporating certain practices. These include:
Iterative development: Teams follow a repeatable cycle of development activities such as planning, design, development, testing, and deployment. Each iteration provides an opportunity to incorporate feedback and deliver a better product.
Incremental development: Developers break down large projects into smaller, more manageable units of work. Since each batch of work builds on previous increments, your product is constantly being improved. Updates come early in the process versus in a single release at the end of development.
Frequent communication: Alignment across the entire product development team depends on ongoing communication. Regularly connecting with cross-functional teammates minimizes costly rework. Agile teams touch base on capacity, work status, and any issues that need to be addressed.
Time-boxing: Developers focus on completing one task at a time before moving on to the next project or phase of work.
Retrospectives: Team members check in with one another at regular intervals (typically after a set time-boxed period like a sprint) to reflect on how to improve processes going forward. Agile retrospectives facilitate the kind of transparent, open communication that allows teams to constantly evolve.
Following the agile best practices above can lead to greater productivity and team alignment. When you are flexible and willing to pivot quickly, you reduce risk — it is possible to move fast and give customers what they want.
Common agile development methodologies
There are many different agile development methodologies that teams adopt. Some stick to a single methodology, while others opt to use multiple frameworks. And many teams adopt a hybrid approach, combining elements of one methodology with others to meet their needs (take "scrumban" for example).
We will cover eight of the most common agile methodologies: crystal, dynamic systems development method (DSDM), extreme programming (XP), feature-driven development (FDD), kanban, lean software development (LSD), rapid application development (RAD), and scrum.
Each methodology promotes the elements at the root of agile development — flexibility, collaboration, iteration, short release cycles, and immediate feedback.
Crystal focuses on customization. It empowers agile teams to define the most effective way of collaborating, based on details like the number of team members and the specific type of project you are working on. As a developer, you have the autonomy to adjust processes and optimize workflows to fit your needs.
Dynamic systems development method (DSDM)
Dynamic systems development methodology (DSDM) combines the principles of time-boxing and collaboration with an emphasis on goals and business impact. It lays out distinct phases for tackling projects, from evaluating feasibility to creating prototypes to implementation. DSDM is typically selected by larger organizations and governments with the budget to cover overhead and implementation.
Extreme programming (XP)
Extreme programming (XP) is all about collaboration and transparency. XP espouses five key values: communication, simplicity, feedback, courage, and respect. Developers typically engage in pair programming — sitting together and writing code on one machine. Small teams that are co-located and close-knit can benefit from using XP.
Feature-driven development (FDD)
Feature-driven development (FDD) espouses a customer-centric view to software development. By prioritizing user stories, FDD helps teams deliver more features that customers want. Work moves quickly — developers typically build each feature in two weeks. FDD can be useful for companies with a more rigid or hierarchal structure, where lead developers make decisions that impact the rest of the team.
Kanban is a visual method for managing workflows. Teams use a kanban board to quickly see the status of upcoming work. The goal is to reduce lead time by optimizing the flow of work and limiting the amount of work in progress. Kanban is popular with many types of agile development teams, as well as product and project teams.
Lean software development (LSD)
Lean software development (LSD) promotes a minimalist approach — eliminating waste, ensuring quality, and delivering quickly. Many growing teams rely on lean practices to help them create more functionality faster.
Rapid application development (RAD)
Rapid application development (RAD) emphasizes speed and flexibility. Developers build prototypes, collect user feedback, and iterate often. RAD is ideal for highly skilled teams that need to develop a product quickly (within a few months) and are able to collaborate with customers during the process.
Scrum is the most popular agile development methodology. Teams work in time-boxed sprints of two to four weeks and each person has a clearly delineated role, such as scrum master or product owner. After an initial planning session, teams meet daily and also have retrospectives at the end of each sprint to reflect on how to improve. Scrum is well-suited to small teams that are nimble, cohesive, and willing to pivot often based on stakeholder feedback.
It is also worth mentioning DevOps, an approach to software delivery that grew out of agile philosophy. DevOps emphasizes short development cycles and continuous delivery of high-quality software. The focus is on close working relationships between the development and operations teams. Many principles of DevOps — such as automated testing, short feedback loops, and frequent collaboration — are seen in the agile development methodologies above.
Choosing an agile development methodology
The beauty of choosing a methodology is that there is no right or wrong answer. You are not locked into using a single methodology and you can always adapt an existing framework to meet your needs. Experiment with different methods and talk to your colleagues about how you might be able to improve your workflows.
No matter which methodology you choose, remember that being more agile requires shifting the way you think about the work you are doing. It helps if everyone on the team can articulate the ultimate goal — the reason why you are shifting to agile and the value it will deliver to customers beyond the individual features you ship. This makes rallying the team around a specific way of working a bit smoother.
- What is agile software development?
- What is an agile roadmap?
- What are the most common agile development methodologies?
- Agile vs. lean
- Agile vs. waterfall
- What is the Scaled Agile Framework (SAFe®)?
- What are best practices of agile development teams?
- What is unit testing?
- What is DevOps?
- What are some DevOps best practices?
- DevOps and "continuous everything"
- What is an agile retrospective?
- Introduction to agile metrics
- What is a burndown chart?
- What is agile transformation?
- What is issue tracking?
- What is the role of a software engineer?
- Agile glossary