paint-brush
How to Apply Lean Production Principles in Software Developmentby@archersoftware
265 reads

How to Apply Lean Production Principles in Software Development

by Archer SoftwareMay 15th, 2020
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Lean production is not a new concept. It comes from the manufacturing industry and was polished by Toyota in the seventies. However, Lean manufacturing principles turned out to be so practical and universal that they can be used to create innovations in other industries as well. In the Information Technology (IT) sphere, they are frequently used with the Six Sigma Principles, and in this article, we will explain what each principle means for Lean software development. 

Company Mentioned

Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - How to Apply Lean Production Principles in Software Development
Archer Software HackerNoon profile picture

Lean production is not a new concept. It comes from the manufacturing industry and was polished by Toyota in the seventies. However, Lean manufacturing principles turned out to be so practical and universal that they can be used to create innovations in other industries as well. In the Information Technology (IT) sphere, they are frequently used with the Six Sigma Principles, and in this article, we will explain what each principle means for Lean software development. 

7 Lean Principles and How to Use Them in Software Development

Lean manufacturing and Lean software development are based on the seven pillars. All these principles were developed according to the idea that everything that doesn’t add value to the customer should be avoided or removed. Here is how the principles work in IT. 

1. Eliminate Waste

Waste elimination is a classic manufacturing problem. But what is lean software development waste? In order to answer this question, it is necessary to return to the key idea that everything that doesn’t add value is waste. It can be:

  • Unnecessary coding:  It is not wise to create a specific function until it is claimed. This approach also underlies minimum viable product (MVP) development and subsequent testing of each new feature.
  • Wait-time: This is a case where a task is waiting for somebody to perform it. In other words, this is non-value added time and is time the customer doesn’t want to pay for. 
  • Delays in task transferring: When the programmer finishes a piece of code but hasn’t transferred it to the tester, for example. Agile software development partially solves this issue. 

2. Build Quality In

This principle focuses on the quality of the product being created and suggests that it is necessary to: 

  • Use pair programming when the skills of one team member complement the skills of another.
  • Automate routine tasks. However, this does not always automatically produce quality improvement. Sometimes manual work is a more reasonable solution.
  • Reduce downtime, context switches, knowledge gaps and lack of focus.
  • Use a test-driven approach when the code is written according to certain criteria. This eliminates the need for bug fixing, and hence, the waiting time mentioned above.

3. Create Knowledge

According to this principle, the development team is encouraged to create and share knowledge in a convenient format. For example, it can be knowledge sharing sessions, document writing or even storytelling.

The main thing is to transfer valuable insights from one team member to others to make sure that the same mistake will not be repeated, provoke waste, spoil the quality and/or badly affect the delivery speed using the 7 Lean principles. 

4. Defer Commitment

It is very easy to confuse this principle with an attempt to transfer responsibility to someone else. However,  the essence of this principle is different. This principle suggests that we do not need to make any final and far-reaching decisions until we have comprehensive and sufficient data. 

But it is necessary to keep your eyes open and be prepared for change. According to this approach, the team must constantly collect new information, as well as take business requirements into account, which can change at any time.

Does this principle remind you of something else? Yes, this is one of the main ideas of Agile development.

5. Deliver Fast

This principle also has a pitfall for IT and is closely interconnected with other principles as well. Deliver fast does not mean deliver at all costs. The Lean system does not mean continuous work for a high-tech solution. The basis of this principle is speed multiplied by simplicity.

In this case, we again return to the MVP approach, when it is necessary to quickly develop a simple, but high-quality solution, test the feedback at the same speed and then move on to the development of new functions if the market requests them.

In this context, the speed of market launch becomes key, and the market need is a reference to the first principle. Do not create a feature until you are asked for it.

6. Respect People

This is a basic, but rather universal principle which also determines the success of a team. Human relationships cannot be excluded from the process even with remote work, .

The Lean methodology suggests adhering to the rules of effective communication, healthy debate and conflict, and professional ethics when hiring, onboarding and firing employees.

7. Optimize the Whole Instead of Single Parts

To understand this principle, it is necessary to imagine each of the work processes as a value stream. This flow can go in the right direction and carry value, or it can create a vicious circle. 

Here is an example of a vicious circle:

  • When developers are forced to write code too quickly, they make more mistakes.
  • More bugs mean more work for testers.
  • More work for testers means more issues found and more mistakes for the developers to fix under the pressure of time.

This is an example of the misuse of the Deliver Fast principle.

In order to optimize the whole, it is necessary to optimize each process individually. In order to optimize a single process, you need to understand what the stumbling block is. In our example, the blocker of the stream value is the priority of speed over quality (when it is necessary to keep a balance), or a violation of the second principle when there is no test-driven approach.