What is Agile?On October 15, 2019 by Raul Dinwiddie
Hi I’m Mark. I help organizations write
software more efficiently and often this means helping teams understand what it means to
develop in an Agile way. In this video we are going to answer the question, “What
is Agile?” And just as important we’ll discuss what Agile is not.
Many things get called Agile—especially by people who are selling something. If you
ask the makers of paper products, they will tell you that to be Agile you need to write
user stories on the sticky note cards— that they just happen to sell. If you ask a consultant,
you’ll likely hear that it is a methodology for developing software that your organization
can learn—if you buy their services. And if you talk to the makers of orthopedic shoes,
you’ll be told that the key to being Agile is meetings where everyone stands up. So the
more comfortable your shoes — the more Agile your team.
The actual definition of Agile is found in the Agile Manifesto. The Manifesto makes it
clear that Agile isn’t a methodology. It isn’t a specific way of doing software development.
It isn’t a framework or a process. In fact, most of the things that are marketed as Agile
tend to miss the point of what Agile actually is. Agile is a set of values and principles. Much of the discussion around Agile has to
do with following different practices, using various methodologies, and even developing
with specific tools. While these things might help a team that is trying to follow Agile,
they aren’t Agile in and of themselves. For example, while a team may find that having
a daily standup is helpful, the standup is only “Agile” to the extent that it is
the result of a team following the Agile principles and values.
When you understand this, it is easy to see that Agile is really a collection of beliefs
that teams can use for making decisions about how to do the work of developing software.
While this means the term Agile gets subjected to a great deal of abuse when people claim
that this or that is the way to be Agile, it also means that if you truly understand
what Agile is, it is surprisingly flexible. Agile doesn’t make decisions for you. Instead
it gives a foundation for teams to make decisions that result in better software development. The Agile Manifesto is only 68 words and very
simply says that we can develop software better by valuing the items on the left side of the
list more than the items on the right side. This is the Agile Manifesto says: 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. In addition to the values of the Manifesto
there are 12 principles that support the values. Once again the principles are very general
and are less about telling you what to do than they are about giving you the ability
to make a good decision in a particular situation. The principles are: 1. Our highest priority is to satisfy the
customer through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness change
for the customer’s competitive advantage. 3. Deliver working software frequently, from
a couple of weeks to a couple of months, with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they
need, and trust them to get the job done. 6. The most efficient and effective method
of conveying information to and within a development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users should
be able to maintain a constant pace indefinitely. 9. Continuous attention to technical excellence
and good design enhances agility. 10. Simplicity–the art of maximizing the
amount of work not done–is essential. 11. The best architectures, requirements,
and designs emerge from self-organizing teams. 12. At regular intervals, the team reflects
on how to become more effective, then tunes and adjusts its behavior accordingly. Since Agile is a collection of values and
principles, it’s really utility is in giving people a common foundation for making decisions
about the best way to develop software. For example, consider a new project that is in
discussion on how to get the requirements from the business owner. The suggested approach
is to require that the business owner write down all the requirements and sign off on
them before beginning the work. A team that is following Agile would say:
“While that might work, isn’t that inconsistent with our belief that we should value customer
collaboration over contract negotiation? And doesn’t it violate our principle that says
the developers should be working with the business owners every day? How can we make
this decision in a way that is consistent with our values and the principles we follow?”
Or consider a developer who is working on implementing a feature for the business owner.
The developer realizes he needs a database to make the feature work. The first idea that
comes to mind is to stop work on the feature and build out a robust database layer that
will handle the needs of the feature and provide support for other development that will be
needed later. If the developer believes in the Agile values and is trying to follow Agile
principles they would think: “But building out this layer means I will
have to delay delivering what the customer can see as valuable software they can use.
If I can find a way to build just what is necessary to deliver this feature, it will
better align with my principles.” When you have a team that is following Agile
they will be making hundreds of decisions each week in the way described above. That
is what it means to be Agile. Making each decision based on the principles and values
that the team has decided to follow. The decision making process matters. You can’t
try to short circuit things by taking decisions made by another team and just blindly doing
what they decided to do. Another team may make decisions based on the Agile principles
and values and end up with a particular way of doing their work. Simply trying to mimic
another team’s actions and practices won’t make your team Agile.
After World War II Melanesian islanders were observed trying to bring cargo planes and
their supplies from the sky by mimicking the practices they had seen performed during the
war. This included clearing the forest to make a landing strip complete with full size
planes made out of straw. They also created structures that mimicked a control tower out
of bamboo and had someone sit in it wearing headphones fashioned from coconuts.
It is easy to fall into a similar type of cargo cult mentality when it comes to Agile.
The things that are easy to notice in a highly functional Agile team are the practices they
are using. But the practices a team uses is the result of following Agile principles and
values. It is less important what practices a team happens to be using than why they are
using it. In fact, as time goes by, a good Agile team is probably going to change and
refine the practices they use. A team might start with SCRUM and later find
that Kanban is a better fit for delivering value to their customers. A team might begin
standing up in a daily meeting and later decide it works better for everyone to stay sitting
down. Another team might start out using Planning Poker to estimate story size and later do
away with story points and simply split stories to be approximately the same size.
That isn’t to say it is useless to look at practices being used by teams that are
performing well, but you can’t go looking for practices to make you Agile. Your principles
and values are what will make you Agile. You have to look for practices that support your
principles and values. The way you select your practices is what determines whether
you are being Agile or not. If a practice is being selected because it looks like a
good way to follow Agile principles, it is probably a good place to start. The same practice
can work poorly for a team if it is selected for the wrong reason. So what is Agile?
Agile is a set of values and principles. How does a team become Agile?
They make their decisions based on Agile values and principles. The decision making process is how a team
becomes Agile. The values and principles have enough flexibility to allow teams in a wide
variety of organizations to develop software in the ways that work best for their particular
situation while providing enough direction to help a team continually move toward their