Dave Nicolette made a post called
Fear of falling in which he stated that although Lean respects people it is for organizations that do not trust their people. I disagreed with this position and left a comment citing sources to support my disagreement. I also tried to explain how I differentiate Lean from the rest of the other Agile methodologies. Dave responded to my comment with this
longish post.
First, I never meant to imply or suggest that Dave did not value the Lean approach or that he was not aware of it or had an understanding of it. I apologize for my lack of clarity, that was not what I intended. I do have the opinion that Dave does not fully understand the depths of Lean philosophy as a way of doing knowledge work, as philosophy in action. I also have the same
opinion of myself. And yes I agree that Dave and I are very close in our respective points of view. I also agree that small differences can have very big consequences, for we live in a non-linear world.
In the third paragraph of the second post Dave explains the main distinction between Lean and Agile:
There is no escaping the fact that human beings perform all the work, no matter the process, and that treating those human beings properly is an effective way to reduce waste. Even in purely traditional organizations, when the people are treated fairly and professionally they deliver better results than otherwise. I just don't think that, in itself, rises to the level of the Agile Manifesto's statement that we value individuals and interactions more than processes and tools. Rather, it seems the goal is to refine the processes and tools, using human factors as a means to that end. Ultimately, the process is still regarded as the means to success, with the people supporting it by being alert to opportunities to eliminate waste. With agile development, the goal is to deliver value to the customer, and the process is regarded as a tool in the hands of the project team.
From my understanding of Lean, it has the same view as expressed in the last line. Lean like Agile says that processes must serve the goal of delivering value to customers, see
Lean Thinking. Since the distinction between the two, for Dave, is centered around the issue of processes, this leads me to the question: can software development occur without processes? I am convinced that the answer is no and I freely admit that this maybe a failure on my part and yes I know this is a contradiction -- I just don't know how to say it any other way. lean by the way takes the same position. Some of Dave's arguments seem to indicate that he does not agree with this, which I have now chosen to interpret as: it is Dave's position that Agilists will choose, modify and replace processes as needed, based on the context and what they learn. They do this so that they can improve how they deliver value to customers. Leanist in contrast will only improve the process in hand. To support this position Dave argues that since Lean came from manufacturing it just has to make a pre-designed product, using the processes it already has in place. However, a counter example to this is Pratt & Whitney. To produce jet engine turbine blades they bought an incredibly expensive machine and set up a complicated process around it. The process and the machine were very difficult to use and after seeing how expensive and wasteful it was they completely redid the process using 4 much lower cost specialized grinding machines. The result was a significant improvement in their productivity; for full details see the book: Lean Thinking.
Dave then likens software development to construction where there are a large number of unknowns that have to be dealt with to construct a building that matches the architect's design. This is an okay analogy, but since lean philosophy has been applied to product development, such as a car, by Toyota, I would suggest that it is a better match to software development. In the book,
The Toyota Product Development System, the authors explain that this is a Lean product development system. They also show how it does not put people second nor does the company treat these product development people as if they are not to be trusted. In fact, Toyota does not use a plan driven approach for product development and they assign full responsibility to the engineers who taken on the challenges of delivering the different components. Toyota built the Prius this way, changing the design and developing new technologies as they learned more about the needs of the customer and they still had the first version rolling off the manufacturing lines every 12 months.
Lean starts with the view that collaborative work is always done in systems, designed for and by people, and that the proper goal of all these systems is to deliver value to customers. Their analysis has lead them to understand that the biggest and most universal constraint of all of these systems, past, present and future, is waste. Lean thinking then arrives at this conclusion: given that these are human systems, then only humans can improve or replace them and the only true way for humans to deal with all of these different types of systems and contexts in which they operate, is to adopt the philosophy of improving the delivery of value to the customer by eliminating waste in the systems.(yes that is a mouthful but I want it to be exact as i could write it and to do this I had to for go brevity, my apologies.) Lean empowers people to change processes to completely new and radicals one, like Toyota did when they created their product development system. As a result, Toyota product development employees are 4 times as productive as those using the traditional plan driven processes, see
Product Development for the Lean Enterprise.
Although I view Lean Software Development as being a type of Agile, just like XP, FDD, SCRUM and DSDM, I do not view the entire Agile movement as being similarly single-minded about development being a system's activity and that waste is the root cause of most of the problems. I am by my opinion, not a Leanist, I have not embraced their the seek out and destroy waste where ever it way be philosophy.
But having said all this, Dave has a valid point, in that the strength of Lean is also its weakness, in that working on removing waste in the details of the process people can easily settle for just finding local improvements and not global ones. In the latest round of backlash against Agile, we are seeing stories about
blind and even ultra-rigid application of Agile. When I read these stories I am reminded of the old adage that no matter how good the programming language is, it does not prevent people from still writing bad code in it. The Agile Manifesto champions great values and principles but like everything else, we humans can easily misused it.
Four final points, the people in the Lean movement have encountered significant resistance to having it adopted by those using traditional processes. I share the sentiment Dave expressed in his last paragraph. Any mis-interpretation of what Dave wrote lies with me and thank you Dave for responding to my comment.