In a casual conversation the other day with expert in lean development Mary Poppendieck, I learned a thing or two about the concept and what it meant for software development. I think one of the key things I took away is to think of lean development as a philosophy, not a methodology, making that the fundamental difference from agile development (and I know some may have trouble discerning between the two, I myself being one of them). Interestingly enough though, the two do a still have a lot in common and are a lot more easily aligned than other concepts.
Mary mentioned multiple times throughout our talk that the main ideas of lean development are to constantly eliminate waste and constantly deliver more for less. Having a keen sense on what delivers value, knowing how to manage workflow, and finding and dealing with defects right away are some ways to eliminate waste and use of resources, Mary told me. She then went on to say that big backend-testing mechanisms have become all too accepted, but she begged to differ: “I contend it’s not ok to have big backend-testing mechanisms. It just means the process isn’t working," and therefore turning into a waste in resources.
But with similar tenants to agile development, such as delivering high quality, working code and to deliver reliably (what Mary more specifically defined as delivering what the customer wants) it’s sometimes tough to tell the difference between the two. However, Mary did agree that both agile and lean are driving towards the same objective, but it really depends on what your definition of agile is to truly say one is like the other. But with the use of processes like Kanban, which is derived from lean thinking, it’s hard for me to just think of lean development as a way of thinking. So maybe what it really comes down to is: What is your definition of lean development?