Some of the Lean principles are:
Generate Value for the Customer, Society, and Economy
Evaluate every function on the company in terms of its ability to achieve this
Base your management decisions on a long-term philosophy, even at the expense of short-term goals
Redesign processes to achieve high-value-added, continuous flow
Create a ﬂow to move material and information fast as well as to link processes and people together
Minimize WIP and inventory by stocking small amounts and frequently restocking based on what the customer process actually takes away
Be responsive to shifts in customer demand rather than rely on schedules.
Eliminate overburden (MURI) to people and equipment and unevenness (MURA) in the schedule Eliminating waste (MUDA) is just 1/3 of the Lean equation. Use Pull Systems to avoid overproduction. Build into your organization a support system to quickly solve problems and put in place countermeasures. Build a culture of stopping to ﬁx problems, to get the quality right at the first time. Allow creative and individual expression to improve the standard, then incorporate into a new standard. Make decisions slowly by consensus thoroughly considering all the options; implement decisions rapidly.
The elimination of waste leads to the overall efficiency of the development process. This is turn speeds up the process of software development which reduces project time and cost. This is absolutely vital in today's environment. Anything which allows Organizations to deliver more projects in the same timeframe is going to be popular. Since it is just: Non-value-added effort required to create a product. Development of Unused Features. Time spent in creating and managing defect.
There are quality assurance processes designed to avoid quality issues in the first place.
Two examples of Build Quality are:
1. Pair Programming
2. Test Driven Development
Pair Programming seeks to avoid quality issues by applying the minds of two developers to each task. The task benefits from the collective, combined experience of two developers instead of one, often resulting in better productivity as they see solutions that on their own they might not have done.
Test Driven Development
Test Driven Development avoids quality issues by writing tests before writing code. In the simplest form, think about a Test Analyst/QA person writing the test conditions for each feature just before it’s developed.
If the developer knows how it’s going to be tested, they are much more likely to write code that addresses all the scenarios. By doing development in small incremental steps, through close collaboration, and by developing in small iterations, these agile methods provide the opportunity for constant two-way feedback between the Product Owner and the team. This feedback can be immensely valuable, inspecting and adapting the product every single day in order to ensure the right level of quality – and most importantly of all – the right product.
Agile development methods also encourage automated regression testing. Of course, this is a practice that is not unique to agile development but is another way to reduce the effort associated with finding quality issues before they occur in a live environment. Create Knowledge: Knowledge is important, and helps the longer term productivity and flexibility of the team, you need to take some specific actions in the short term and put some specific things in place to ensure that you create it. Exactly what you do, as always, depends on your particular situation.
Here are some things you could do on your projects to help create knowledge:
a) Pair Programming
b) Code reviews