Lean Software Development principles explained
- Create Knowledge: learning is a continuous process. In a software development industry there should be a systematic process where people can learn new things thought out the life cycle of the project that in turn improves the process itself. How do we learn new things? We should have an eye for any unexpected or any deviation happening in the project which would help us understand what is going wrong/right and how to we go about. This helps us experiment more, learn more and improve the way we do things. Retrospection is a way of creating knowledge in agile and lean world.
- Defer Commitment: Don’t act until you have all the information. Because that is when you have more information to take concrete and correct decisions. It applies to all fields of life and to the software development too. As we are already aware, the requirements keep changing in the real world. So our focus while designing should be to have a system which can accommodate the changes more easily. The design should not be complex or concrete as it becomes difficult to respond to changes.
In the process of development, we need to segregate the development based on whether it is easy or difficult for taking decisions. How to delay committing to any requirement? The iterations help in delaying the decisions where the requirements are not clear. The difficult decisions must be taken at last or at a later iteration so that it can accommodate if there is any uncertainty coming our way.
- Deliver as fast as possible: Customers keep changing their mind. This will result in lot of rework, maintenance, re-testing adding to the cost of the project. The idea is to not to give customer the opportunity to change their mind. Deliver the expected product fast. Use the best practices like continuous integration, test driven development, multiple iterations and cross functional teams. We should remember rework, any kind of delay are all different wastes in the life cycle of the project which adds to the project cost. High speed cannot be achieved without a disciplined team and a high quality product. Some companies go through a lot of best practices, come up with standards to achieve high quality product. But in the lean software development world, the standards have to be the current knowledge on how to do the work in a best way. The team should keep improving themselves, the processes and deliver to customer the quality product repeatedly.
- Respect People: Often the self-organized team deliver the best products. The team can be self-organized when the company environment respects and trusts them to achieve the goals set. The goals and responsibilities are set and the team is allowed to chase the goals without telling them how to do it. This helps the company to identify the team’s creativity, expertise and nurture the team. When we enforce certain standards on the team, we are suppressing the possibility of doing the work in a better way. This comes in the way of continuous improvement which is key in the software development industry.
- Optimize the whole: Lean Software development introduced something called “From concept to cash”. Software development is not only about coding the requirements but it also deals with contracts, cross functional interactions, agreements, outsourcing etc. The way company handles the contracts, agreements everything adds to the success of the project. So the focus should be optimizing the entire process for the overall success. In a project we tend to find ways to optimize to keep the scope, time and cost within limits. But optimizing them independently would not confirm the whole process /project is optimized. There should be a higher level at which the success can be measured in a project.
- Top 45 Fresher Java Interview Questions - March 9, 2023
- 25 Free Practice Questions – GCP Certified Professional Cloud Architect - December 3, 2021
- 30 Free Questions – Google Cloud Certified Digital Leader Certification Exam - November 24, 2021
- 4 Types of Google Cloud Support Options for You - November 23, 2021
- APACHE STORM (2.2.0) – A Complete Guide - November 22, 2021
- Data Mining Vs Big Data – Find out the Best Differences - November 18, 2021
- Understanding MapReduce in Hadoop – Know how to get started - November 15, 2021
- What is Data Visualization? - October 22, 2021