Notes on the prelude chapters of Lean Software Development (2003)

Principles

  1. Eliminate Waste:
    1. Specific cursory examples of waste:
      1. “If a development cycle has collected requirements in a book gathering dust, that is waste.”
      2. “If developers code more features than are immediately needed, that is waste.”
      3. “In product development, handing off development from one group to another is waste”.
      4. **The ideal is to find out what a customer wants, then develop it and deliver exactly what they want, virtually immediately. Whatever gets in the way of rapidly satisfying a customer need is waste.”
    2. Q: Is flexibility in architecture waste?

NOTE

I’d probably consider “find out what a customer wants” to be an area of personal improvement. My personal interview/grill skills definitely leave a lot to be desired; I have a hard time not projecting my personal desires/concerns/opinions into the process.

  1. Amplify Learning:
    1. Iterative learning; the ability to get it wrong, but move on fast
    2. Specific analogy is cooking recipes: the ability to make→evaluate→make.
    3. Cycle mentioned from earlier:
      1. Design
      2. Implement
      3. Feedback
      4. Improve
  2. Decide as late as possible
    1. “A key strategy for delaying commitments when developing a complex system is to build a capacity for change into the system.”
      1. Half-answers Q from above: “Is flexibility in architecture waste?”. Leaning no, but I’m still perpetually haunted by conversations around “But what if they want…?” —