Lean Software Development: Problems
Each software development methodology has both advantages and disadvantages. Today most software developers agree that there is no perfect methodology. Each of them uses the methods that are the most suitable for the requirements of his project. For a professional programmer it is necessary to be aware of the advantages and disadvantages of all project management methodologies. In this article we will tell you about the problems with Lean software development. But before we start doing that, it is necessary to give the proper definition of lean methodology, because it is impossible to understand the problems that may occur in it without knowing its main features.
The history of Lean began in the middle of the 20th century. It originated in Japan as a manufacturing methodology. The employees of Toyota Corporation invented it to improve the terms of product delivery. At that time the company had large problems with timely delivery of its production. That is why its managers have decided to implement a new project management methodology. They called it Toyota production system. Later, when the method became world famous, it was called Lean. The main idea of Lean manufacturing was to eliminate the wastes to improve the terms of product delivery. Any unnecessary activity that didn’t add new functionality to the final product was considered a waste.
At the beginning of the 21st century Lean methodology was applied to software development. Tom and Mary Poppendieck became the first researchers, who wrote a book on this topic. In 2003 they published their book called “Lean Software Development”. If you are a programmer, you definitely should read it. This book remains quite topical now.
Lean is an Agile software development methodology. That is because of the fact that Agile iterative cycles are just what Lean developers need to analyze their activities and eliminate unnecessary wastes. Additionally, iterative structure allows Lean teams to test their intermediate products after each cycle of work. It is very important because Lean developers are focused on quality of their products. That is why they try to avoid any defects or at least detect them at early stages.
Like in any other Agile methodology, in Lean the range of customer involvement in the process of project realization is high. The plans of Lean projects are flexible. It means that the client can change his requirements to the final software product and the team will respond to them immediately. Lean teams are self-managing. Their members are interchangeable. It means that they include only developers who are able to perform a few team roles.
Most researchers agree that the problems of Lean methodology are related to its Agile nature. Let’s look at them in greater detail.
The first and the main problem of all Lean and Agile projects is their high dependence on the qualification of team members. In traditional software development methodologies like Waterfall there are lots of roles and lots of team members who perform them. It means that a mistake of one tester or analyst does not mean too much for the entire project. Other testers and analysts can fix it. But in Lean projects there is no such ability, because a Lean developer often performs the functions of a tester or a business analyst. It means that if he makes a mistake, no one can fix it.
The second problem is that in Lean the success of the entire project may depend on the discipline of the team. Lean projects are flexible. It means that Lean team members must be capable of working without strict instructions. If your developers are inexperienced and they have never before worked in Lean style, they may turn your project into chaos. It may lead to its failure.
Like in any other Agile methodology, in Lean many factors depend on the customer and his decisions. It can also be a problem. A customer is not a specialist in software development, so he can have unrealistic requirements. If they are set at the beginning of the project, the developers can correct them. But if the customer changes his demands during the period of project realization, it is quite hard to meet his new requirements. To prevent such situations the developers have to explain their abilities to the customer before he formulates his demands.