There are many things that are said to be “Agile.” For instance, many people say that agility and Scrum are one and the same thing; they are not. (One of the main reasons that people equate the two is because Scrum is so common; however, it is a false equivalency.) As a case in point, there are many teams that refer to themselves as Scrum teams, but a large number of those “Scrum teams” are not Agile teams. One of the main reasons why so many teams don’t really meet the definition of an Agile team is because they fall short when it comes to aligning with Agile values and principles.
Let’s walk through the core values and principles.
Agile Values as Articulated in the Agile Manifesto
Here is how the Agile Manifesto articulates the core values behind the agile movement:
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
Consider this example: The Scalable Agile Framework (SAFe) has become increasingly popular in recent years. The usage of SAFe is controversial among Agile practitioners for many reasons. Even if we just take a glance at the framework and its many levels, it’s not hard to imagine how “process compliance” (compliance with the framework) can easily become the most important thing, and what all too often gets forgotten is the keeping the focus where it belongs, on individuals and interactions — not on processes and tools.
A common misconception is that Agile practitioners do not think planning or documentation are important activities. Nothing could be further from the truth. In software development in particular, it is important to have planning conversations at regular intervals (because we are constantly discovering new things, and also because business priorities can shift). Ultimately each team needs to find what is the right level of planning and the right amount of documentation to support the work that it is doing.
Let’s take a look at the values as espoused by Kanban, Scrum, and XP, respectively.
Extreme Programming (XP) Values
It is easy to see how the values espoused by Kanban, Scrum, and XP are consistent with the values as articulated in the Agile Manifesto. The most important thing is not what “framework” we choose to align ourselves with, or what tools we choose to use. What is important is for us strive, in a spirit of continuous improvement, to find the ways through which we can most effectively collaborate to deliver the business value that our customers seek.
Even more importantly, we need to learn from the mistakes of those who preceded us, where “Taylorism” and other manifestations of traditional management that were especially prevalent during the twentieth century did far more harm than good. The realization that there are more effective ways for people to work together toward a common goal was well-articulated via the Agile Manifesto, and in more recent years has found expression via Modern Agile and Management 3.0 (to name a couple of examples).
Agile Principles as Articulated in the Agile Manifesto
Here is how the Agile Manifesto articulates the core principles behind the agile movement:
Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.
Welcome changing requirements, even late in
development. Agile processes harness change for
the customer’s competitive advantage.
Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.
Business people and developers must work
together daily throughout the project.
Build projects around motivated individuals.
Give them the environment and support they need,
and trust them to get the job done.
The most efficient and effective method of
conveying information to and within a development
team is face-to-face conversation.
Working software is the primary measure of progress.
Agile processes promote sustainable development.
The sponsors, developers, and users should be able
to maintain a constant pace indefinitely.
Continuous attention to technical excellence
and good design enhances agility.
Simplicity — the art of maximizing the amount
of work not done — is essential.
The best architectures, requirements, and designs
emerge from self-organizing teams.
At regular intervals, the team reflects on how
to become more effective, then tunes and adjusts
its behavior accordingly.
If we keep the values and principles described above in mind at all times, we put ourselves in a much better position to be able to articulate and deliver the capabilities that our customers are requesting, and we can even have fun while doing it.