Agile software development is not so much a hard-and-fast method as it is a series of guiding principles. Therefore, multiple development strategies are considered “Agile.”
With so many different terms floating around, it can be hard to know what’s what. In this article, we’ll take a look at some popular methodologies that fall under the Agile umbrella and discuss what sets them apart. But first, let’s discuss what all Agile software development methodologies have in common.
The Overarching Values of Agile Development
All software development strategies that are considered Agile embrace the core values of the “Agile Manifesto,” which emphasizes:
– Being responsive to change, rather than following a set-in-stone plan
– Creating workable software, rather than endless written plans
– Collaborating with clients throughout the entire process, rather than only during the initial planning stages
– Prioritizing individuals and their needs, rather than enforcing a strict process (i.e., scheduling meetings only when needs arise, rather than on a set timetable)
Putting these values into action looks highly individualized based on the project, the individuals working on the project, the client, the resources available, etc. Various methodologies have been devised and passed from team to team. Here are some of the most popular agile software development methodologies:
1 Scrum. Perhaps the most popular of all Agile methods, Scrum breaks complex projects down into smaller, more manageable sections. These sections are then prioritized by the product owner, and the top-priority items are given the team’s sole focus for a “sprint” that typically lasts for about 2 to 4 weeks. At the end of the sprint, the team should have produced a workable product. Then the next priority item is completed in its own sprint, and so on. Scrum allows team members to stay focused and ensures that the client’s crucial needs are accomplished. Short, daily progress meetings help the team identify and address any bottlenecks quickly and efficiently. A “Scrum board” may be used to track progress by categorizing items under one of the following columns: To Do, Build, Test, Done. Sprints begin with a Planning Meeting and end with a Review (a demonstration of the product) and a Retrospective (a self-evaluation of the sprint process).
2 Kanban. Take away the sprints and priority list from Scrum, and you essentially have Kanban. Kanban teams set a limit on how many items they can build at one time. When an item exits the “build” stage and enters the “test” stage, a new item is transferred from the product wish list (also known as the product backlog) to the “build” stage, and so on. There is no 2- to 4-week sprint period; each item takes as long as it takes. Kanban teams begin each day with a short progress meeting called a “daily stand-up” and also finalize the completion of each item with a product demo and a process retrospective.
3 Extreme Programming. Now take the basic Scrum methodology and pare the sprints down to just 1 to 2 weeks and allow for flexibility and changes during the sprint, and you’ll have the basis of Extreme Programming (also known as XP). Extreme programming is a useful framework when the client is constantly changing the guidelines or requirements, or only has a vague idea of what is needed. The team works on items as prioritized by the customer. The goal of extreme programming is to adapt to changes as easily as possible; therefore it is a “lightweight” process that does not put undue hindrance on developers.
4 Lean. As the name implies, Lean programming maintains a focus on eliminating waste. Any process that is unnecessary or proves to be a waste of time is unceremoniously scrapped in a lean software development methodology. It is a highly individualized approach that looks a little different with each project and team, because what works for one may not work for another. Lean development allows the product to be completed and delivered to the customer as quickly as possible, while nixing wasteful communication, documentation and processes like multitasking.
The Agile framework is popular because it works. But as you can see, it can become more or less complicated depending on the methodologies used. This is why many larger enterprises utilize special software for Agile development to help manage the process even more efficiently.
Which Agile methodology works best for you and your team? Or have you devised a custom strategy that still fits within the Agile framework? Share your experiences below!