Thursday, March 12, 2009

Lean Software Development

I recently posted a synopsis of Chapter 1 of Lean Software Development: An Agile Toolkit . I’ve kept up with my reading, but have failed to provide a synopsis of Chapters 2 and 3. In this post, I’m going to cover both in order to get caught up.

Chapter 2

This chapter is titled “Amplify Learning” and focuses on learning and experimentation as a key success factor of Agile Development. It starts with some great insight as to how software development differs from manufacturing. There have been numerous attempts at applying lean production practices to software development, most of them unsuccessful. There is a significant difference between the two. Development is more closely related to the creation of a recipe, where learning and experimentation are encouraged and rewarded. Production is simply following that recipe in the most efficient manner possible. The authors provide an excellent comparison between the two.

Development

Production

Designs the recipe

Produces the dish

  • Quality is fitness for use
  • Quality is conformance to requirements
  • Variable results are good
  • Variable results are bad
  • Iteration generates value
  • Iteration generates waste (called rework)

Chapter 3

This chapter is titled “Decide as Late as Possible” and focuses on delaying design decision as long as possible. The focus in Lean development emphasizes producing a design that is supportive of the changes that are inevitable. This is accomplished through iterations, with each part of the system being designed just enough to support the requirements for that iteration. This forces the design to be modular and adaptive to change as it will be modified in the next iteration. Once the system is released to production, the support lifecycle will be greatly enhanced as well.

One of the key concepts is delaying decisions until the last responsible moment (defined by the Lean Construction Institute), which is the moment at which failing to make a decision eliminates an important alternative. Delaying decisions is difficult for most people, it's hard work. This is a key concept in the Agile world. However, delaying decisions past the last responsible moment will lead to decisions made by default which is more damaging than making the wrong decision early.

I will try to provide a more complete synopsis of the next few chapters, but wanted to get caught up with these. Stay agile!

No comments:

Post a Comment