What are the fundamental principles by which Agile practitioners should guide their actions in support of objectives, that are authoritative but require judgement in application?
Frug'Agile 2021: Agile as doctrine (and that's a good thing)
1. 1
Agile as doctrine
(and that’s a good thing)
Jason Yip
Senior Agile Coach, Spotify
@jchyip
https://jchyip.medium.com
jyip@spotify.com, jchyip@gmail.com
6. “It is like a finger pointing a way
to the moon. Don’t concentrate
on the finger or you will miss all
that heavenly glory.”
Bruce Lee, Enter the Dragon
8. ● Extreme Programming
community since 1999;
● Agile community since 2001;
● ThoughtWorks over 14 years;
● Spotify over 6 years
This is my version of a better
finger pointing to the moon.
9. 9
Agile is a doctrine for software
product development
15. Context-specific
practices
Doctrine
Desired
outcome
guides produces
1. Reduce the distance
between problems and
problem solvers;
2. Validate every step;
3. Take smaller steps;
4. Clean up as you go
● On-site Customer;
● Test-Driven
Development
● User Stories
● Evolutionary Design
● Etc.
“Deliver a continuous
stream of potentially
shippable product
increments, at a
sustainable pace, while
adapting to the changing
needs and priorities of
their organization”
Elisabeth Hendrickson
18. This principle is about
disintermediation. Reduce
the number of hops that
problem solvers need to
make in order to understand
context and get feedback.
23. Does this
follow Agile
doctrine?
Reduce the distance between problems and
problem solvers
● Mob programming: the whole team
(including customer representative) works
on the same thing, at the same time, in the
same space, and at the same computer;
● Start Together / Agile Inception:
Multi-disciplinary team with
representatives from all key stakeholders
work together to kick-off larger initiatives;
● Domain Driven Design / Ubiquitous
Language: common language across
developers and business people;
● (Basecamp) Shape Up: Small group of
Shapers shape “bets” which are then
allocated to Builders
28. Does this
follow Agile
doctrine?
Validate every step
● (XP) Test Driven Development: Write a
failing test, write code to pass the test,
refactor, repeat;
● (Deming) PDCA: Plan Do Check Adjust
improvement cycle;
● (Lean Startup) Build Measure Learn:
Build a product, get it into the real world,
measure customers’ reactions and
behaviors, learn from this, use what you’ve
learned to build something better;
● (Startups) Stealth Mode: Operate in
secret in order to avoid alerting
competitors to pending product launches
or business initiatives
30. “…many of the most important
improvements in product development,
such as concurrent engineering, rapid
prototyping, and agile software
methods, are recognizable as batch size
reductions.”
Don Reinertsen in The Principles of
Product Development Flow
31. This principle is about
reducing batch size (by
reducing transaction
costs).
32. PRACTICE:
Lower the water level to
expose the rocks
The water level is batch size
The rocks are transaction costs
33. Does this
follow Agile
doctrine?
Take smaller steps
● User Stories: Divide the work up into
functional increments called “user stories”;
● Continuous Delivery: the ability to deliver
software that can be deployed at any time;
● (Lean) SMED: Single-Minute Exchange of
Die. Reducing equipment changeover
times to the single minutes (i.e., less than
10)
● Minimum Lovable Product: ensuring the
initial product release is one that most
customers love from the start
37. All systems, human and technical
degrade over time. Regular maintenance
and improvement helps slow and
possibly even reverses this process.
38. EXAMPLE:
3 strikes and you refactor
“Here's a guideline Don Roberts gave
me: The first time you do something,
you just do it. The second time you do
something similar, you wince at the
duplication, but you do the duplicate
thing anyway. The third time you do
something similar, you refactor.”
Martin Fowler, Refactoring
39. Does this
follow Agile
doctrine?
Clean up as you go
● Refactoring: altering the internal structure
of code without altering external behaviour
in order to lower the cost of enhancement;
● Heartbeat retrospectives: A regular
meeting for the team to reflect and
improve;
● Kaizen: Continuous improvement of
processes to create more value with less
waste;
● “If it ain’t broke, don’t fix it”: If
something is working, it’s best to leave it
alone and not make any changes that
might break it.
41. Values and
principles of
the Agile
Manifesto
Let me read these out quickly...
4 Values
● Individuals and interactions over processes and tools
● Working software over comprehensive documentation
● Customer collaboration over contract negotiation
● Responding to change over following a plan
12 Principles
● 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.
42. How many of you remember all the
values and principles? If you don’t
remember them, what’s the likelihood
you’ll apply them?
43. Agile
Doctrine
Let me read these out quickly
1. Reduce the distance
between problems
and problem solvers;
2. Validate every step;
3. Take smaller steps;
4. Clean up as you go
45. Concluding
thoughts
● Hopefully this concept is useful for
those of you are just starting your
Agile journey;
● Hopefully this concept is a good
reminder for those more
experienced of what this is all
about;
● What have I missed? Do you
have a better doctrine? Any other
questions?
46. 2013 blog post
about this
● https://jchyip.blogspot.com/2013/03/what
-is-agile-doctrine.html