How to boost team productivity
The term “lean software development” was created in 1992. Since then, it has become overloaded with interpretations and refinements, but has remained the same – the rational use of resources. Principles of lean development help to debug the software development process so as to prevent losses at any stage.
Lean use of resources is very important in software development: after all, even a perfect product that is not released on time becomes irrelevant. The same goes for people – developers should not be subjected to constant tension and stress caused by overworking.
The principles of lean resources distribution were first developed in the factories of Toyota, the Japanese car manufacturer. Through such an approach to their work, Toyota has become the leader in the production of cars worldwide. In 1989, the company employed slightly more than 90,000 workers and produced 3.3 million vehicles, while American General Motors had 775,000 employees and produced 5.5 million vehicles. The results are obvious.
Toyota did not keep the reason for their extraordinary success a secret. Indeed, the company openly promoted their principles, the main purpose being to avoid losses at all stages of production.
According to Toyota, there are seven kinds of such losses:
- Transport losses – unnecessary replacement of the product during production.
- Loss of assets – when not all of the components or capabilities are used in the production process.
- Movements – people or equipment are making many unnecessary movements during the production process.
- Expectations – in the case of delays or interruptions during the production process.
- Overproduction – when production volume is more than end user need.
- Excessive processing – when low-quality production tools are used.
- Defects – when there is a need to involve additional resources for checking the absence of defects in the final product.
Sometimes they single out an eighth kind of loss – when the final product does not meet the expectations or specifications of the end user.
Further on, lean production principles were modified for other types of production activity, including software development.
Why lean development is beneficial for software
15 years ago, lean development was implemented into the field of software. At that time, the software industry began to develop and to attract multimillion-dollar investments very fast.
Here are the basic reasons why lean development is beneficial for software:
- Rationalizes and simplifies the development process. Lean development helps to get rid of unnecessary stages in the process of designing software. It makes the process of development cheaper and faster, saving the most important resources – time and money.
- Prevents any losses. It is very important to prevent losses related to overproduction. With regard to software, overproduction means excessive functionality.
- Increases the team involvement rate. People are one of the key values of lean development methodology. It is their participation that helps to prevent losses and optimize the workflow.
Principles of lean software development
Mary and Tom Poppendieck are the evangelists of the concept of lean software development. They have outlined seven basic principles that ensure success in lean development.
- Loss removal. If the product has functionality that the user does not need, this is a loss. If the development is transferred from one team to another, this is a loss (as it takes time to bring a new team up to speed).
- Training. Often you have to act in conditions of uncertainty. Therefore, the team needs knowledge and experience to be able to properly respond to the circumstances. For example, they might need another technology stack or other methods of implementing for the development of the product.
- Make decisions as late as possible. Due to uncertainty, making decisions may be very difficult. Therefore, if the important decisions are postponed “for later,” when the results of the
beta testing of MVP are received and you have more information about the market situation, there is more chance you will make the right decision.
- Show the results as soon as possible. This principle is related to the previous one. Fast development, even with imperfect code, is much more valuable than slow, thorough, error-free development. Even with a small set of functions, the product will help to collect feedback from users. Then, using these results, you can decide what to do next.
- Transfer power to the team. A team of developers knows the technical capabilities of the product and the possibilities for improving it. Team members can also optimize the process
of change implementation to the product. All of this will help to output new versions of the product quickly.
- Integration. The product should give the impression of an integral system that does not lose its worth and utility over time, but is one that is constantly developing and improving. It should have installation convenience and usability, and be geared for the purpose of use – that’s what makes it integrated.
- Know it all. In the development field, you need to possess knowledge that goes far beyond this subject area. In good software, the code must provide speed, and the design must be easy to use. If something is wrong with one of those things, the software product is unlikely to be successful.
Areas of lean development
Lean software development is used in IT companies of any size. It goes well with the Scrum and Kanban methodologies, so it can easily be implemented in companies that already work with these methodologies. But it is advisable that lean development is implemented especially in teams that work in uncertainty conditions.
– The team is part of a large company. Financial issues are not a priority for such team. Time is their main value. It is important for the team to release the product before some similar product appears on the market. Principles of lean development help them to release the product quickly and with the functions that are required. Even a “rough” version will help them to collect feedback from users. This will show the direction to be taken.
– The close-knit team of developers. Lean development helps such teams to organize the development process better: to reduce the time between releases and design a product that meets customers’ expectations.
– Startups. Such teams are limited in everything: in finance, in time, in human resources. Lean development helps them to prevent unnecessary losses for an MVP (Minimum Viable Product) that can be quickly developed and shown to investors and even users in closed beta mode. Then, relying on user feedback, they will be able to understand how good their product is and what functionality is mostly in demand.
A few words about startups
Many problems and ways to resolve them with the help of lean software development are considered by American entrepreneur Eric Ries in his book “Lean StartUp.” He wrote this book relying on his work experience in startups, with reference to his own mistakes.
The author considers putting hard effort into planning in conditions of full uncertainty as the main mistake of many startups.
That’s why he confirms that lean software development is especially good in projects for creating a whole new product. Here, the principles of lean software development help to test the MVP and refine it on the basis of customer feedback. After the feedback analysis, developers have to bring in necessary changes to the product and release a new version as fast as possible. Such a cycle of continuous improvements and changes will help startups to produce a compatible product which customers would be ready to pay for.
Lean software development and Kanban
The principles of lean software development are being increasingly used by teams that work with Kanban methodology, for development process improvement and the reduction of time loss. Visualization of the work process, which is common practice for Kanban, helps to improve the development process, to make it faster.
Other peculiarities of Kanban methodology, such as restriction of the number of tasks in workflow and the principle “you must not take on a new task before you finish the previous one,” also blend quite well with the principles of lean software development.
The most important thing is that the Kanban methodology is also focused on rational resource usage and reduction of losses. That is why a team that works with Kanban doesn’t need to change its work process to follow the principles of lean software development.
Lean software development and other Agile practices
Lean software development is linked with other Agile practices. Agile software development methodologies espouse the same values:
- Continuous development and integration;
- Leading part of a team in development process;
- The possibility of making changes to a product when it is still under development.
In such a way, Scrum practice foresees a release at the end of every sprint. Of course, it could be a release on the test server, but in any case, it would be a functional product that you can test and receive feedback about.
One more peculiarity of a Scrum team’s workflow which corresponds to the philosophy of lean software development is daily standups. This is the everyday meeting of the team where each teammate talks briefly about his / her successes of yesterday and today’s plans. These meetings help a team stick together, to find out more about what the others do, and to improve work processes.
Both in the Japanese Toyota plant and in the sphere of software, lean software development leads to outstanding results. Its basic principles help to develop software in conditions of full uncertainty, where every product version depends on customer reaction to the previous one. Nowadays, when the situation in the market changes rapidly and there is no full certainty, the lean software development philosophy helps to achieve success.