The document discusses the values and principles of agile software development. It begins by introducing the presenter and their experience and background. It then outlines the core values of agile development as defined in the Agile Manifesto: individuals and interactions, working software, customer collaboration, and responding to change. The document continues by explaining that principles guide behavior towards upholding these values. It proceeds to define several key agile principles in more detail, including continuous delivery of customer value, welcoming change, and collaborating daily across functions.
1 of 64
More Related Content
The Values and Principles of Agile Software Development
1. The Values & Principles of
Agile Software Development
by Brad Appleton
created 21 October 2009,
last updated 9 February 2012
2. Values & Principles of Agile Software DevelopmentBrad Appleton 2
Presenter Information
Brad Appleton
25+ years in industry – last 20 w/large Telecom.
Agile Leader, Coach & Manager
Scrum, XP, SAFe, LeSS, DAD
ALM/SCM/DevOps Solution Architect
Git, JIRA, Confluence, TFS, RTC, Jenkins, CI/CD
Leading adoption & scaling of Agile development for large
organization since 2000.
Co-author: Software Configuration Management
Patterns (Addison-Wesley 2002), Agile CM Environments
(column in CM Journal), Reviewer for The Agile Journal
3. Values & Principles of Agile Software DevelopmentBrad Appleton
PRINCIPLES
Agile Software DevelopmentScaling
Adoption
Agility
Practices
Principles
Values
“Agile is a mindset defined by
values, guided by principles, and
manifested through many different
practices”
⎯Ahmed Sidky
4. Values & Principles of Agile Software DevelopmentBrad Appleton
Agile Values (from the Agile Manifesto)
The Agile Manifesto establishes a set of four values
that are people-centric and results-driven:
That is, while there is value in the items on the right,
we value the items on the left more.
(www.agilemanifesto.org)
Individuals and
Interactions
Processes
and Tools
over
Working
Software
Comprehensive
Documentation
over
Responding
to Change
Following
a Plan
over
Customer
Collaboration
Contract
Negotiationover
5. Values & Principles of Agile Software DevelopmentBrad Appleton
Simple Clear Purpose and Principles
“Simple clear purpose and principles give
rise to complex, intelligent behavior.
Complex rules and regulations give rise
to simple, stupid behavior.”
—Dee Hock, Founder of VISA corp.
6. Values & Principles of Agile Software DevelopmentBrad Appleton
Principles Guide Behavior Towards Values
❖ Values bring purpose to practices.
❖ Practices bring accountability to values.
❖ Principles bridge values and practices by
guiding behavior.
―Kent Beck, Extreme Programming Explained (2nd edition)
Values
Practices
Principles
7. Values & Principles of Agile Software DevelopmentBrad Appleton
Which comes first?
“Practices by themselves are barren. Unless
given purpose by values, they become rote.”
—Kent Beck, Extreme Programming Explained (2nd edition)
“Is it better to spend your time understanding principles
or studying practices? We observe that the best results
come from combining the two approaches.
Copying practices without understanding the underlying
principles has a long history of mediocre results.”
—Mary & Tom Poppendieck, Implementing Lean Software Development, Chapter 2 – Principles
8. Values & Principles of Agile Software DevelopmentBrad Appleton
Principles behind the Agile Manifesto
Continuous Technical Excellence
and Simplicity is Essential
Align, Support & Trust …Self-Organizing Teams
Collaborate Daily Across Functions and
Convey Information via Conversation
Deliver Working Software Frequently
at a Sustainable Pace
Welcome Change – Reflect and Adapt
Continuous Delivery of Customer-Value
and Working Software Defines Progress
9. Values & Principles of Agile Software DevelopmentBrad Appleton
Continuous Delivery of Customer-Value
Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
• Customers care about whether or not you're delivering working software to
them every development cycle—some piece of business functionality that
proves to them that the evolving software application serves their business
needs. —Martin Fowler & James Highsmith, On the Agile Manifesto
• Decompose work into testable increments of executable functionality, and
deliver them iteratively
• Set and regularly revisit priorities of backlog-items, based on which ones are
most valued by the customer
• Make plans responsive to changes in customer priorities.
Focus on the continuous flow of value to the customer
9
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
10. Values & Principles of Agile Software DevelopmentBrad Appleton
Continuous Delivery of Customer-Value
“Continuous delivery is about achieving flow. It is an aspect of lean
software development that seeks to minimize waste and maximize
efficiency and throughput.” —Dave Thomas, Rally Software
“Flow means that there is a steady movement of value through the
system. Client-valued functionality is moving regularly through the
system — and the steady arrival of throughput — with working code
being delivered.” —David J. Anderson, Agile Management for Software Engineering
“Flow of value enables transparency, in that you can measure what is
important to the customer (namely, potentially shippable software).
Transparency enables discovery of waste. Reducing waste, in turn,
accelerates flow and enables greater transparency.”
—Sam Guckenheimer, Agile Software Engineering
“We have to build and sustain a continuous value delivery engine, not
one that bangs out many features the first release and then rapidly
declines in ability thereafter.” —James Highsmith, Velocity is Killing Agility
11. Values & Principles of Agile Software DevelopmentBrad Appleton
Welcome Change
Welcome changing requirements, even late in development. Agile processes
harness change for the customer's competitive advantage.
• Requirements changes late in the lifecycle are competitive advantage, IF you
can act on them! —Mary Poppendieck
• Learn to trust in your ability to respond to unpredictable events; it's more
important than trusting in your ability to plan for disaster.
—Martin Fowler & James Highsmith, On the Agile Manifesto
• Embrace and adapt to changes.
• View changes as opportunities to learn and improve.
• Expect iterations reviews and retrospectives to result in changes to
requirements, plans and processes.
Change will happen. If we anticipate it, watch for it, and are prepared
to react to it, we can use it to our advantage
Burying or avoiding the effects of change only compounds the problem
11
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
12. Values & Principles of Agile Software DevelopmentBrad Appleton
Welcome Change
“It is not necessary to change; survival is not mandatory.”
—W. Edwards Deming
“It’s inevitable that requirements will change.
▪ Business needs evolve, new users or markets are identified,
business rules and government regulations are revised, and
operating environments change over time.
▪ In addition, the business need becomes clearer as the key
stakeholders become better educated about what their true needs
are.”
— Karl Wiegers, Cosmic Truths about Software Requirements
“Orders must change rapidly in response to change in circumstances. If one
sticks to the idea that once set, a plan should not be changed, a business
cannot exist for long.” —Taiichi Ohno, Toyota Production System
“It will be important to organize future projects with enough agility to be able
to adapt to the additional emergence of new sources of unpredictable
change.” —Barry Boehm, Making a Difference in the Software Industry, March 2008
13. Values & Principles of Agile Software DevelopmentBrad Appleton
Deliver Working Software Frequently
Deliver working software frequently, from a couple of weeks to a couple of
months, with a preference to the shorter timescale.
• Provides better transparency of genuine progress.
• Exposes risk earlier
• Allows for early and frequent customer feedback
• Encourages closer collaboration between teams
• The project is built around short iterations
• Iterations are focused on delivering testable, demonstrable, customer-valued
functionality
Rapidly delivering tangible, tested increments to customers facilitates
frequent feedback on executable end-results.
13
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
14. Values & Principles of Agile Software DevelopmentBrad Appleton
Deliver Working Software Frequently
“Delivering working software frequently, as fast as possible
enables two important feedback loops:
• One is from actual customers to the developers, where customers
use the software and communicate how well it meets their needs.
• The other is from the team to the customers, where the team
communicates by demonstrating how trustworthy and capable it is.
Frequent delivery tightens these loops.”
―James Shore & Shane Warden, The Art of Agile Development
“One of several reasons why agile techniques are so effective
is that they reduce the feedback cycle-time between the
generation of an idea and the realization of that idea. This
not only minimizes the risk of misunderstanding, it also
reduces the cost of addressing any mistakes.”
―Scott Ambler, Why Agile Software Works: Improved Feedback
15. Values & Principles of Agile Software DevelopmentBrad Appleton
Collaborate Daily Across Functions
Business people and developers must work together daily throughout the
project.
• common focus, mutual trust, and respect;
• collaborative, but speedy, decision-making process;
• the ability to deal with ambiguity
• Use cross-functional teams that everyone needed to specify, develop, test
and deliver a working “slice” of functionality.
• Use standup meetings to communicate daily about issues and impediments
across disciplines.
• collaboration ≠ communication
Cross-functional collaboration on each small increment yields faster, more
effective knowledge transfer with less rework.
15
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
16. Values & Principles of Agile Software DevelopmentBrad Appleton
Collaborate Daily Across Functions
“Disciplined agile teams adopt practices such as on-site
customer and active stakeholder participation, and adopt
inclusive tools and techniques which enable stakeholders to
be actively involved with solution delivery.”
―Scott Ambler and Mark Lines, Disciplined Agile Delivery
“Agile teams are characterized by ... intense collaboration,
within and across organizational boundaries.
•teams have a common focus, mutual trust, and respect;
•a collaborative, but speedy, decision-making process;
•and the ability to deal with ambiguity.
We distinguish collaboration from communication.
•Communication is the sending and receiving of information.
•Collaboration is actively working together to deliver a work product
or make a decision.”
―James Highsmith & Alistair Cockburn, Agile Software Development: The Business of Innovation
17. Values & Principles of Agile Software DevelopmentBrad Appleton
Align, Support & Trust
Build projects around motivated individuals. Give them the environment and
support they need, and trust them to get the job done.
• Lean teaches us that decisions must be made by the people who know the most
about the situation.
• This means that managers must trust their staff to make the decisions about the
things they're paid to know about. ―Martin Fowler & James Highsmith, On the Agile Manifesto
• Leadership-collaboration rather than command-control management.
• Set goals & constraints, providing boundaries in which innovation can flourish.
• Who makes decisions isn’t as important as collaboration on information to make
informed decisions.
• Agility depends on trusting individuals to apply their competency in effective
ways. ―James Highsmith & Alistair Cockburn, Agile Software Development: The People Factor
Empower from above, support from beneath, then trust in the collective
ownership of motivated people with a common purpose.
17
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
18. Values & Principles of Agile Software DevelopmentBrad Appleton
Align, Support & Trust
“Agile companies practice leadership-collaboration rather
than command-control management.
▪ They set goals and constraints, providing boundaries within which
innovation can flourish.
▪ They understand that who makes decisions isn’t as important as
collaboration on information to make informed decisions.
▪ They understand that agility depends on trusting individuals to apply
their competency in effective ways.”
―James Highsmith & Alistair Cockburn, Agile Software Development: The People Factor
“Realize that you need to build teams from people who are willing to
work together collaboratively and learn from each other. Have the
humility to respect one another and realize that people are a
primary success factor in solution delivery. Allow them to create an
environment in which they will thrive as a team”
―Scott Ambler and Mark Lines, Disciplined Agile Delivery
19. Values & Principles of Agile Software DevelopmentBrad Appleton
Convey Information via Conversation
The most efficient and effective method of conveying information with and
within a development team is face-to-face conversation.
• The issue is not documentation — the issue is understanding! The indicator of
success is … Will the people involved gain the understanding they need?
•Writing is difficult and inefficient … We use it because we have to, but most
project teams can and should use more direct communication techniques.
―Martin Fowler & James Highsmith, On the Agile Manifesto
• Place people physically closer
• Replace documents with talking in person and at whiteboards
• Improve the team’s amicability ― its sense of community and morale ― so that
people are more inclined to relay valuable information quickly.
―James Highsmith & Alistair Cockburn, Agile Software Development: The People Factor
Documentation efforts should be limited to only what is absolutely essential
for the purpose of facilitating shared understanding with stakeholders and to
maintain and evolve the product.
19
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
20. Values & Principles of Agile Software DevelopmentBrad Appleton
Convey Information via Conversation
“Tacit knowledge cannot be transferred …
onto paper.
▪ Tacit knowledge can be transferred by moving the
people who have the knowledge around.
▪ The reason is … tacit knowledge is not only the
facts but the relationships among the facts—that
is, how people might combine certain facts to
deal with a specific situation.”
―Nancy Dixon, Common Knowledge (Harvard Business School Press)
21. Values & Principles of Agile Software DevelopmentBrad Appleton
Convey Information via Conversation
SECI stages from Ikujiro Nonaka and Noboru Konno in their article "The Concept of ‘Ba’: Building a
Foundation for Knowledge Creation" published in California Management Review, vol. 40, #3, 1998“.
22. Values & Principles of Agile Software DevelopmentBrad Appleton
Convey Information via Conversation
23. Values & Principles of Agile Software DevelopmentBrad Appleton
Working Software Defines Progress
Working Software is the primary measure of progress.
• Provides milestones that can't be fudged, which imparts an accurate measure of
the progress and a deeper understanding of the risks involved in any given project
—Martin Fowler and James Highsmith, On the Agile Manifesto
• Provides stakeholders with concrete feedback, making the current status of your
project transparent while providing an opportunity for stakeholders to provide
improved direction for the development team —Scott Ambler, IBM Agile Practice Leader
No “partial credit! Don’t accept development tasks/changes as “completed”
until they are:
• Implemented & Unit-Tested
• Integrated, Built & Regression Tested
• Accepted & Validated by Downstream Consumers
No other indicator of progress is more trustworthy or transparent than
visibly tangible, working, end-results.
23
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
24. Values & Principles of Agile Software DevelopmentBrad Appleton
Working Software Defines Progress
“Working software tells the developers and sponsors what they
really have in front of them—as opposed to promises as to
what they will have in front of them. The working software
can be shipped, modified, or scrapped, but it is always real.”
―James Highsmith & Alistair Cockburn, Agile Software Development: The Business of Innovation
“The primary measure of a solution delivery project should be the
delivery of a consumable solution that provides actual value to your
stakeholders. This solution should meet the changing needs of its
stakeholders, not some form of ‘earned value’ based on the delivery
of documentation of the holding of meetings.”
―Scott Ambler and Mark Lines, Disciplined Agile Delivery
“Working software is the measure of progress because there's no other
way of capturing the subtleties of the requirements: Documents and
diagrams are too abstract to let the user ‘kick the tires’.”
—Dave Thomas, coauthor of The Pragmatic Programmer
25. Values & Principles of Agile Software DevelopmentBrad Appleton
Sustainable Pace
Agile processes promote sustainable development. The sponsors, developers,
and users should be able to maintain a constant pace indefinitely.
• Sustainable development means finding a working pace (40 or so hours a week)
that the team can sustain over time and remain healthy.
•Agility relies upon people who are alert and creative, and can maintain that
alertness and creativity for the full length of a software development project.
—Martin Fowler and James Highsmith, On the Agile Manifesto
Work at a steady but productive cadence with enough energy-reserves to
occasionally “sprint” when needed.
Work only as many hours as you can be productive and only as many
hours as you can sustain.
Burning yourself out unproductively today and spoiling the next two
days' work isn't good for you or the team. —Kent Beck
25
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
26. Values & Principles of Agile Software DevelopmentBrad Appleton
Sustainable Pace
If the pace of the team is not sustainable several undesirable
effects are likely to occur:
1. Defects will increase. Tired teams let more defects through.
2. Work output will decrease. Tired teams do less work in more time!
3. Morale will drastically decrease. This may lead to employee
turnover at a most unfortunate time in the project.
4. The blame game will become common. (Not our fault you didn’t
say X. I said X. Did not. Did so…)
5. The team starts to abandon good practices for those that “seem”
faster. —Bob Hartman, Work at a Sustainable Pace
“Our experience is that you can only do high-quality, intellectual work
for 5 to 6 hours a day before burning yourself out. The rest of the
day can be filled up with email, meetings, water cooler discussions and
so on, but people’s ability to do ‘real work’ is limited.”
―Scott Ambler and Mark Lines, Disciplined Agile Delivery
27. Values & Principles of Agile Software DevelopmentBrad Appleton
The Agile Promise and the Agile Premise
The Agile “promise” is that rapid-responsiveness to
change will yield returns of improved cycle-time and
quality with far less rework (and at a sustainable pace).
The Agile “premise” that makes it all possible is that we
constantly keep all artifacts clean and lean so they are
always easy to change quickly!
• This applies not only to product-artifacts (e.g., code, designs,
specs) but also to planning and process artifacts.
The way we do this is with continuous technical excellence
and ruthless simplicity-of-design!
28. Values & Principles of Agile Software DevelopmentBrad Appleton
Continuous Technical Excellence
Continuous attention to technical excellence and good design enhances agility.
• To embrace change we must be working off a technically solid foundation
• Otherwise change becomes risky and a thing to be avoided.
• Design is a continuous activity that's performed throughout the project (not
just up front)
• Don’t live with “broken windows” — and follow the boy scout rule
• Establish a Definition of Done (“Done Done”)
• Continuous Integration with Automated Testing
• Emergent & Incremental Design with Refactoring/Restructuring
Prolonged inattention to technical excellence and good design creates
technical debt, which compounds until it is paid!
Technical debt impedes agility and lowers the team’s productivity
28
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
29. Values & Principles of Agile Software DevelopmentBrad Appleton
Continuous Technical Excellence
"Agile approaches emphasize quality of design, because
design quality is essential to maintaining agility.
One of the tricky aspects, however, is the fact that agile processes
assume and encourage the alteration of requirements while the
code is being written.
• As such, design cannot be a purely up-front activity to be
completed before construction.
• Instead, design is a continuous activity that's performed
throughout the project.
• Each and every iteration will have design work.”
—Martin Fowler and James Highsmith, On the Agile Manifesto
“We are what we repeatedly do. Excellence, therefore, is
not an act, but a habit.” —Aristotle
30. Values & Principles of Agile Software DevelopmentBrad Appleton
Complexity Kills Projects!
Fred Brooks wrote, “Software entities are more complex
for their size than perhaps any other human construct.
Many of the classic problems of developing software
products derive from this essential complexity and its
nonlinear increases with size.”
• Extra features increase the complexity of the code, driving up costs
nonlinearly —the cost of the system with that extra code is not just
double; it's perhaps ten times more expensive.
• Business processes should be simplified first and automated later.
How often do we help our customers simplify their processes before
automating them?
• The cost of complexity is hidden; it has a second-order effect on
cost, so we just don't see it in our financial systems.
• This makes complexity all the more pernicious —it's hard to cost-
justify spending money to keep things simple.
—Mary Poppendieck, Leading Lean Software Development
31. Values & Principles of Agile Software DevelopmentBrad Appleton
Simplicity is Essential
Simplicity — the art of maximizing the amount of work not done — is essential.
• As projects change and evolve, “working ahead” results in wasted effort and
rework.
• This applies to both technical work and project planning.
• Defer decisions until the last responsible moment. Deferred decisions should
not result in significant rework (technical debt)
• Do “just enough” and “just in time”; no “just in case”
• Practice “emergent design” with continual refactoring and periodic
restructuring
• Routinely question if a task/artifact is necessary and sufficient to: satisfy
iteration goals or quality concerns, sustain the product, and simplify its
evolution.
Do “just enough” just-in-time, then keep it clean and simple!
31
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
32. Values & Principles of Agile Software DevelopmentBrad Appleton
Simplicity is Essential
There is a fundamental misunderstanding of simplicity and
what it means to be simple:
• Many confuse simple with “simplistic” and “simplism” or that
which is dumbed-down to the point of being deceptive or
misleading.
• “Simple” to some people means a kind of oversimplification of an
issue, which ignores complexities and creates obfuscation and
outright falsehoods.
“Simple” refers to being essentially, synonymous for clarity,
directness, essentialness and minimalism. The simple
solutions are not necessarily the easiest [to do], but results
may end up being the “easiest” to use.
—Maarten Volders, Scrum Master, on Simplicity and Why it Matters
“Perfection (in design) is achieved not when there is nothing more
to add, but rather when there is nothing more to take away.”
—Antoine de Saint-Exupéry
33. Values & Principles of Agile Software DevelopmentBrad Appleton
Simplicity is Essential
“A complex system that works is invariably found to have
evolved from a simple system that worked.” —John Gall
“Simplify means to eliminate the unnecessary so that the necessary
may speak.” —Hans Hofmann
“The most powerful designs are always the result of a continuous
process of simplification and refinement.” —Kevin Mullet
“Simplicity is about subtracting the obvious, and adding the
meaningful. The simplest way to achieve it is through thoughtful
reduction” —John Maeda
“Fools ignore complexity; pragmatists suffer it; experts avoid it;
geniuses remove it.” —Alan Perlis
34. Values & Principles of Agile Software DevelopmentBrad Appleton
Self-Organizing Teams
The best architectures, requirements, and designs emerge from self-organizing
teams.
• Those who do the work are in the best position to know how to get it done.
• When given freedom within boundaries, teams will automatically gravitate
toward efficient solutions and will quickly adapt as needed.
• Stakeholders define the project goals and high-level schedules
• Development teams determine the best way to meet the goals and schedule
requirements.
• Management trusts the team to deliver on its commitments and need not look
“under the covers”
• The team has the responsibility to timely alert management to significant risks to
their commitments.
Agile teams collectively decide and do what is needed to: make and meet
commitments, develop a quality product, respond to feedback, and adapt
to changes.
34
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
35. Values & Principles of Agile Software DevelopmentBrad Appleton
Self-Organizing Teams
“Results emerge as a result of interactions….
Individuals within the system need to follow a set of
rules of interaction that allow feedback loops to be
created and to grow. New behaviors and capabilities
emerge from these feedback loops.”
—Matt Truxaw, Emergent behavior in software development teams
“What generates the energy and passion of self-organizing
teams, and their eventual high productivity, is that …
• members enjoy the opportunity to organize their own work
• and contribute their full human potential to the collectivity,
• rather than being limited to what the organization thinks it
can absorb, and only at those moments when it is ready to
absorb it.”
—Steve Denning, Creating & Sustaining High-Performance Teams
36. Values & Principles of Agile Software DevelopmentBrad Appleton
Self-Organizing Teams
“This causes a shift in the roles of managers from planning,
controlling, directing, and managing to new roles like building
trust, facilitating and supporting team decisions, expanding
team capabilities, anticipating and influencing change.”
―Diana Larsen, Exploring Self-Organizing Software Development Teams
“The team’s job is to self-organize around the challenges,
and within the boundaries and constraints, put in place
by management.
• Management’s job is to come up with appropriate challenges
and remove impediments to self-organization.
• That being said, the fewer constraints or controls put on a
team, the better.
• If leaders overly constrain how a team solves the challenge
given to it, self-organization will not occur.”
—Mike Cohn, The Role of Leaders on a Self-Organizing Team
37. Values & Principles of Agile Software DevelopmentBrad Appleton
Reflect and Adapt
At regular intervals, the team reflects on how to become more effective, then
tunes and adjusts its behavior accordingly.
Agile methods are not something you pick and follow slavishly.
• We can't come up with the right process for every situation.
• An agile team must refine and reflect as it goes along, constantly improving its
practices in its local circumstances. ―Martin Fowler and James Highsmith, On the Agile Manifesto
Those doing the work know best what is working and what needs fixing
• Reflect (look backward to move forward): Conduct team-wide retrospectives
at the close of each iteration (and at other important transitional milestones)
• Introspect: Constantly ask “is there a better/simpler way to do this?” and
“What have we learned from this?”
• Adapt: Execute and follow-through on making needed improvements
identified by the team.
Reflect and adapt in regular cycles to continuously learn and improve.
37
Agile Principle:
Meaning/Importance:
Actions/Behaviors:
Key Take-Away:
38. Values & Principles of Agile Software DevelopmentBrad Appleton
Internal
BACKUP SLIDES
Continuous Value thru
Working Software
Welcome Change --
Reflect and Adapt
39. Values & Principles of Agile Software DevelopmentBrad Appleton
Values vs. Principles vs. Practices
“We need all three to combine into the optimum blend:
– We need values to use as filters for our decisions.
– We need principles to give us ideas about what values
look like when they come out of the clouds and into
actual work on the ground.
– We need practices to … practice, to understand and build
skill in our craft.
Three go in, one optimum blend comes out.
That's where our skill as practitioners of Agile becomes
critical, creating the blend of values-based, principle-
guided, practice-grounded environments where project
teams can succeed at delivering value to the customers.”
—Diana Larsen, Agile Alliance Newsletter, Nov. 2009
40. Values & Principles of Agile Software DevelopmentBrad Appleton
The Unchangeable Rules of Software Change
Rule #0: Change is Inevitable!
The Requirements/Plans ARE going to change!
Rule #1: Resistance is Futile!
There isn't a darn thing you can do to prevent Rule #0.
Rule #2: Change is like Quicksand -- Fighting it only makes it worse!
The more you try to deny and defy rule #1 by attempting to prevent
rule #0, the worse things will get.
Rule #3: Change is like Quicksilver -- Tightening your grip makes it slip
from your grasp!
The more you try to deny and defy rule #2 by attempting to
precisely predict, or rigidly control change, the more erratic and
onerous the result will be.
Rule #4: Embrace change to control change!
The more flexible and adaptive you are at accommodating change,
the more control you will have over your outcomes.
— From The Unchangeable Rules of Software Change, The CM Journal, Feb 2006
41. Values & Principles of Agile Software DevelopmentBrad Appleton
Quotes on Change and Uncertainty
❖ It’s not the strongest who survive, nor the most intelligent, but the ones
most adaptable to change. —attributed to Charles Darwin
❖ Doubt is not a pleasant condition, but certainty is absurd. —Voltaire
❖ It is not necessary to change; survival is not mandatory. —W. Edwards Deming
❖ When the rate of change outside exceeds the rate of change inside, the end
is in sight. —Jack Welch
❖ Orders must change rapidly in response to change in circumstances. If one
sticks to the idea that once set, a plan should not be changed, a business
cannot exist for long. —Taiichi Ohno, Toyota Production System
❖ Uncertainty is inherent and inevitable in software development processes
and products. —H. Ziv and D.J. Richardson, The Uncertainty Principle in Software
Engineering, Aug 1996
❖ It will be important to organize future projects with enough agility to be able
to adapt to the additional emergence of new sources of unpredictable
change. —Barry Boehm, Making a Difference in the Software Industry, March 2008
42. Values & Principles of Agile Software DevelopmentBrad Appleton
Quotes on Change and Uncertainty [2]
❖ There is a highly sophisticated technical term biologists use to
describe completely stable systems. This fancy technical term is the
word “DEAD!” Change is not the enemy – stagnation is!
—From The Unchangeable Rules of Software Change
❖ Requirements changes late in the lifecycle are competitive advantage,
IF you can act on them! —Mary Poppendieck
❖ Becoming agile means accepting uncertainty about the future as a
way of dealing with the future. Any project development effort should
be a balance between anticipation (planning based on what we know
now) and adaptation (responding to what we learn over time).
—James Highsmith, Embrace Uncertainty
❖ Scrum’s Uncertainty Principle is: Customers don’t know what they want
until they see it, and they always reserve the right to change their mind.
—Jeff Sutherland, Emergence of Essential Systems
43. Values & Principles of Agile Software DevelopmentBrad Appleton
Quotes on Change and Uncertainty [3]
“Systems requirements cannot ever be stated fully in advance, not even
in principle, because the user doesn’t know them in advance--not
even in principle.
To assert otherwise is to ignore the fact that the development process
itself changes the user’s perceptions of what is possible, increases
his or her insights into the applications environment, and indeed
often changes that environment itself.
We suggest an analogy with the Heisenberg Uncertainty Principle: any
system development activity inevitably changes the environment out
of which the need for the system arose. System development
methodology must take into account that the user, and his or her
needs and environment, change during the process.”
—Dan McCracken and Michael A. Jackson, ACM SIGSoft, 1982
44. Values & Principles of Agile Software DevelopmentBrad Appleton
Quotes On Simplicity
❖ Perfection (in design) is achieved not when there is nothing more to add, but
rather when there is nothing more to take away. —Antoine de Saint-Exupéry
❖ There are two ways of constructing a software design: One way is to make it
so simple that there are obviously no deficiencies and the other way is to
make it so complicated that there are no obvious deficiencies. The first
method is far more difficult. —C.A.R. Hoare
❖ A complex system that works is invariably found to have evolved from a
simple system that worked. —John Gall
❖ The most powerful designs are always the result of a continuous process of
simplification and refinement. —Kevin Mullet
❖ Fools ignore complexity; pragmatists suffer it; experts avoid it; geniuses
remove it. —Alan Perlis
❖ Simplify means to eliminate the unnecessary so that the necessary may
speak. —Hans Hofmann
❖ Simplicity is about subtracting the obvious, and adding the meaningful. The
simplest way to achieve it is through thoughtful reduction —John Maeda
45. Values & Principles of Agile Software DevelopmentBrad Appleton
Quotes On Simplicity [2]
❖ Simple, clear purpose and principles give rise to complex intelligent behavior.
Complex rules and regulations give rise to simple stupid behavior. —Dee Hock
❖ Everything should be made as simple as possible, but not simpler. … Out of
clutter find simplicity; From discord find harmony; In the middle of difficulty
lies opportunity. —Albert Einstein
❖ Making the simple complicated is commonplace; making the complicated
simple, awesomely simple, that's creativity. —Charles Mingus
❖ Besides the noble art of getting things done, there is the noble art of leaving
things undone. The wisdom of life consists in the elimination of
nonessentials. —Lin Yu Tang
❖ Very often, people confuse simple with simplistic. The nuance is lost on
most. —Clement Mok
❖ Any intelligent fool can make things bigger, more complex, and more violent.
It takes a touch of genius--and a lot of courage--to move in the opposite
direction. —E. F. Schumacker
❖ Think simple … meaning reduce the whole of its parts into the simplest
terms, getting back to first principles. —Frank Lloyd Wright
46. Values & Principles of Agile Software DevelopmentBrad Appleton
Self-Organizing Teams
Agile teams collectively decide and do what is needed to: make and
meet commitments, develop a quality product, respond to
feedback, and adapt to changes.
Self-Organizing Teams are:
•Autonomous: There is no single central decision-making authority.
Control is distributed collectively to the team.
•Adaptive: The team dynamically adjusts as needed across roles,
functional specialties, and other boundaries, in order to solve their own
problems and improve their own performance.
•Accountable: The team collectively shares responsibility for results,
and members hold each other accountable for outcomes.
47. Values & Principles of Agile Software DevelopmentBrad Appleton
Quotes On Self-Organizing Teams
Self-organization does not mean that workers instead of
managers engineer an organization design. It does not
mean letting people do whatever they want to do. It means
that management commits to guiding the evolution of
behaviors that emerge from the interaction of independent
agents instead of specifying in advance what effective
behavior is. —Philip Anderson, The Biology of Business
Self-organizing teams are not free from management control.
Management chooses for them what product to build or often
chooses who will work on their project, but they are
nonetheless self-organizing. Neither are they free from
influence. —Mike Cohn, The Role of Leaders on a Self-Organizing Team
48. Values & Principles of Agile Software DevelopmentBrad Appleton
Quotes On Self-Organizing Teams
❖ A self-organized team is possible when people carry shared purpose,
principles and values. They support and respect each other. And they want
to succeed. The team works together to respond to changes that happen
together. They collectively do what needs to be done to build the software.
—Amr Elssamadisy & Deborah Hartmann, Learning is the Bottleneck
❖ Responsibility-Based Planning and Control: Respecting people means that
teams are given general plans and reasonable goals and are trusted to
self-organize to meet the goals. Respect means that instead of telling
people what to do and how to do it, you develop a reflexive organization
where people use their heads and figure this out for themselves.
—Mary Poppendieck, Implementing Lean Software Development
❖ What generates the energy and passion of self-organizing teams, and their
eventual high productivity, is that the members enjoy the opportunity to
organize their own work and contribute their full human potential to the
collectivity, rather than being limited to what the organization thinks it can
absorb, and only at those moments when it is ready to absorb it.
—Steve Denning, Creating & Sustaining High-Performance Teams
49. Values & Principles of Agile Software DevelopmentBrad Appleton
Quotes On Self-Organizing Teams [2]
❖ In agile teams, this concept of self-organization is taken quite far. Team
members collaborate to get work done. No one orders a team or individual
to do specific work. The team members volunteer for work that they see
needs doing, even if it is not something that is in their area of expertise. An
agile team is constantly promoting learning in its people.
—Mishkin Berteig, Team Self-Organization
❖ Scrum/Agile teams are self-organizing systems. Results emerge as a
result of interactions between the individuals on the team [and the team’s
values/principles]. Individuals within the system need to follow a set of
rules of interaction that allow feedback loops to be created and to grow.
New behaviors and capabilities emerge from these feedback loops.
—Matt Truxaw, Emergent behavior in software development teams
50. Values & Principles of Agile Software DevelopmentBrad Appleton
Agility in the Enterprise
“Adopting a disciplined approach to agile
delivery requires the courage to rethink some of
the agile rhetoric and make compromises where
necessary for the benefit of the ‘whole
enterprise’ and not just the whole team.
• In our experience most agile projects make compromises that
are not classically agile in order to get the job done.
• Rather than hiding this and fearing reprisals from those who
would accuse you of regressing to a traditional approach, it is
better to have the courage to take a pragmatic approach to
using agile in your situation
―Scott Ambler and Mark Lines, Disciplined Agile Delivery
51. Values & Principles of Agile Software DevelopmentBrad Appleton
Internal
Appendix: Source Materials
from specific Agile methods
Continuous Value thru
Working Software
Welcome Change --
Reflect and Adapt
52. Values & Principles of Agile Software DevelopmentBrad Appleton
XP Values
Extreme Programming initially recognized four values in
1999. A new value was added in the second edition of
Extreme Programming Explained.
The five values are:
• Communication
• Simplicity
• Feedback
• Courage
• Respect
See also “Why Agile Principles are Important” by Simon Baker
53. Values & Principles of Agile Software DevelopmentBrad Appleton
XP Principles
Humanity: Acknowledge human frailty, leverage human strengths,
and balance individual and team needs.
Economics: Enhance the option value of the software and the
team while remembering the time value of money.
Mutual benefit: All activities should benefit everyone.
Self-similarity: When something works in one context, try it in
another. Even if it eventually doesn't work, it's a start.
Improvement: 'Perfect' is a verb and not an adjective. Always
seek to improve.
Diversity: The team should comprise people with different
backgrounds, skills and perspectives.
Reflection: Think about how you're working and why you're
working.
54. Values & Principles of Agile Software DevelopmentBrad Appleton
XP Principles [2]
Flow: Deliver a steady flow of business value by engaging in all
activities simultaneously.
Opportunity: See problems as opportunities for change and
learning.
Redundancy: Don't be afraid to include redundancy, e.g. a distinct
testing phase after development, if it helps prevent disaster.
Failure: If you're having trouble succeeding, don't be afraid to fail.
Quality: Always push for higher quality.
Baby steps: The overhead of small steps is less than when a team
wastefully recoils from aborted big changes.
Accepted responsibility: Responsibility cannot be assigned. It
can only be accepted.
55. Values & Principles of Agile Software DevelopmentBrad Appleton
5 Values of Scrum
Commitment: Be willing to commit to a goal. Scrum provides
people all the authority they need to meet their commitments.
Focus: Do your job. Focus all your efforts and skills on doing the
work that you’re committed to doing. Don’t worry about anything
else.
Openness: Scrum keeps everything about a project visible to
everyone.
Respect: Individuals are shaped by their background and their
experiences. It is important to respect the different people who
comprise a team.
Courage: Have the courage to commit, to act, to be open, and to
expect respect.
Source: Agile Software Development with Scrum by Ken Schwaber and Mike Beedle
56. Values & Principles of Agile Software DevelopmentBrad Appleton
Principles of Scrum
Communicate: Share information and create daily visibility into
the project.
Self-organization: Empower the Team.
Learn and improve via experimentation, feedback & adaptation.
Deliver Value Early and Build Trust with Incremental
Product Delivery.
Respond & Manage Empirically: software development is
best implemented via an empirical rather than a rigid, inflexible
process.
The “Art of the possible”: Focus on fixed-time over fixed-
scope (do not dwell on what cannot be done).
Source: Agile Software Development with Scrum by Ken Schwaber and Mike Beedle
also: The “Why” of Scrum by Chris Fry of the Scrum Alliance
57. Values & Principles of Agile Software DevelopmentBrad Appleton
Project Mgmt Declaration of Interdependence
Value: We increase return on investment by making continuous
flow of value our focus.
Customer: We deliver reliable results by engaging customers in
frequent interactions and shared ownership.
Uncertainty: We expect uncertainty and manage for it through
iterations, anticipation and adaptation.
Individuals: We unleash creativity and innovation by recognizing
that individuals are the ultimate source of value, and creating an
environment where they can make a difference.
Teams: We boost performance through group accountability for
results and shared responsibility for team effectiveness.
Context: We improve effectiveness and reliability through
situationally specific strategies, processes and practices.
Source: www.pmdoi.org
58. Values & Principles of Agile Software DevelopmentBrad Appleton
9 Principles of DSDM
1. Active user involvement is imperative.
2. DSDM teams must be empowered to make decisions.
3. The focus is on frequent delivery of products.
4. Fitness for business purpose is the essential criterion for
acceptance of deliverables.
5. Iterative and incremental development is necessary to
converge on an accurate business solution.
6. All changes during development are reversible.
7. Requirements are baselined at a high level.
8. Testing is integrated throughout the lifecycle.
9. A collaborative and co-operative approach between all
stakeholders is essential.
Source: www.dsdm.org
59. Values & Principles of Agile Software DevelopmentBrad Appleton
9 Principles of Adaptive Sw Development
1. Deliver something to the client; check what they value.
2. Cultivate committed stakeholders.
3. Employ a leadership-collaboration style.
4. Build competent collaborative teams.
5. Enable team decision-making.
6. Use short timeboxed iterations to quickly deliver
features.
7. Encourage adaptability.
8. Champion technical excellence.
9. Focus on delivery activities, not process-compliance
activities.
Source: http://www.jimhighsmith.com/
60. Values & Principles of Agile Software DevelopmentBrad Appleton
Agile Leadership & Management Principles
Foster Alignment and Cooperation
• Organic teams: Enabling connections and adaptation through close
relationships on small, flexible teams.
• Guiding vision: Keeping the team aligned and directed with a shared
mental model.
Encourage Emergence and Self-Organization
• Simple rules: Establishing a set of simple, generative process rules for
the team.
• Open information: Providing free and open access to information.
• Light touch: Applying intelligent control to foster emergent order and
maximal value.
Institute Learning and Adaptation
• Adaptive leadership: Steering the project by continuously monitoring,
learning, and adapting.
Source: Sanjiv Augustine, Managing Agile Projects
61. Values & Principles of Agile Software DevelopmentBrad Appleton
7 Principles of Lean Software Development
1. Eliminate Waste (Extra Features, Reqts Churn, Handoffs)
2. Create Knowledge (Learn and Adapt thru Feedback)
3. Build Quality In (Continuous Integration & Automated Testing)
4. Defer Commitment (to the “Last Responsible Moment”)
5. Deliver Fast
6. Respect People (Empower the Team)
7. Improve the System (Optimize the Whole)
Source: Mary & Tom Poppendieck, www.poppendieck.com
62. Values & Principles of Agile Software DevelopmentBrad Appleton
Principles of Agile Modeling
• Assume Simplicity
• Embrace Change
• Enabling the Next Effort is
Your Secondary Goal
• Incremental Change
• Maximize Stakeholder ROI
• Model With a Purpose
• Multiple Models
• Quality Work
• Rapid Feedback
• Working Software Is Your
Primary Goal
• Travel Light
• Content Matters More Than
Representation
• Open and Honest
Communication
Source: Scott Ambler, www.agilemodeling.com
63. Values & Principles of Agile Software DevelopmentBrad Appleton
7 Properties of Crystal Clear
1. Frequent Delivery
2. Reflective Improvement
3. Osmotic Communication
4. Personal Safety
5. Focus
6. Easy Access to Expert Users
7. Technical Environment with Automated Tests,
Configuration Management, and Frequent Integration
Source: Alistair Cockburn, The Seven Properties of Running an Agile Project
64. Values & Principles of Agile Software DevelopmentBrad Appleton
Principles of the Agile Unified Process (AUP)
❖ Adapt the Process
❖ Balance Competing Stakeholder Priorities
❖ Collaborate Across Teams
❖ Demonstrate Value Iteratively
❖ Elevate the Level of Abstraction
❖ Focus Continuously on Quality
Source: Per Kroll & Walker Royce, Key Principles for
Business-Driven Development