1. Values, Practices & Principles
    1. Values (bring purpose to practices)
      1. Respect
      2. Courage
        1. Recognizing fears & taking effective actions
      3. Feedback
        1. Short feedback cycles
      4. Simplicity
        1. Look for simplest solution
      5. Communication
        1. Motion without communication is not progress
        2. Importance to create a sense of team & effective cooperation
    2. Practices (bring accountability to values)
      1. Primary Practices
        1. Sit together
        2. Whole Team
        3. Informative workspace
          1. Charts
          2. Stories or story cards on walls
          3. Categorised in Done, This week, This release, To be estimated, Future, etc
        4. Energized work
          1. Work only as many hours as you can be productive
          2. InSight comes to the prepared, retested and relaxed mind
          3. Incremental improvements in work hours
          4. Manage time better
        5. Pair programming
        6. Stories
          1. Give stories short names and a short prose or graphical description
          2. Write them on index cards
          3. Put them on a frequently passed wall
        7. Weekly cycle
        8. Quarter cycle
        9. Slack
        10. Ten minute build
        11. Continuous Integration
          1. Integrate & test changes after no more than a couple of hours
          2. The longer you wait to integrate, the more it costs and the more unpredictable to cost becomes
        12. Test-first programming
        13. Incremental Design
          1. Invest in the design of system every day
      2. Corollary Practices
        1. Real customer involvement
        2. Incremental deployment
        3. Team continuity
        4. Shrinking teams
        5. Root cause analysis
        6. Shared code
        7. Code and tests
        8. Single code base
        9. Daily deployment
        10. Negotiated Scope contract
        11. Pay per use
    3. Principles (domain specific guidelines) Techniques to translate values into practices
      1. Traceability (for development safely-critical systems)
      2. Humanity
      3. Economics
        1. Solving highest priority business need first maximises the project value
        2. Time value of money, i.e. a dollar today is worth more than a dollar tomorrow
        3. S/w development is more valuables when it earns money sooner and spends money later
        4. Value of software as options for the future
      4. Mutual Benefit
        1. Every activity should benefit all concerned
        2. Follow TDD/BDD rather than documentation
        3. Solve more problems than you create
        4. Search for practices that benefit me now, later and the customer as well
      5. Self-Similarity
      6. Improvement
        1. Best is the enemy of good enough (Mediocrity is preferable to waiting)
        2. Do not wait for prefection in order to begin
        3. Start an activity right away but refine the results over time
        4. Incremental design
      7. Reflection
        1. Don't try to hide mistakes but expose them & learn from them
      8. Diversity
        1. Teams need to bring together a variety of skills, attitudes & perspectives to see problems and multiple ways of solving them
        2. Two ideas about a design or problem present an opportunity not a problem
      9. Flow
        1. Continuous flow of activities rather than discrete phases
      10. Opportunity
        1. Turn problems into opportunities for learning & improvement, not just survival
      11. Redundancy
      12. Failure
        1. Fail to learn something valuable
        2. Try all options
        3. Failure isn't waste if it impacts knowledge
      13. Quality
      14. Baby steps
      15. Accepted Responsibility
  2. Main Idea
    1. Stay aware
    2. Change
    3. Adapt
  3. Whole Team
    1. Testers
    2. Interaction designers
    3. Architects
    4. Project managers
    5. Product managers
    6. Executives
    7. Technical writers
    8. Users
    9. Programmers
    10. Human resources
    11. Roles
  4. Theory of Constraints
    1. If any system there is on constraint at a time (occasionally two). To improve overall system throughput first find the constraint; make sure it is working full speed; then find ways of either increasing some of the work onto non-constraints or eliminating the constraints entirely.