9

We are seeing more emphasis on the concept of Lean Software Development, especially by the Agile community.

It's definitely exciting to imagine that the software industry can be as productive, efficient and effective as other traditional areas where the Toyota Production System is used literally.

But to what extent the concepts of Agile are related to the original TPS? What points are equivalent? And what points differ?

And the most important question: can we achieve a truly lean software production, as the original Lean dictates?

4 Answers 4

8

Most focus for Lean Software Development has historically been on the production principles. However, there's now a new school of thought which suggests that those principles are somewhat limited where it comes to software development.

Most of software development is about producing something new; something which has never been produced before. Because of this, most software projects have natural variance and variability. Trying to apply the principles of Lean Production to create predictable, reliable delivery can actually stifle that variance and variability, reducing innovation.

The new school of thought treats software not as a Lean production line, but as Lean product development - in that it's more like designing new cars than building the same car over and over again.

David Anderson's Kanban method, which @Pawel mentions, derives more from the new school of thought than the old. He gives the following guidelines:

  • Value trumps flow
  • Flow trumps eliminating waste
  • Then eliminate the waste.

For instance, if you can get something that's extremely valuable to the business into production, do it before anything else, even if it means other pieces of work hang around for longer. After that, do what's needed to keep work flowing through the system. This may mean having queues or buffers like "ready for development" or "ready for test", even though those would be considered inventory, and therefore waste. After that, eliminate waste.

If you're looking for work in the Lean Product Development space whose principles can be carried across to Lean Software Development, I recommend Don Reinertsen's Managing the Design Factory and John Seddon's Freedom from Command and Control. Other works related to Lean thinking, like Peter Senge's Fifth Discipline, may also be useful.

For actual Lean Software Development, I recommend David Anderson's Kanban and Jurgen Appelo's Management 3.0.

Dan North's also spent some time looking at how to apply Theory of Constraints to this kind of variability, and has come up with the idea that ignorance is the constraint - that is, the speed at which you can learn relevant information represents the constrained machine in your pipeline. He calls the act of targeting that ignorance Deliberate Discovery, and in my experience it's a very effective philosophy. It's also the backbone of BDD and Feature Injection.

To answer your questions:

The Toyota Production System was developed by applying Lean Thinking principles to the context of Toyota, and in that respect, Kanban is very similar: it applies Lean Thinking principles to the context of a particular team. It does not apply TPS brute-force to that team, nor do most of the successful Lean Software Development outfits. (As a note, I hear that most production lines which have tried to replicate TPS have had limited success).

There's only one place where we can truly achieve Lean Software Production in the same way as a production line, and that's in continuous integration and deployment, where we really are building the same thing over and over again. Software development generally doesn't work that way.

4

General principles of Lean Software Development (LSD) are aligned with values Toyota Production System (TPS) are built on. In both cases you aim for:

  • limiting waste
  • making flow as smooth as possible
  • making everyone's responsible for quality and quality improvement

The main difference is matter of work in both industries -- in manufacturing we deal with tangible things, like parts, while in software industry we deal with intangible bytes.

However if you think how waste was defined in TPS, e.g. inventory, it was probably as unintuitive for some as it is with definition of waste in software, e.g. code which isn't used at the moment.

Specific rules of LSD and TPS apply of course to the specific industry. In manufacturing we typically build a lot of the same stuff, e.g. hundreds of thousands cars, while in software development each feature is different. The process itself naturally is different as well. However it also means it is impossible to compare productivity or effectiveness between one industry and another, so I don't think there is really an answer for one of your questions.

Your last question is also vague as what exactly does it mean to "achieve truly lean software production?" Lean is all about the journey, not the destination. If you look at it for such perspective than the answer is definitely positive as we can apply general principles of Lean in software development. By the way we can do so not only with LSD but also with Kanban to take the most obvious example.

-1

Obviously, even the fundamental principles of the two scenarios are not the same. Yet, someone felt that the parallels were useful. And perhaps they were.

-1

I would totally argue with comments above. Lean management means managing with scarce resources, and that's how it should be treated.

So Lean Software Development should focus on:

  1. Achieving more in limited time, using tools and methods. Teams, agile etc.

  2. Spending more time doing new code, by applying some TDD principles that diminish bugs.

  3. Spending each resource in the most effective way. I.e. core developer speding more time doing core modules than teaching young ones or doing the testing. It also means that if you high paid developers do a lot of routine work that can be done by lower level developers - delegate.

3.1. Also if you have a lot of management issues that your most expensive developer does you are wrong. Spend each $ with the most possible outcome.

3
  • "Lean management means managing with scarce resources" - what gives you this idea? "TDD principles that diminish bugs" - what diminishes bugs is diligence and thorough testing. Not TDD. Aug 26, 2020 at 15:40
  • Try reading Runnning lean.
    – Undry
    Aug 26, 2020 at 16:51
  • Frankly I don't find any Lean-related insights in your answer - only some generic management/marketing phrases. I thought you'd shed some light. Sorry, I have to downvote. Aug 26, 2020 at 20:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.