Lean software development (LSD) is considered an integral part of the agile development methodology.
Lean Software Development is a methodology whose concept is to maximize value for customers by eliminating waste and providing this value in a shorter cycle time without the quality or well-being of the development team being sacrificed.
Lean software development ensures that development cycles are optimized with the value provided in a sustainable way that does not delay delivery or affect the morale of the team.
Principles of Lean Software Development
There are 7 principles which guides the implementation of LSD.
LSD eliminates activities that do not provide value to the customer. Value in LSD is explained as anything the customer or user intends to pay for.
Once the value is defined and identified according to the product, the schedule can be mapped out to remove activities that do not contribute to the delivery of that product value.
The waste that LSD helps eliminate may include the following:
- Excess product features.
- Incomplete task/work.
- Repetition of work.
- Mismanagement of backlog.
- A complex solution that could actually be simpler.
- Task switching.
- Poor communication.
- Unnecessary code.
- Unclear requirements.
Build Quality In
The main purpose of this principle is to ensure that a part of the software does not need to be worked on at a later time. If a high quality product is not provided initially then a lot of debugging and errors may pop up after release.
The entire focus of the team should be on developing quality and there are several agile approaches that can be used to provide product quality. Some of these approaches include:
- Pair programming.
- Test-driven development.
- Automation of some activities to reduce and ultimately eliminate errors.
- Incremental development through timely and consistent feedback.
This principle encourages the development team to have the proper structures for continuous learning. Software development requires that knowledge is generated consistently.
The project may require a different technology stack or methods. This principle can be implemented through code review, adequate commenting, training, peer programming, session sharing, proper project documentation, and more.
The sooner a final product is delivered without major defects, the faster the product can be improved through consistent and faster feedback that will be incorporated in the next iteration.
Decide as late as possible
This may be controversial due to routine decisions being made as fast as possible. However, the lean principle of delaying decisions does not mean being irresponsible when making a decision.
Instead, it encourages development teams to have more time to collect more data and information that can help make important decisions. Delaying decision-making provides more time to learn and acquire knowledge, and ultimately make better decisions.
Therefore, software projects will not suffer from faults or bugs impacted by improper decision-making. The main question here is: “Are you willing to make a rash decision and regret it later or take some time to gather more information and make the right decision?”
Empower your team
A key principle in LSD is the importance of the team regardless of the project or product being developed. It is emphasized that workers have to respect one another.
When things are not working as planned, the focus has to be on fixing the bugs or checking the gaps rather than passing blame. This will ensure a favorable workspace is maintained for everyone and permits them the innovative freedom to select the tools or approaches for tasks that are assigned.
Optimize the whole
This principle recognizes the need for a comprehensive understanding of the software development process to make improvements. The software consists of many people who form part of the entire chain. However, to get quality results, all the work done must be optimized and not just the sub-processes.
Benefits of Lean Software Development
- Loss prevention: Preventing losses due to overproduction is very important. For software, overproduction means excessive or too many features.
- Increase in team involvement: The team is one of the major key values of lean software development. Their involvement and participation help to prevent losses and optimize workflow.
- Simplification and rationalization of the development process: Lean software development enables a team to eliminate unnecessary phases in the software design process. This ensures that the development process is cheaper and faster, therefore saving more resource time and money.
- Lean principles are very useful in handling risks quickly and cheaply: A team may need to integrate products with third-party APIs. This risk may require immediate attention. However, if there is trouble in the use of third-party APIs and their integration (integrations with the current system may require extensive documentation and this may not be properly written), the team manager or product manager will want to find out if the product is going to fail as early as possible before spending all the resources. Problems discovered may eventually lead to budget overruns etc.
Limitations of Lean Software Development
- Requires a lot of top talents in the team: If a team does not have people that are great at adapting to changes, operating across multiple disciplines, or at least being great at what they are able to do, then it might not be a good fit for that team. If there are people in the team with the mindset that “I’m done with my work and I will not think about it again, I will not consider the whole picture” then LSD is not a good choice.
- Increase in requirement: There may be instances where the requirements of a product keep increasing with no finalization. These situations require delicate management from the product manager talking to the customer.
- Heavy focus on continuous improvement: The implementation timetable may be very long due to continuous iteration and improvement being prioritized. This may in turn increase the timeline of when revenue can be gained.