Eliminate Waste
The three biggest wastes in software development are:
 |
Extra Features We need a process which allows us to develop just
those 20% of the features that give 80% of the value.
|
 |
Churn
If you have requirements churn, you are specifying too
early. If you have test and fix cycles, you are testing too
late.
|
 |
Crossing Boundaries Organizational boundaries typically increase cost by
over 25%, creating buffers that slow down response time and interfere with
communication.
|
Create
Knowledge
Planning is useful. Learning is essential.
 |
Use the Scientific Method Teach teams to: establish hypotheses, conduct many
rapid experiments, create concise documentation, and implement the
best alternative.
|
 |
Standards Exist to be Challenged and Improved
Embody the current best known practice in standards
that everyone follows, while actively encouraging everyone to challenge and
change the standards.
|
 |
Predictable Performance
is Driven by Feedback A predictable organization does not guess about the
future and call it a plan; it develops the capacity to rapidly respond to the
future as it unfolds.
|
Build Quality In
If you routinely find defects in your verification
process, your process is defective.
 |
Mistake-Proof Code with
Test-Driven Development
Write executable specifications instead of requirements.
|
 |
Stop Building Legacy Code
Legacy code is code that lacks automated unit and acceptance tests.
|
 |
The Big Bang is Obsolete
Use continuous integration and nested synchronization.
|
Defer Commitment
Abolish the idea that it is a good idea to start
development with a complete specification.
 |
Break Dependencies
System architecture should support the addition of
any feature at any time.
|
 |
Maintain Options
Think of code as an experiment – make it
change-tolerant.
|
 |
Schedule Irreversible Decisions at the Last Responsible
Moment
Learn
as much as possible before making irreversible
decisions.
|
Deliver Fast
Lists and queues are buffers between organizations that
simply slow things down.
 |
Rapid Delivery, High Quality, and Low Cost are Fully
Compatible
Companies that compete on the basis of speed have a big
cost advantage, deliver superior quality, and are more attuned to their
customers' needs.
|
 |
Queuing Theory Applies to Development, not Just
Servers
Focusing on utilization creates a traffic jams that
actually reduces utilization. Drive down cycle time with small batches and fewer
things-in-process.
|
 |
Limit Work to Capacity
Establish a reliable, repeatable velocity with iterative
development. Aggressively limit the size of lists and queues to
your capacity to deliver.
|
Respect People
Engaged, thinking people provide the most sustainable
competitive advantage.
 |
Teams Thrive on Pride, Commitment, Trust, and Applause
What makes a team? Members are mutually committed to
achieve a common goal.
|
 |
Provide Effective Leadership
Effective teams have effective leaders who bring out the
best in the team.
|
 |
Respect Partners
Allegiance to the joint venture must never create a
conflict of interest.
|
Improve the
System
Brilliant products emerge from a unique combination of
opportunity and technology.
 |
Focus on the
Entire Value Stream
– from concept to
cash.
– from customer request to deployed software.
|
 |
Deliver a Complete Product
Develop a complete product, not just software. Complete products are built by complete teams.
|
 |
Measure UP
Measure process capability with cycle time. Measure team performance with
delivered business value. Measure customer
satisfaction with a net promoter
score.
|
|
|
|