1. Build Quality In
1.1. Final verification should not find defects
1.1.1. find
1.1.2. fix defects
1.1.3. as early in the dev process as possible
1.2. Mistake-proof your process with test-first dev
1.2.1. tests must be available
1.2.1.1. to build confidence
1.2.1.2. in the correctness of the system
1.2.1.3. at any time during dev
1.2.1.4. at every level of the system
1.3. Break dependencies
1.3.1. system architecture
1.3.2. should support the addition
1.3.3. of any feature
1.3.4. at any time
2. Learn constantly
2.1. Predictable performance is driven by feedback
2.1.1. a predictable organization
2.1.2. develops the capacity
2.1.3. to rapidly respond to the feature
2.1.4. as it unfolds
2.2. Maintain options
2.2.1. make code change-tolerant
2.3. Last responsible moment
2.3.1. learn
2.3.1.1. before making irreversible decisions
2.3.2. too early or too late
2.3.2.1. don't make decisions
2.3.2.2. that will be expensive to change
2.3.2.2.1. before their time
2.3.2.3. don't make them
2.3.2.3.1. after their time
3. Deliver Fast
3.1. Rapid delivery, high quality, low cost are fully compatible
3.1.1. companies that compete
3.1.2. on the basis of speed
3.1.3. have a big cost advantage
3.1.4. deliver superior quality
3.1.5. are more attuned to their customers' needs
3.2. Queuing theory applies to development
3.2.1. drive down cycle time
3.2.1.1. small batches
3.2.1.2. fewer things in process
3.2.2. aggressively limit the size
3.2.2.1. lists
3.2.2.2. queues
3.3. Managing workflow is a lot easier than managing schedules
3.3.1. reliable, predictable deliveries
3.3.2. reliable, repeatable workflows
3.3.2.1. with iterations
3.3.2.2. or Kanban system
4. Keep Getting Better
4.1. Failure is a learning opportunity
4.1.1. most reliable performance comes when
4.1.1.1. even small failures are
4.1.1.1.1. deeply investigated
4.1.1.1.2. corrected
4.1.1.2. noise is not tolerated
4.2. Standards exist to be challenged and improved
4.2.1. embody
4.2.1.1. the current
4.2.1.2. best-known practice
4.2.2. in standards that everyone follows
4.2.3. while encouraging everyone
4.2.3.1. to challenge
4.2.3.2. to change
4.2.4. the standards
4.3. Use the scientific method
4.3.1. teach teams
4.3.1.1. to establish hypotheses
4.3.1.2. conduct many rapid experiments
4.3.1.3. create concise documentation
4.3.1.4. implement the best alternative
5. Optimize the Whole
5.1. Focus on the entire value stream
5.1.1. concept → cash
5.1.2. customer request → deployed software
5.2. Deliver a complete product
5.2.1. customers want their problems solved
5.2.2. complete solutions are build by complete teams
5.3. Think long term
5.3.1. beware of
5.3.1.1. governance
5.3.1.2. incentive systems
5.3.2. that
5.3.2.1. drive short-term thinking
5.3.2.2. optimize local performance
6. Eliminate Waste
6.1. Building the wrong thing
6.2. Failure to learn
6.2.1. interference with learning
6.2.1.1. governance by variance from plan
6.2.1.2. frequent handovers
6.2.1.3. separating decision making from work
6.3. Thrashing
6.3.1. interference with smooth flow of value
6.3.1.1. task switching
6.3.1.2. long lists of requests
6.3.1.3. big piles of partly done work
6.3.2. deliver half the value
6.3.2.1. for twice the effort
7. Engage everyone
7.1. Autonomy
7.1.1. most effective work groups
7.1.1.1. are semi-autonomous teams
7.1.1.2. with an internal leader
7.1.1.2.1. who has end-to-end responsibility
7.1.1.2.2. for complete, meaningful tasks
7.2. Mastery
7.2.1. respect for people means providing
7.2.1.1. the challenge
7.2.1.2. feedback
7.2.1.3. environment
7.2.2. that enables everyone to become excellent
7.3. Purpose
7.3.1. only by believing
7.3.2. in the purpose of their work
7.3.3. people will become engaged
7.3.4. in achieving that purpose