While the official Guide to Agile Practices was only published in 2011, Agile development methodology can trace its roots all the way back to the 50s. Simply put, Agile development is a series of practices and values that are geared around self-organized teams and efficiency. The overall goal of the Agile development process is to create software at a much faster speed and to create a product better suited for the needs of the customer.
Now that the movement has taken off, more and more Agile development processes have sprouted up. Each of these different processes and frameworks offer different things to the people using them. Some of them have specific purposes within software development. For others, the differences are simply due to the personal preference of the developer.
If you are reading this and are confused, don’t worry. We have compiled each of the different Agile development processes in this article to explain each and their purpose within software development. Hopefully by reading this you will have a better understanding of which process will work best for you and your company. Let’s get started.
Lean
Lean software development is an iterative agile development process that owes many of its principles to companies like Toyota. The principles of Lean development center around creating and delivering value to the customer. They are laid out as follows:
- Eliminating waste.
- Amplifying learning.
- Deciding as late as possible.
- Delivering as fast as possible.
- Empowering the team.
- Building integrity in.
- Seeing the whole.
Lean eliminates waste by selecting the truly valuable features of a system, prioritizing them, and delivering them in small batches. It emphasizes the speed and efficiency of development workflow and relies on honest feedback being exchanged between developers and customers. Lean also tries to make sure that everyone on the team is being productive as much of the time as possible.
Scrum
Scrum is a lightweight agile project management framework with broad applicability across many types of projects. The bulk of Scrum is centered around managing and controlling iterative and incremental projects of all types. It has become popular in the software development community due to its simplicity and proven productivity.
With Scrum, the “Product Owner” works closely with the team to identify and prioritize what is called the “Product Backlog.” The product backlog consists of features, bug fixes, and anything else that needs to be done in order to have a function software system. Each of these aspects of the product backlog are handled by different teams who perform “Sprints” to get them done.
Sprints are short bursts of productivity within Scrum that last no longer than 30 days. They are planned out in Scrum planning meetings and focus on completing a series of tasks in a short time period. Within a sprint, no additional functionality can be added by anyone outside of the team. Once the sprint is done, the product backlog is reprioritized (if necessary) and the next set of functionality is set for the next sprint.
Scrum is praised by many due to these sprints which allow the project to go wherever makes the most sense. Just know that the final product might look very different to what you envisioned at the beginning of the process.
Kanban
The Kanban method is used by organizations that are looking to emphasize continual delivery and not overburden the development team. Like Scrum, Kanban is an agile development process designed to help teams work more effectively.
Kanban is based on 3 basic principles:
- Visualize what you do today: seeing everything in context can be very informative.
- Limit the amount of work in progress: this helps with the workflow, as teams don’t start something they can’t finish within the allotted time.
- Enhance flow: when something is completed, the next item on the list is pulled to be worked on.
Continuous collaboration and active, ongoing learning and improving are the hallmarks of the Kanban methodology.
DSDM
DSDM, or Dynamic Systems Development Method, began when the industry standard for delivery frameworks wasn’t working as efficiently as was needed. Ever since this spark in 1994, DSDM has matured to a provide a comprehensive groundwork for scaling agile processes and iterative software development.
DSDM is based on nine key principles that primarily revolve around business needs, active user involvement, empowered teams, frequent delivery, integrated testing, and stakeholder collaboration. This method specifically focuses on the 80% of the system that is useful, looking to deploy it in 20% of the time. Prioritizing within DSDM is done using Moscow rules.
M – Must have requirements.
S – Should have if at all possible.
C – Could have but not critical.
W – Won’t have this time, but maybe later.
The DSDM project framework can be used alongside other iterative methodologies, such as Extreme Programming.
XP
Extreme Programming, known as XP, is one of the most popular and controversial agile development processes. XP is a highly disciplined approach to software development that aims to create high quality work quickly and continuously. This process requires constant testing, planning, rapid feedback loops, and close teamwork to be able to present the software at frequent intervals (usually 1-3 weeks).
The original XP ideology is based on 4 main principles: simplicity, communication, feedback, and courage. Along with this, there are twelve supporting values.
- Planning game
- Small releases
- Customer acceptance tests
- Simple design
- Pair programming
- Test-driven development
- Refactoring
- Continuous integration
- Collective code ownership
- Coding standards
- Metaphor
- Sustainable pace
Within XP, the “Customer” works very closely with the development team to define what are called “User stories.” The development team then estimates, plans, and delivers the highest priority user stories in the form of tested software. In order to maximize productivity, XP provides a supportive and lightweight framework to guide the team towards a high-quality end product.
Crystal
The Cystal method is one of the most lightweight and adaptable of the different Agile development processes. Crystal address the reality that not every project will be run the same way and has many offshoots for different types of projects.
However, the key tenets of Crystal are consistent throughout each of the different types of methodology. These include such values as teamwork, communication, and simplicity. Along with this, Crystal promotes reflection so that the team can frequently adjust and improve the process. Like other Agile development processes, Crystal promotes frequent delivery of working software, high user involvement, and adaptability.
FDD
FDD, or Feature-Driven Development, is a variant Agile development process that is model-driven and focuses on short iterations. The first step in FDD is to establish the overall model shape. From there, it continues with a series of two-week “design by feature, build by feature” iterations. The features are small and must be useful in the eyes of the client.Now, the rest of the development process rests on the following eight practices.
- Domain object modeling.
- Developing by feature.
- Component/class ownership.
- Feature teams.
- Inspections.
- Configuration management.
- Regular builds.
- Visibility of progress and results.
Proponents of FDD claim that it scales in a more straightforward manner than other Agile development processes and thus can be used by larger teams and organizations. Unlike other methods, however, FDD works in very short phases, which are accomplished by feature.
Agile development process
No matter the methodology that you choose, in 2017 some form of Agile development should be a part of your project. Some of them will have better uses for certain projects and others should only be used for special occasions, but we hope that after reading this article, you will have a better understand of when to use them.
The post Every Agile Development Process, Explained appeared first on - Snyxius.
