The concept of lean was first explained in detail by James P. Womack, Daniel T. Jones, and Daniel Roos in their book, The Machine That Changed The World (1990). In a following publication entitled Lean Thinking (1996), Womack and Jones defined the five lean principles as:
1. Defining value desired by the consumer.
2. Identifying the value stream for each product.
3. Creating continuous product flow throughout the remaining value-added steps.
4. Introducing a pull system between steps where continuous flow can happen.
5. Pursuing perfection in a way that the time, information, and number of steps required to serve the customer is reduced.
How To Align Lean Principles in Software Development?
Lean principles can be efficiently implemented in software development because this industry has three important characteristics that make it feasible for lean implementation. These are repetitive processes, collaborative efforts, and standardized systems. Incorporating lean can help build a streamlined approach for developing products within a short period, lower expenses by eliminating unnecessary steps, and empower the development team in making effective decisions.
Seven principles have been identified as crucial for software development using lean. These are eliminating waste, creating knowledge, building quality, rapid delivery, empowering the development team, delaying decision making, and optimizing the whole process. Tools such as inventory management, value mapping stream, and Kanban can help with putting these principles into practice.
Eliminating waste requires identifying things that do not bring end-value to consumers. Partial work and overproduction waste are some examples. Further, going through too many processes can be reduced by using pair programming approaches. Defects such as those in the software should be recognized at the beginning and eliminated before the product is designed.
Sharing knowledge empowers teams to make informed decisions. Training, workshops, project documentation, code comments and various other methods can be used for spreading awareness. The goal of any software development project is to generate quality products. To do this successfully, a team should use proper testing criteria and develop the product incrementally. The team may also reduce wait states to preserve the quality and use automation to reduce errors involved in the development process.
No consumer wants to wait too long for their product. Software development teams should use a detailed workflow plan to ensure they deliver products in a timely manner. Empowering the development team is also necessary for smooth flow of processes. Team members should be in constant communication with each other, have their tasks delegated based on each member’s strengths, and consult with each other when challenges emerge.
While following lean principles, it is useful to go over all data carefully and make important decisions upon evaluating and removing all risks. Optimization of the entire development process helps with identifying value flows that facilitate timely delivery of an efficient product.