Learn to Shine with Lean Principles
Every modern software development methodology has its own rules and principles. They may differ significantly from one method to another. However, regardless of the methodology you use, you always have the same goal – to create supreme software products. That is why the experience of developers is extremely important in every methodology. In this article we will tell you about the experience of Lean methodology. You will learn the best Lean practices, and the most important lean principles. But before starting our talk about them, it is necessary to give the general definition of Lean and say a few words about its functionality.
The history of Lean began in the middle of the 20th century in Japan. Initially, it was just a manufacturing methodology invented by the managers of Toyota Corporation. The company had large problems with product delivery at that time. To survive the hard competition it had to invent a new system of manufacturing. Initially the new methodology was called Toyota production system, but after it became popular all over the world it changed its name to Lean manufacturing. The main idea of Lean is to eliminate wastes. Such an approach to manufacturing allows the enterprises to improve the terms of product delivery. The main thing you should know about wastes in Lean is that this methodology considers everything that does not contribute to the functionality of the final product a waste. Such approach is applicable to any industry including software development.
In 2003 two famous Lean researchers – Tom and Mary Poppendieck – released their book called “Lean Software Development”. It was the beginning of a new software development methodology. The book described seven main principles of Lean and taught us to implement them in software engineering. It is necessary to mention that Lean is an Agile methodology. The degree of customer involvement into its projects is high, their structure is iterative, and Lean teams are self-managing. That is because of the fact that such approach to software development is just what Lean teams need. It suits to the main principles of Lean.
Iterative structure of projects helps eliminating wastes after each cycle. Additionally, it allows Lean developers to test their product constantly during the period of project realization. It is necessary because Lean methodology is focused on quality of production. In most cases the developers try to avoid bugs in it, but constant testing is also necessary to detect the defects they miss.
Lean teams are self-managing and their members are interchangeable. That can be explained by the fact that respect to the team members and flexibility of project tasks are one of the main Lean principles. Such structure of teams enables changes in the project plans during their implementation.
Strong degree of customer involvement helps Lean developers detect all unnecessary actions in their projects and remove them. It also allows the teams to gain full vision of the functionality of their future software products.
Now let’s talk about the experience of Lean methodology.
The experience of a certain software development methodology includes its best practices. The main thing you should know about Lean experience is that this methodology is aimed at constant improvement. It is one of its main principles. It means that when a Lean team invents a new effective software development practice, it must implement it in its further work. Hence, Lean is a methodology that constantly generates new practices through experience. However, it also has an amount of traditional practices. Some of them were borrowed from other methodologies. For example, Lean developers use two practices that are typical for another Agile method called Extreme Programming. These two methods are test-driven development and pair programming.
Test-driven development is a practice that allows the developers to add new functionality to their software products through testing. It is considered quite efficient.
Pair programming is a practice that is based on the principle of cooperation of two developers who work on one computer. It allows the team to save a lot of time and to improve the quality of its products.