Lean Software Development Essentials
Modern software development industry is very diverse. It has a lot of various methodologies. Their principles and practices differ significantly. Some of them have sequential structure of projects and do not involve customers in the process of their realization. The others are iterative and based on the principle of customer involvement. However, regardless of their principles, all of them are aimed at creating high quality software products and delivering them just in time. In this article we will tell you about Lean software development methodology.
It originated in Japan in the middle of the 20th century. At that time a famous Japanese motor corporation Toyota had large problems with product delivery. The process of manufacturing took too much time, and the managers of the corporation began to think on its improvement. As a result – they have invented a project management methodology that is now famous all over the world under the name Lean manufacturing. The main idea of Lean was to eliminate the wastes. Anything that didn’t impact the functionality of the final product positively was considered a waste. Hence, the main principle of Lean manufacturing methodology was simple – throw out all unnecessary operations and deliver the product quickly. Later this principle was applied to other industries.
In 2003 it came to software development. At that time two researchers – Mary and Tom Poppendieck – published a book entitled “Lean Software Development”. The main idea of it was simple: Lean methodology is applicable to software engineering.
The issue of product delivery is probably the most important issue in software development. At the beginning of the 21st century programmers all over the world invented new project management methodologies to meet the challenges and requirements of their extremely complex projects. Lean became one of these software development methods.
It is an Agile software development methodology, because the structure of its projects is iterative. Such structure suits perfectly to the main principle of Lean, because it is much simpler to eliminate wastes after each iterative cycle than after the entire project. The importance of testing for Lean methodology is one more reason for iterative structure of its projects. Lean developers are focused on preventing defects instead of fixing them. However, it is almost impossible to create a perfect software product without defects. That is why Lean teams prefer to test their products after each iterative cycle.
The list of Lean software development practices is large and diverse. One of the main principles of this methodology is constant improvement. It means that when a Lean team invents a new effective practice, it should implement it in all its further projects. That is why Lean methodology has the largest list of practices among other software development methods. Sometimes it even uses the practices that are typical for other Agile methodologies. Two popular Extreme Programming practices are used in Lean: pair programming and test-driven development. As we have already mentioned, tests are extremely important for Lean developers. Sometimes they even create their products through testing. Pair programming is a method based on cooperation of two developers who work on one computer.
In spite of the fact that it is quite effective, Lean is not the most popular Agile software development methodology. Few teams manage their projects in it. Perhaps that is because of the fact that most programmers consider it too complex. As you can see, it is quite far from the truth