There is some confusion around what agile is versus what agile methodologies are, and often people lump them together. Agile is a mindset (not a methodology) that encompasses a set of values and principles that were compiled by a group of software gurus in 2001. These values focus on customer collaboration, flexibility, a short iterative cycle, value delivery, people centricity, sustainability and simplicity, among other things. These values and principles are not to be confused with the frameworks that have been developed to assist teams in “becoming agile.”
It is important to understand the difference between “doing Agile and BEING agile.” Without the right mindset you are just following a series of steps that aren’t going to take you where you need to go. The agile methodologies, or frameworks, below are just tools to help you on your agile journey. One isn’t necessarily better or worse than others, depending on what you need, just as a fork is not better than a spoon (unless you are eating spaghetti). This is not an exhaustive list, nor is it meant to cast judgment on whether some are “more agile” than others. Again, you can follow the letter of the law as laid out in the Scrum Guide, but not be agile at all. The key to being successful with any framework is adopting the agile mindset while adapting the methodology to your organization.
Scrum is a time-boxed iterative development framework that is built on an empirical (what can be seen or known) approach. It encourages teamwork (thus the name) and depends on transparency, inspection, adaptation built on a foundation of trust. It has specific events that help the team iteratively and incrementally address what the customer is asking for, how to build it, whether the releasable “increment” is accurate, and how the team can improve. Scrum values courage, focus, commitment, respect, and openness.
Extreme Programming (XP)
Extreme Programming (XP) is a framework that embraces change, while mitigating risk. XP’s goal is to deliver what is needed when it is needed. It uses small groups of developers teamed up with managers and customers, all working together in close proximity. XP was the first strong proponent of communicating requirements via User Stories, which is now frequently used in other frameworks. In XP, it is critical that the developers constantly be able to ask questions, negotiate scope and schedule, and create functional tests to support its short planning and feedback loops.
Disciplined Agile (DA)
Disciplined Agile is an enterprise focused, hybrid agile delivery approach which incorporates other types of agile methodologies (Scrum, SAFe, Kanban, XP, etc.). It motivates all silos within the enterprise to work together to continuously improve through learning and testing alternative approaches. The enterprise mindset of Disciplined Agile includes self-reflection on how you acknowledge, portray, and improve community, enterprise, departmental, team and individual awareness for the ultimate goal of optimized work flow delivery. DA puts a strong focus on pulling in upper management to ensure the entire organization is working toward the same goal and eliminates having to re-organize their efforts down the road.
Kanban uses boards to visualize invisible work, workflow, and business rules while encouraging limits to work in progress (WIP) in order to improve flow. It establishes faster, more predictable delivery and an adaptive capability that enables you to respond effectively to changes from customer demand or your business environment. The Kanban board is a mirror that reflects the flow of work. What you see may not be pretty, but once the flow is visible, you can gradually make changes to your process to improve things.
Lean’s roots are in manufacturing, but it has been adapted to software delivery with a primary focus on streamlining production through the optimization of time and resources (though the elimination of waste) to provide the minimum viable product (MVP) that meets the customer’s requests and/or needs. Lean principals emphasize Respect for People, Flow (Plan-Do-Check-Act), Innovation, and Relentless Improvement. These are accomplished through understanding the customer’s needs, mapping out and optimizing the processes and steps to create and deliver the products to customers, and further maximizing delivery by eliminating waste to produce higher value products, in less time. Once products are delivered, new iterations are then made based on the user’s feedback and management requests with continuous improvement in mind.
Dynamic System Development Method (DSDM)
DSDM is a philosophy built on a foundation of common sense and pragmatism. It focuses on principles build around Process, People, Products and Practices and manages projects by fixing time, cost, and quality during a Foundations (up-front planning) phase, while adjusting feature delivery when contingency is required, prioritizing via the MoSCoW method (Must-haves, Should-haves, Could-haves, and Won’t-have (at this time)). DSDM is often paired with other frameworks (like Scrum) to manage the development cycle because it does not have a robust work flow process, though it stresses time-boxed iterative development.
The agile project management methodologies described above attempt to provide a framework that allows you to work in an agile way, though each takes its own approach. The key to long-term success of any of these methods (and others that we have not mentioned) is not just the implementation of the various practices, but the shift in mindset that those practices should help drive. The Daily Scrum establishes the habit of the team talking together on a regular basis and XP’s pair programming similarly creates a habit of developers working and openly communicating together. Ideally both practices will create a culture, or mindset, of collaboration. When that happens, the organization moves from doing Agile activities toward being agile.
Esse quam videri,