Just like a blueprint is used in construction, and a recipe is followed when preparing a meal, there are principles to follow for efficacious software development. These principles boil down to what is usually referred to as a software development methodology. A software development methodology is imperative as it contains procedures that lead to the success of a software development project.
Without following a blueprint in construction, the results spell disaster, and so does building a software product without following the right principles. You will miss a lot of crucial steps and eventually have a myriad of software quality challenges. As a project manager, it is vital to know that there are many approaches to follow for a software project including lean development approach and that when chosen correctly, a software development methodology will always produce a high-quality software product.
Lean Software Development
Lean development methodology is a type agile approach that was founded on lean manufacturing principles. Lean manufacturing comprises highly successful principles that were first used by the Toyota Production System as a practice to manage and optimize the process of vehicle production to increase customer value and minimize waste.
So, if lean principles have to do with motor vehicle manufacturing, where does software development come in? We know that manufacturing and software development are different – manufacturing involves the creation of physical products while software development product is intangible and its value can only be perceived and created within the minds of the development team.
The mapping between lean manufacturing and lean software development first originated in 2003 in a book titled “Lean Software Development: An Agile Toolkit” by Mary and Tom Poppendieck. In the book, the Poppendiecks interpret how lean manufacturing principles can be productively applied to software development. Both manufacturing and software development follow repeatable procedures and necessitates precise quality standards. They also rely on teamwork to get done. Thus, the seven lean manufacturing principles can apply and be used in software development.
Seven Lean Principles to Follow for Software Development
Because of enabling a faster way of developing software products, agile development approaches are popular for many development companies. Such companies are already implementing lean development principles. Here are the 7 lean principles that you can apply in your software development projects:
- Eliminate Waste
The first principle to follow in lean development is to eliminate anything that does bring value to an end-user. In software development, this principle can be implemented by first identifying the value of the software product to be built. Once that is done, it will become easier to detect the ‘waste’ – whatever that doesn’t add value to the product and eventually to users including unnecessary code, unclear requirements, extra features, and processes, etc. Other phases of the methodology that bring no value also need to be removed. There are tools to help in identifying waste in software development including Value Stream Mapping.
- Create Knowledge
Software development in itself is a knowledge-generating progression. The create knowledge principle thus encourages development teams to have the right structures to enable proper learning. Sounds simple but the principle requires total focus and commitment. It can be implemented through performing training, code reviews, adequate code comments, pair programming, project documentation, sharing sessions and more.
- Build Quality In
A lean development team should ensure that their focus is on developing quality in the product. They should therefore not to depend on the notion of ensuring a non-faulty end product. Conversely, teams should keep on enhancing the development process and cease dispersing defects in the product from the very beginning for a functional end-product.
- Fast Delivery
Agile development techniques focus on delivering software as fast as possible. Lean development being an agile approach also emphasizes fast software delivery. It means that a project team has to deliver a targeted component to users at the right time. For your team, create even and stable workflows that come from understanding the process value to facilitate faster results.
- Empower Your Team
Empowering your project team requires that you respect everyone – people working together as a team should respect each other. When things go wrong, and most times they will, don’t blame people. As a substitute, check for gaps in the process that could lead to challenges and conflicts. Create a favorable working environment for everyone and lead by example. Additionally, allow innovative freedom for team members to choose and identify right approaches and tools for any assigned tasks.
- Delay in Making Decisions
I know this sounds controversial since conventionally we tend to work with making decisions as fast as possible. As a lean principle, deciding late does not mean irresponsible in making decisions. Instead, it encourages a project team to keep options open for a longer period to gather more data and information that can help them make crucial decisions. Delaying to make a decision gives you more time to learn and gain more knowledge which results in even better decisions. As a consequence, your project doesn’t suffer negative impacts that could result from poor decision making. Think about it, would you rather make a rash decision and regret later, or take some time to gather information and make the right decision?
- Optimize the Whole
Always go for the optimization of the entire development process and not only sub-processes. If you add value to only one or just a few of the processes, the end product will be affected, and your results will be sub-optimized. You shouldn’t launch an inferior product because you didn’t have enough time. To deal with sub-optimization, optimize as a whole principle encourages the elimination of vicious development and testing cycles and instead operating with much better work capacities. Optimizing the whole allows the identification process value flows for a complete team which enables faster and valuable delivery. So, focus on the entire value stream from start to finish to achieve optimization.
Lean manufacturing revolutionized the Toyota company product line. Applied in software development, lean software development principles have a great capacity to facilitate the development of high-quality software products.