In terms of Agile software development, what does Lean mean? How do the principles of Lean process improvement fit into Agile development?
It's a common misconception that Agile software development means moving faster. Agile isn't actually about going faster. Agile teams actually go at the same pace, but they work on smaller chunks. Agile is more flexible, not faster. This allows them get more work done by helping to shift focus sooner.
Many organizations pick and choose which Lean practices to keep and which to ignore. They are usually missing some of the practices, and you need them all. When project managers see the full list of Lean process improvement principles and understand what each one means, they tend to see why these practices are useful.
These are the core principles of Lean processes:
- Eliminate waste
- Amplify learning
- Decide as late as possible
- Deliver as fast as possible
- Empower the team
- Build integrity in
- See the whole
Organizations mistakenly think that Lean means no documentation. Eliminating waste is No. 1 of those seven core principles of Lean, and documentation is often misinterpreted as waste, so a lot of teams stopped writing down requirement specs and design schemas. That's going too far. Lean means "lite" -- meaning only what's essential. But you still have to have that essential documentation.
Documentation helps keep your developers on the same page; in some cases there is a need for audit trails, and you generally want to be able to see what's in your test cases; but they don't need to have every detail and contingency. It's a struggle to get that balance right.
"Just in time" is another Lean principle that takes a delicate balance; it means deciding as late as possible. You don't have to design your entire architecture up front. Design and build what you need when you're ready to implement it. Just-in-time design is good practice, especially when everyone's in the same room, as opposed to a globally distributed team. If the team hasn't discussed what they need to build and it's not designed yet, it won't work. "Just in time" is Lean and can be very good, but has to be done well.
A lot of companies haven't heard of Lean, but they're trying to do certain Lean practices from some sort of Agile mismatch. They often don't know the fable of the chicken and the pig. This is an important illustration of why to empower the teams. Just-in-time design only works when you empower the team.
When it comes to software development, the Lean concept of building integrity in is also important. You can think of integrity as software quality. Build software quality in at every step -- from requirements to design to development to testing to deployment to maintenance. These principles are handed down from the Toyota way: They were pioneers in Lean production and assuring high quality at every step. The old style was to do the whole thing and then, at the end, check to see if the product is good enough. Building quality at every step means constantly testing and checking to make sure what you're building is absolutely right the first time.
Do you have questions about Agile project management, Lean process improvement, or any other
aspect of delivering quality software? Let us
knowand we'll get our experts working on the answers.
About the expert:
Michael Hackett is a founder and senior vice president of LogiGear Corp., a software testing company based out of the Silicon Valley and with major operations in Vietnam. He has nearly twenty years of experience with software testing and design. Hackett's focus is particularly on Web applications in the financial, healthcare and consumer electronics industries. He's co-written two books on software testing and currently teaches for the Certificate in Software Quality Engineering and Management at University of California at Santa Cruz Extension.
This was first published in July 2013