What is Lean software development?
Lean software development is a set of principles that can be applied to software development to decrease programming effort, budgeting, and defect rates by one-third. The principles were adapted from lean manufacturing by Mary and Tom Poppendieck. This approach is beneficial to an organization because agile iterations eliminate extensive pre-planned specifications. User stories rather than large upfront specs are easily understood by each team member and simpler to communicate.
Defining Lean Software Development is challenging because there is no specific Lean Software Development method or process. Lean is not an equivalent of Personal Software Process, V-Model, Spiral Model, EVO, Feature-Driven Development, Extreme Programming, Scrum, or Test-Driven Development. A software development lifecycle process or a project management process could be said to be “lean” if it was observed to be aligned with the values of the Lean Software Development movement and the principles of Lean Software Development. So those anticipating a simple recipe that can be followed and named Lean Software Development will be disappointed. You must fashion or tailor your own software development process by understanding Lean principles and adopting the core values of Lean.
Lean Software Development Principles
Lean development is the application of Lean principles to software development. Lean principles got their start in manufacturing, as a way to optimize the production line to minimize waste and maximize value to the customer. There are 7 principles to Lean software development, each aiming to quicken delivery and bring higher value to end-user:
• Eliminating Waste
• Building Quality In
• Amplifying Knowledge
• Delaying Commitment
• Delivering Fast
• Respecting people
• Optimizing the whole thing
• Eliminating Waste: Waste reduction, being the first rule in Lean engineering, defines its entire purpose. For the most part, the methodology tries to fight these 9 types of waste.
Unnecessary features and code
More tasks in log than can be completed
Delays in the engineering process
Issues with quality
Unneeded and crippling bureaucracy
Costs of aforementioned
• Building Quality In: Efficient quality management is, too, a guiding principle in lean development methodology, as issues in this area lead to different types of waste. Repetitive testing of the code, mistakes in logging, and their resolvement take time and therefore drive costs of development higher; lean strives to address such nuances before they even happen.
• Amplifying knowledge: Lean software development originated from lean manufacturing, where the ultimate goal had always been a simplified, standardized, pipeline production that requires no knowledge and rare modifications.
• Delaying commitment: The methodology strives always to construct software to be flexible so that when new knowledge is made available, engineers can act upon it without wrecking completely what’s been done earlier. Like all new projects, nowadays, are bound to face uncertainty, so the importance of this is hard to overestimate.
• Delivering fast: Historically, meticulous and long-term planning used to be the key to success in business. Only when each aspect of your strategy had been worked out thoroughly, agreed upon, strict milestones and pace of development had been established, you were considered ready to enter the software market.
• Respecting the team: Lean software development is a system aimed at empowering team members, rather than controlling them. It goes beyond establishing basic human courtesy; it instills trust within each project.
• Optimizing the entire value stream: Lean principles allow optimizing team’s workflow, creating unity among everyone involved in the project, inspiring a sense of shared responsibility and shared objectives, which translates into higher performance.