15 Lean Failure Lessons from Software Development, 2/3

Can it be true that as many as 95% of Lean transformations fail? If so, how? Challenges from the complexities of modern software development offer insights. This post is part 2 of a 3-part exploration, inspired by the article The Coming Software Apocalypse.

Lesson #6 Difficulty in Testing Our Systems

“When we had electromechanical systems, we used to be able to test them exhaustively,” says aeronautics and astronautics professor Nancy Leveson at MIT. We could think through all possible configurations and interlocks controlling train movements, put them on a few sheets of paper, and run physical trains through these configurations. We could build, test and know exactly what we were dealing with.  Lean is a system of human behaviors, which are not as reliable as electromechanical systems. We can’t exhaustively test how people will react in each new situation they encounter. When we build a lean management system, there will be bugs. We need to run experiments, tolerate failure, learn and adapt. If we expect people to always act rationally, we are in for a Lean failure. [Edit: If you noticed that this lessons seems similar to #5, skip to comments section below.]

Lesson #7 Requirement Errors, Not Coding Errors

“The serious problems that have happened with software have to do with requirements, not coding errors.” It is the rare and fortunate Lean transformation that begins due to clear requirements and pressure to change from customers. When a good customer can tell a business what they need in order to secure future business and grow profitably together, the transformation gains direction and energy. A Lean efforts that focuses on cost at the expense of customer and supplier relationships, or increases capacity without a growth plan, is courting a Lean failure.

Lesson #8 Faithful Followers, Bad Instructions

“The software did exactly what it was told to do. The reason it failed is that it was told to do the wrong thing.” Lean can help us do things efficiently, even things that we should not be doing at all. Like software, Lean fails due to bad design even when the execution is good.

Lesson #9 Ask People What They Need

According to the article, Microsoft’s integrated development solution Visual Studio, used by about a third of all professional programmers, has over 55 million lines of code. More than 98 percent of it is completely irrelevant to the user, missing fundamental problems that people were facing. Lean fails when the people who are leading the effort don’t go to the people who will live and work within the system each day, and ask them what they need in order to do their job successfully.

Lesson #10 Communication Problems

In software development, communication may be the weakest link. The main problem is not know-how, it is know-what. The people know how to code. The problem is what to code. Requirements are are vague and ambiguous, allowing each person to interpret it slightly different way. The article argues that there is a stronger need to study how programmers perceive the tools for software development, rather than build new tools. That’s true of Lean also. It’s often peoples’s perception, misunderstanding or misplaced confidence in Lean methods that cause failures, not the lack of a powerful enough problem solving methods, kata cards or templates.

To be continued.

2 Comments

  1. John

    November 7, 2017 - 12:55 pm
    Reply

    Good stuff.

    #6 here seems very similar to #5 in the first one, so much so I wonder if the repeat is an editing mistake hidden by the 2 parts being separate posts?

  2. Jon Miller

    November 7, 2017 - 5:30 pm
    Reply

    You’re right John. I proofread them separately but did not think to compare them. It was a cut-paste error while splitting the original article into 3 parts. I’m going to leave it as it is though. I guess the article above has only 14 lessons, so here is a 15th.

    Lesson #6 revised
    As my error above demonstrates, we can’t proofread or test individual components and expect that when we put them together, they will work together without error. The whole is greater the than the sum of its parts. This is true in writing text, and probably code. Lean transformation only works when it reaches over time across the whole organization in all its scope and complexity. It is certainly true that we can’t isolate and improve different functions of our organization, and expect that they will work smoothly together when brought together. Lean failures happen when we remain satisfied at optimizing some but not all parts of the organizations, causing internal misalignment, conflict, or inability to sustain the improved areas.

Leave a Reply to Jon Miller

Cancel reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.