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 — agile or otherwise.
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.
Why choosing a methodology matters
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 methodologies are defined by the following elements:
Iterative development: Teams work in iterations, or fixed-length time-boxes, to maximize efficiency and create a repeatable cycle of development activities.
Incremental development: Developers break down large projects into smaller, more manageable units of work — and adapt quickly based on feedback.
Frequent communication: Speaking often with engineering and cross-functional teammates encourages alignment and minimizes rework.
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) to reflect on how to improve processes going forward.
Following the agile principles 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.
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.
As you read a brief summary of the methodologies below, notice how they all promote the core principles of agile — 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, which is 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.