LEAN software development is on everyone's lips, as it promises massive advantages, high efficiency, and significant quality boosters for software projects. In this article, I will provide an overview of the advantages and disadvantages, the fundamental principles, and also tips on how you can apply LEAN in practice for your software development projects.
LEAN: The new thing?
The origins of the so-called Lean Management System date back to the early 20th century when entrepreneur Sakichi Toyoda, together with his sons and engineer Taiichi Ohno, established the Toyota Production System. Soon, Toyota was known worldwide for its rapid innovation power. This was achieved through a strong focus on the perspective of customers, lean processes, their continuous improvement, and above all, the never-ending search for WASTE and its elimination.
Now, a century later, this management system has been adapted to the software development world. And indeed: These principles can be wonderfully applied to software projects and have often proven that a skilled application of LEAN can significantly boost productivity and quality.
Opportunities with LEAN
The method aims for the following advantages:
- Faster delivery of software to customers
- Higher quality of produced software
- Time savings by identifying and eliminating unnecessary process steps
- Reduced project costs
- Increased motivation of the entire team through more responsibility and decision-making authority
The challenge in introducing this method is that it only works if employees are well-trained and experienced in eliminating WASTE. What this exactly means, let's take a look at now:
THE MOST IMPORTANT THING FIRST: VALUE vs. WASTE
To effectively use LEAN, it is essential to understand a central principle. Yes, like in any elaborate methodology, there is plenty of theory and lists here - and they are all meaningful. We will also delve into these later. But let's zoom out briefly and take a look at the big picture - at the one fundamental principle from which everything follows:
Rule #1: When you work, you transform time into VALUE and WASTE.
VALUE is everything that is demonstrably valuable to our end customers. Something that is useful and practical. Something for which customers are willing to pay us! WASTE is everything else. In every single meeting, we must ask ourselves: "Is this meeting so important that our customers are really willing to pay for it? To spend money?"
It is important to accept that there will always be WASTE. As soon as you work, you produce a part VALUE and a part WASTE.
The intuitive thought is probably: "I need to try to generate more VALUE". A good approach - but it is not the LEAN approach. Because LEAN means recognizing and eliminating WASTE as much as possible (the principle is called "Eliminate Waste" in English, so I also use the word in German ...).
Rule #2: If you produce less WASTE with the same output, you automatically produce more VALUE
VALUE and WASTE are considered as communicating vessels. The amount of output remains the same, but the distribution changes. The less time you waste doing things that are considered ballast, the more of your time flows into creating something truly valuable, VALUE.
How do I recognize if something is VALUE or WASTE?
It is now important to question and analyze everything you do with my time. This can be process steps or entire processes. This can be meetings, documents, documentation, software artifacts/source codes, workflows, the choice of your communication tools, and ultimately also blog articles.
Is this blog article VALUE or WASTE for our customers? To simply determine whether something is VALUE or WASTE, you can ask yourself 3 simple questions:
- Is it important for our customers? A sprint review meeting is likely important for our customers, as it allows us to quickly receive and incorporate feedback for our software project. A meeting about which coffee variety we prefer will likely be rated as less important.
- Does it have positive effects on one of our products or services? Whatever we do - if it has no (direct or indirect) impact on our offering, it has no impact on customers and is therefore not to be considered VALUE.
- Is it correct / error-free? When we deliver software that we know or assume contains errors in critical areas, that is a classic WASTE that consumes a lot of time and nerves. For comparison: An airbag that does not deploy in an accident delivers no value, no matter how well it was designed.
What about this blog article?
- Is this blog article important for our customers? New employees of LEAN-Coders may not yet be as proficient in the LEAN methodology as our experienced colleagues. This blog article helps them acquire this knowledge faster. Additionally, we attract applicants who are also interested in this topic. Our customers benefit from this, as they demand nothing less than the highest quality in software development projects.
- Does this blog article have an impact on one of our products or services? Yes, because the faster new employees can apply the LEAN method in practice, the faster we as a company can successfully and qualitatively handle an even larger number of software projects.
- Is the blog article correct / error-free? 100% error-free will probably never be achieved - neither in blog articles nor in software (see also The 5 biggest mistakes we made in 2021
With this schema, you can already get started. Next, there will be information on how to recognize and reduce WASTE in practice. Consider whether you think that continuing to read this article will have a direct or indirect impact on your customers and your products/services? If so, read on!
What types of WASTE are there?
When recognizing WASTE, it helps to know the most common WASTE types for software projects. There will be a follow-up blog article on this, but here is a brief overview of the 7 biggest waste types:
- Bureaucracy (Management Activities): Excessive management activities slow down performance delivery. (I think we can all agree on that ...)
- Currently unnecessary features (Extra features): Extends the time until release/delivery to the customer. This results in feedback arriving later, and one can react to problems later, etc.
- "Multitasking" (Task switching): Switching back and forth between tasks creates overhead and inertia and ultimately reduces productivity
- Delays (Waiting): Often are "WASTE smells" and extend the time until the product is delivered to end customers
- Inefficient communication/documentation (Handoffs): Slows down project progress
- Bugs, quality problems (Defects): Lead to the delivery of defective products
- Incomplete work (Partially done work): Increases the complexity of the overall system without delivering added value. Ideally, projects should be worked on sequentially
If you want to dive deeper into WASTE recognition and countermeasures, feel free to check out the following article: WASTE Alarm! 3 essential measures against bugs in software projects
0The 7 principles of LEAN software development
According to the LEAN method, the following 7 principles must be adhered to or kept in mind and improved to ensure the most efficient project progress. In combination with the previously discussed WASTE types, we can now see a larger picture: The WASTES prevent a good implementation of these principles.
- Eliminate WASTE: Just like the motto "there is always more WASTE", this is the core of LEAN. With a lot of practice and training, you will become a "WASTE detector" and can eliminate unnecessary ballast from the project.
- Learn quickly: Here, "learning" particularly means internalizing customers and their processes, domain, problems, structure, and working methods. Learning quickly also means using rapid release cycles or prototypes to quickly receive feedback and "learn" what your customer really needs.
- Decide late: Making a decision now that needs to be made in 2 months is WASTE. Because first, there is surely something more important to do right now than to decide something that has no impact yet. And second, in 2 months, you might have much more information and could make a much better decision. Therefore, be careful to make decisions as early as necessary and as late as possible.
- Deliver quickly: Fast release cycles bring quick VALUE for customers, and you quickly receive feedback with which you can implement the next software package for the project even better. Scrum, for example, is an excellent project management method that supports fast release cycles.
- Give responsibility to the team: Power to the People! Rely on your team's competence. This eliminates unnecessary decision cycles and communication paths and ultimately also potential for misunderstandings. The decisions that the team can make based on its skill set should also be made by it.
- Enforce integrity/quality: It has never been more important, but also never easier, to implement complex software systems "defensively" and well thought out and structured. A well-considered system and software architecture, use of design patterns, linting, continuous integration, automated tests, etc., are good concrete means to maintain the integrity of the software.
- Optimize the big picture: A project is only successful if all project parts work. Your software must integrate as smoothly into the overall system as a 3rd-party tool or the interface to the internal IT system. Another interesting dimension is the temporal one. It would be WASTE to want to foresee now which features might be desired in 2 years. But well-secured information that is already available can certainly flow into architectural considerations, etc.
I will also write a separate article on these principles in the near future, as a more detailed discussion at this point would exceed the scope.
7 tips for practice
In conclusion, I would like to give you a few tips that have proven effective in implementing LEAN in practice:
- Better Done Than Perfect Delivering 50% VALUE early is better than delivering 100% VALUE late. Short release cycles and targeted avoidance of overengineering make this possible. Ask yourself: What features does the software absolutely need to go live with a first version?
- Fail Fast, Learn Rapidly: Don't hesitate to tackle difficult chunks in your project early and learn quickly from the mistakes you make.
- Think Big, Act Small: Think visionary, as if you were the market leader, but work (diligently) as if it were your first week as a sole entrepreneur.
- Agile Software Development: Use Scrum, Kanban, or another agile software development method whenever possible. They offer many advantages that fit well with LEAN.
- Full Transparency: Make processes, accesses, documentation, communication as transparent as possible to find and eliminate WASTE faster and to support the principle "learn quickly".
- Retrospectives: Hold regular retrospective meetings to evaluate what has gone well or poorly in the project so far. Retrospectives are powerful WASTE identification tools.
- Task Based Working (PULL instead of PUSH principle): Those who work task-based (e.g., with a Kanban/Scrum board or a task list) reduce communication overhead and waiting times. If you need to hand over a work package to someone, for example, don't communicate immediately and directly, but create a task or a ticket. The target person will take the work package (pull) when they have the capacity for it.
Conclusion
LEAN is already in the name of LEAN-Coders. We stand for "Create Value Without Waste", and after reading this article, you now know very well what that means in practice. We are constantly working to sharpen and train our "WASTE detectors".
With LEAN, you can optimize your performance in software projects, increase quality, and even deliver faster.
If you are interested in collaborating or a position with us as LEAN software developers, feel free to contact us here on the website or through social media.