Lean Thinking is a framework that has been common within the manufacturing industry for many years now.
Today the use of lean thinking processes has grown beyond the manufacturing industry and has gained popularity in the service industry and tech industry as well. In fact, more and more project managers who are in charge of software development are using lean principles and lean practices to improve their software products.
So how can more people in the software development industry benefit from lean thinking? And is lean software development the best way to achieve continuous improvement? Below we’ve provided an overview of lean software development by exploring lean principles and the lean practices that you can implement in your own business today.
Definition of lean product development
Lean product development is a business methodology used for developing products that focuses on eliminating waste, increasing the speed of delivery and continuously improving processes. It’s all about minimising cost and efforts while adding value.
Whichever industry it is applied to, lean thinking is about getting rid of “anything in your production cycle that is not adding value to the customer”. It is the ultimate customer-centric approach that also aims to make all employee and developer responsibilities essential and valuable. This lean methodology is quite common now but it hasn’t always been this way…
A short history of lean product development
Lean thinking and lean product development has existed in some form since the 1450s. In the 15th century Venetians were building warships for their navy using standardised designs for the hundreds of galleys they needed to build every year.
However, the concept of lean product development really took hold in the early twentieth-century when Henry Ford revolutionized manufacturing through the mass production of standardized car parts in the United States.
While the concept of lean product development had been around for a while, the term “lean” was first used in relation to Toyota’s Production system in a study by James P. Womack and Daniel T. Jones during the 1950s. Toyota was expanding at an exponential rate, capturing new markets and transforming their product development workflows.
The study of Toyota at the time revealed that the companies had a group of elders who focussed on teaching their product managers to think about product development differently. The company created a sustainable ecosystem for work that led to lower costs, improved efficiency, and higher sales.
Toyota was able to maximize company profit by integrating their ideas, about eliminating waste and focusing on the customer, with Ford’s ideas on continuous flow to ensure that they could make high-quality products in a system that was flexible, efficient and effective.
During the history of lean development certain principles have arisen. These principles can be used to uphold agile practices and will be present in any leading lean software development teams.
Eliminate what does not add value to the customer
Lean development methodology prioritizes the customer experience. As a result, lean thinking has no time for things that add no value to the customer. In the Toyota school of lean manufacturing there are seven wastes (or muda), including: defects, waiting, overproduction, over-processing, motion, inventory and transport.
The idea of defects, overproduction and waiting during the development of a product is self-explanatory. Motion concerns the unnecessary movement of workers. Over-processing is about using advanced or expensive tools to accomplish tasks that can be done with simpler, less expensive tools - a concept that should be familiar to many within software development.
This lean principle also focuses on stopping excessive inventory which may increase lead time, delay innovation and take up space without adding value to the customer. The last waste, transport, refers to moving inventory unnecessarily and putting your product at risk of damage without adding value.
Traditional project management may involve plenty of tasks and activities that would be regarded as waste by lean thinking standards.
Amplify learning. One of the most important lean principles is about creating knowledge and expanding the particular knowledge base of your product development team. Software design is easy when you have team members that are prepared to solve problems and keen to try new ideas. The development team uses short iteration cycles that involve refactoring and integration testing.
This lean principle asserts that your development team should be continually acquiring new, relevant knowledge in order to create a product that is innovative and serves customer needs.
Delay decisions as long as possible
This lean principle is about deferring commitment and ensuring that you only make key decisions when you are sure of their success. Try to make most decisions reversible and avoid making critical software design decisions that are difficult to change.
By delaying decisions until the last responsible moment you have more time to plan, organize and experiment with variations of an idea. This is an agile development approach that allows you to try new and interesting techniques without endangering the end product. It also allows teams to focus on producing high quality software without undue pressure.
Deliver a product as soon as possible
What is stopping you from delivering products quickly? Everyone wants to be efficient and achieve fast delivery but very often teams are prevented from doing so by unnecessary business requirements, disjointed workflows and stilted communication channels.
To adhere to this principle agile software development teams should aim to build a simple solution, deliver that product and continue to make incremental improvements on that product based on customer feedback.
To achieve faster software development you have to identify all the steps which are slowing you down and eliminate the ones that don’t contribute to the quality of the software solution you are delivering. This is easy to achieve if you have structured workflows, an agile toolkit, low defect rates and a well-trained team.
Empower the development team
Speaking of team, empowering team members is one of the key lean principles. Lean software development is entirely dependent on a team that is able to make important decisions and work well together. Managers should be taught to listen to their team of developers and enable them to make critical decisions.
If you want to construct software development teams you should follow the agile principle that motivated and trusted individuals are able to build projects and get the job done. Developers should:
- Have access to customer feedback
- Be able to communicate across departments
- Be empowered to suggest improvements throughout the lifecycle of the product. This is also the best way to ensure agile project management.
Build perceived integrity
Ensure the product does exactly what the customer expects it to do. The perceived integrity is about how a product is advertised, delivered, accessed, priced. Perceived integrity is also about how easy the product is to use and how well it solves the customers problems.
One of the principles of lean thinking in agile software development is maintaining an open line of communication between customer and developers. The integrity of a software solution is easier to maintain when there is a consistent and reliable information flow which the developer can use to help maintain the flexibility, efficiency and responsiveness of the product.
Optimize the whole process
Lean software development is about optimizing the entire value stream. Any inefficiency should be quickly identified and cut out before it impacts workflows.
In the software development industry customers are constantly looking for new technology, new solutions and new features. This leads to software developers rushing through the process and falling short of quality requirements. This can increase the complexity of the product and result in defects which will need to be fixed.
This is a vicious circle that can be avoided by optimizing the whole process, understanding the capacity of your team and staying aware of the downstream impact of work. Once you understand how each cog in the system functions it is easier to organize software development teams that are multi-disciplined and complete.
All of these principles provide development managers and businesses with a host of benefits including increased communication, visibility, constant feedback and efficiency. These principles should serve to help teams to implement lean practices that will enable lean software development.
What are lean practices?
Now that you are familiar with the principles it’s time to take a look at some lean practices. Below we’ve highlighted just a few examples of lean software development practices and explored how they work during the software development process and how they uphold specific lean principles.
Value stream mapping (VSM)
Value stream mapping method that allows product development team to visualize, analyze and improve all the steps in a product delivery process. Effective organization is key to upholding lean principles and value stream mapping is one of the best ways to flowchart and document every step of the process.
The advantage of employing VSM as a software development practice is that it gives teams a clear indication of progress, highlights to-do tasks and visualizes the flow of material and information. The downside to VSM is that if it is not conducted with the proper care and detail it can be misleading and become detached from the everyday tasks of software developers.
Set-based design (SBD)
Set-based development or design focuses on keeping design options flexible for as long as possible during the development process. This practice adheres to one of the key lean principles that is about delay decisions as long as is responsibly possible to ensure you have considered all the best options.
The advantage of set-based development is that it allows the team to identify and vet possible options for an extended period which may reveal defects that would have otherwise gone unnoticed. SBD should be mainly used for situations where a high degree of innovation or variability is involved. Using SBD for simple decisions would likely be counterintuitive and lead to unnecessary delays.
Pull-systems uphold the lean principle of reducing waste. In a lean manufacturing process, pull systems ensure that components are only replaced when they have been consumed to ensure that businesses only make enough products to meet customers' demand.
For agile software development, pull-systems allow developers to have a Work in Progress (WIP) limit and enable them to choose new tasks when they have completed their existing projects. It prevents inefficient task switching. The benefit of a pull-system is that it allows developers to focus on the task at hand and it allows project managers to control resources and costs.
Why implement Lean Software Development?
Now you know a bit more about lean software development you will be able to assess whether it is a suitable methodology for your own business practices. Whether you are looking for rapid development or stable continuous improvement, we’ve seen how lean principles and lean practices can deliver great results for software development managers.
All project managers and team members within development organizations should aim to familiarize themselves with lean thinking tools and how lean thinking can impact the development process. When the seven principles are properly adhered to, the experience for the whole team will likely become a lot more rewarding and productive.
We’ve highlighted a few of the most valuable lean practices but there are many more you can explore to ensure that you are able to enhance software projects, amplify learning and enable widespread business improvement. Wherever you are in the software development process these lean practices and lean principles are a tried and tested way to help you achieve breakthrough quality.
More posts by this author