Project management seeks to “perform the right projects right” so that customers, sponsors, regulators, portfolio managers, and performers are satisfied.
In my career of project management, many times I faces a problem of excessive documentation, excessive planning, unproductive meeting , delay in completing projects on time, avoidable rework etc. which I consider as a waste in project management. Therefore as Lean project Manager, I decided to eliminate all these waste.
“Lean” is a quality improvement and management philosophy that began in manufacturing. Its principles can be applied in any process. The core objective of the Lean Software Development methodology is to optimize the efficiency of the whole development process by eliminating the extra additive practices (termed as “wastes”) and the system as the whole.
For a long time, I was following some outdated software development principles and practices which were not productive enough to meet the goals.
Hence for product development, I realized that there is need to use latest technologies and practices to work exceptionally the best.
WHY ONE SHOULD ADOPT LEAN SOFTWARE DEVELOPMENT METHODOLOGY
LEAN methodology comes from the manufacturing sector and has the long-term process improvement system for a company. LEAN methodology manages the overall work of an organization and applies to all areas of management to get a more efficient and effective overall process. Lean Manufacturing principle is translated into the software development by Tom and Mary Poppendieck and is derived from “Just in Time production” expertise by Toyota. The lean principle has been well accepted throughout the software industry.
Here is the 7 basic principles of lean software development
Let’s take brief look on each principle and understand them well.
1. ELIMINATE WASTE:
According to Lean thinking anything which does not directly add value to the finished product is considered as waste in software development. Some of the waste in software development are:-
1. Improper and partial work done
2. Delay in delivering projects
3. Unused code or partially done coding is waste
4. Wrongly prioritizing the backlog will result in a waste of efforts
5. Any rework or multitasking is a complete waste
Therefore we should keep identifying these kind of waste and try to eliminate them as much as possible. And to reduce these waste it is important for the development teams to be self-organized and operate in a manner that reflects the work they’re trying to accomplish. New techniques should be used to point out sources of waste and to eliminate them. Waste-removal should take place until and unless essential processes and procedures are liquidated.
2. BUILD QUALITY IN:
As soon as the code is written, the accumulation of defects should be prevented for better quality. First of all no defects should occur in the process, but if you can’t stop such things from happening then you do some work validate it, any issue found fix it and then iterate. Queuing defects is not considered as effective so for better quality, fix it as soon as it encounter. Test Driven Development (TDD)is one of the best practice available. Your aim should be to build quality into the code from the start, not test it in later.
3. CREATE KNOWLEDGE:
Learning is equally important as planning to make any project or product successful. Iterative development kind of strategies should be promoted to help teams to find out what exactly stakeholders want and hence act accordingly. Keep learning from what you code, test, deliver and discard. Update yourself and your team with new techniques that is useful. Try to learn systematically throughout the development cycle. And finally keep all this knowledge accessible to everyone.
4. DEFER COMMITMENT:
There is no need of stating a precise requirement to start software development. As there is an urgency on the team to make certain decisions so that they can proceed, these decision can be flexible enough to tolerate and support business effectively. Proper facts must be available to take right decisions otherwise it will have adverse effect on the project. Keep delaying decisions which are not based on facts and iterative approach till the end of the project because it might be very costly to correct mistakes after the release of the project.
5. DELIVER AS FAST AS POSSIBLE:
Customer needs and value fast delivery of the product. The sooner you deliver the end product without any major defects, the sooner you receive feedback and hence will have no time to change his mind.So in software development. The required result can be achieved by applying the “just- in- time” production ideology where the team is organized and the tasks are divided among themselves.
Encourage teams to deliver potential solutions time to time. This will motivate them to stay focused and add value.
6. RESPECT PEOPLE:
Although people are considered as resources and the most important aspects of software development, they need assurance and motivation that they will not be disturbed during the completion of tasks. Team members should provide support and help in difficult situations. Show respect and Foster trust and relationship with them.
According to lean approach principle “find good people and let them do their own job.
7. OPTIMIZE THE WHOLE:
You need to manage programs of interrelated systems so that you can deliver a complete product to your stakeholders There should be well-defined relationships between different vendors, in order to produce a system with smoothly interacting components. Optimizes the whole value stream, from the time it receives an order to address a customer need until the software is deployed and the need is addressed.