Lean Software Development
“Every line of code costs money to write and more money to support. It is better for the developers to be surfing than writing code that won't be needed. If they write code that ultimately is not used, I will be paying for that code for the life of the system, which is typically longer than my professional life. If they went surfing, they would have fun, and I would have a less expensive system and fewer headaches to maintain.” – Jeff Sutherland, CTO PatientKeeper
The quote above is a fun (if slightly confronting) way of thinking around the idea that Software Development is all about delivering value to customers. The premise is that there is a long lasting cost to any line of code that is added to a software system. The cost is much greater than the initial development cost, so making sure that the right features are added is key. The implication is that the team (including the customer) needs to be sure that adding code (including complexity and future maintenance) does add enough value to justify the long term cost (the maintenance cost will be much higher than the initial development).
The term "Agile Software Development" is getting a little bit old hat. All the cool kids are talking about Lean development, as described by the Poppendiecks. The Lean Software Development principles are taken from domains such as Lean Manufacturing, especially as seen in Toyota, and initially introduced byWilliam Edwards Deming (Jason Yip links to YouTube videos introducing the ideas). The book Lean Thinking also has been recommended as a good introduction to the topic.
I have been hearing Doug talk about the idea, but haven't had much exposure before attending a NetObjectives Webinar on the topic. The principles (as articulated by the Poppendiecks) are:
- Eliminate Waste,
- Focus on Learning,
- Build Quality In,
- Defer Commitment,
- Deliver Fast,
- Respect People, and
- Optimize the Whole.
The most valuable thought for me was the idea of optimizing the whole. That is to ensure that the whole process is considered when performing process optimizations, and care is taken to avoid making localized optimizations that end up actually hindering the effectiveness of the process. Lean Development is a very interesting and useful looking way of working. It is well worth looking at the references listed above, and learning more.
July 13th, 2007 at 1:39 pm
I’d actually suggest starting with The Toyota Way by Jeffrey Liker.
July 15th, 2007 at 9:14 pm
thanks Jason — happily it lives at my library, so I’ll be grabbing a copy shortly
February 25th, 2010 at 11:34 am
Added to my favourites list and added to my blogroll.