Lean development is a methodology that was first applied to manufacturing, but is now being applied to management, UX, startups, and to software development. Lean software development is the process of optimizing how value is created by reducing waste. In a published example, Scrum (Agile) teams leveraging Lean were twice as productive and experienced 40% fewer defects than traditional teams. By focusing on the big picture and reducing waste in development, Lean projects are more likely to be successful and to speed up time-to-market.
In this guide, we will clearly define the concept of Lean development, including outlining the seven Lean Principles of Lean Software Development and how to apply them in software development. Finally, we’ll examine the concept of a Lean start-up and how Lean methodology is making waves in the business world.
What is Lean Software Development (LSD)?
Lean development methodology borrows heavily from manufacturing, where “lean” became a process of eliminating “waste” – less human effort, less equipment, less time, and less space. This concept was first introduced by Toyota in the Toyota Production System, developed by Japanese engineers Taiichi Ohno and Eiji Toyoda. The term “lean” was not coined or properly defined until the 1990s.
Lean methodology is just starting to be applied to service industries and IT, where “waste” could be manual, inefficient and duplicate processes or procedures, on-site support, software or technology sprawl, repetitive tasks, and other non-value added tasks. The key concept here being value – by eliminating waste, one keeps only that which creates value.
Lean software development (LSD) expresses these lean manufacturing concepts for software development through seven key principles whose focus is minimizing waste and risk while optimizing customer value.
What is a Lean Startup?
This guide has introduced the concept of Lean and explained why and how those concepts apply within the context of Lean software development. But, as noted earlier, Lean is making waves across many industries and in many formats, most notably for start-ups. Failure rates for startups can be as high as 90%, with 35% of failures due to misreading market demand and another 20% due to unexpected competition. Other common failures include running out of money or not having the right team.
Step back periodically and reflect on whether you are in pursuit of the right growth opportunities in your rapidly changing market. And don’t fall into the ‘sunk cost fallacy’ where you cannot move beyond your initial ideas and investments. – Rajay Gulati & Vasundhara Sawhney, Harvard Business Review
A lean start-up takes a data-based approach to the new business, applying the methodology of Lean to ensure the product market fit is correct and to ensure that resources are optimized to speed up time to market. A lean startup is one that favors:
- Experimentation over lengthy business plans
- Customer feedback (validated learning) over intuition
- Iterative development over up-front development
- Minimum viable product over full product
- Pivoting over persevering
A lean startup may be introducing a new product (physical goods, services or software) to an existing brand or may be a new business that springs up around an idea.
A lean startup reduces risk through up-front and regular research, establishing that there is a demand for a new idea / product and that the product is developed to meet those demands as quickly and efficiently as possible. Through this process, a lean startup can “fail,” but will do so quickly, as the methodology will separate the good ideas from the bad very quickly.
Through a process of continuous feedback, lean startups have the agility to support continuous innovation. Tweet This
7 Key Principles of Lean Software Development
In manufacturing and the Toyota Production System, the underlying principles are known as the Toyta Way. In the 2003 book Lean Software Development, authors Mary Poppendieck and Tom Poppendieck organized and articulated these principles around software development, creating the seven fundamental principles of lean software development. These seven principles continue to be widely accepted today.
1. Eliminate Waste
Lean philosophy states that everything that does not provide value to the finished product is waste. In software development, Lean looks for waste in every stage of development, from concept to completion. According to the Poppendiecks, such waste can include:
- Partially completed work / starting too much
- Unnecessary code or features
- Unclear or changing requirements
- Task switching
- Waiting, delays, or ineffective handoffs
- Unnecessary meetings or ineffective communication
- Defects or quality issues
- Relearning (when poor collaboration or communication lead to knowledge silos, long delays, task switching)
- Management activities or, to be blunt, unnecessary bureaucracy
In order to eliminate waste, Lean advocates look at each activity or process and ask: “could our desired result be achieved without it?” If so, it should be eliminated. Value-stream mapping can help visualize the steps or flows toward a future state, helping spot which steps add value to a product. The process of continuous value stream management (small, frequent check ins into process improvements) typically finds more waste than it creates, in terms of administrative burden.
Value Streams help ensure that software and services under development deliver value for employees or customers. – Eveline Oehrlich, The Enterprisers Project
There are several value stream mapping tools available including Ludichart, Plandek, and Smart Draw. Many organizations also leverage project management software to eliminate waste.
2. Amplify Learning
One of the wastes above briefly touches on the issue of relearning, identifying the importance of knowledge. The second Lean principle builds on that concept. To “Amplify Learning” is to create and retain knowledge – to avoid costly relearning, but also to gather and test new ideas to avoid building the wrong features or contributing to defects. When learning takes place, it is typically in one of three areas: new technologies, new skills, or a better understanding of what the user wants and needs.
How is knowledge created and retained?
- User story development
- Code review / pair programming
- Ongoing learning including mentorship, community events, upskilling
- Refactoring and integration testing
- Documenting knowledge to a wiki or code repository (GitHub)
- Commented code
- Knowledge sharing / collaboration / training
In Lean, the learning process is supported by short iteration cycles to continually supply feedback about customer needs, problems, and potential solutions. For example, Lean embraces the concept of testing small experiments such as changing the colour of a design element or adding a different image. Through testing (such as A/B testing), we provide a foundation for continuous improvement.
There are many tools that can assist in amplifying learning, including user story mapping tools such as Featmap or Avion, automated testing tools, or team wiki tools such as Slab or Tettra.
3. Decide as Late as Possible
The concept of deferring commitment is built upon the premise that requirements change based on feedback from the customers, the competitive marketplace, or emerging technologies. Simply put, the goal of Lean is to remove as much uncertainty as possible by testing and experimenting iteratively to be able to adapt to changes or correct mistakes before they get locked in by further development.
To decide as late as possible means to:
- Not plan with too much detail (broad strokes are good)
- Not overplan (be open to change)
- Constantly experiment, test, and incorporate feedback
Almost everything we know about good software architecture has to do with making software easy to change. ― Mary Poppendieck,
Implementing Lean Software Development: From Concept to Cash
There are many techniques available to validate your product idea and. The key is not just to gather user feedback but also to welcome new changes.
We respect your privacy. Your information is safe.
4. Deliver as Fast as Possible
The overall goal of Lean is to optimize for value by reducing waste, a process which ultimately aims to deliver the right product and to develop the product right. In other words, Lean helps ensure the product being built (software in this case) meets the customer needs while also ensuring it is delivered without major defects. This is the foundation of Lean product development.
How can a lean project prioritize speed?
- Focus on short iterations and continuous integration
- Support effective communication and collaboration
- Consider the MoSCoW approach to clearly define features to avoid over-delivering
- Systems to support feedback from customers & testing without adding delay
- Daily stand-up meetings (common in Sprints) to identify needs and obstacles
There are several practical approaches to prioritizing for speed including the concept of Just-in-Time software development, Test Driven Development, and even team design to reduce task switching and avoid costly relearning.
5. Empower the Team
This Lean principle is sometimes called “Respect for People” and is a principle that is often overlooked – at an unfortunate loss. The current level of burnout in software development is currently as high as 80% of developers, influenced in part by COVID-19, but also by overall workload levels. In software development, notably in startups or gaming, burnout is a nearly expected part of the job. Lean re-prioritizes people as a valuable resource.
Lean development empowers and respects team members by:
- Encouraging open and regular communication among teams
- Ensuring there is a team leader or project lead regularly interacting with the customer
- Ensuring leaders see the work being done (“going to the Gemba”)
- Empowering every team member with responsibility and self-management
Everyone who has caught the lean bug shares at least one symptom: we love to observe work. We love to go to the gemba and watch the value creating work, the real work of the business. – Lean.org
When it comes to healthy team development, there are a lot of resources available to improve leadership skills or work on team communication.
6. Build Integrity In
Integrity refers to the quality of the software code, which is why this principle is sometimes referred to as “Build quality in.” Products have two forms of integrity: perceived and conceptual.
- Perceived integrity – the elements of the software that are obvious to the end-user (can see or interact with them). E.g. User Interface. This form of integrity prioritizes the understanding of customer needs and effective communication of requirements.
- Conceptual integrity – the elements of the software that users never see or engage with, ensuring the vision of the product reflects a consistent whole that is balanced for “flexibility, maintainability, efficiency, and responsiveness.” The product should work on consistent entities or operations to avoid duplication and ensure the system as a whole has integrity.
There is a fine balance in Lean between building quality and creating waste: you need enough testing to ensure a quality product free of major defects, but too much testing can be a source of waste. Iterative testing and short iterations helps ensure a constant flow of useful information is moving toward creating a system that meets customer needs.
Lean software development relies on tools such as Refactoring, Test Driven Development, Pair programming, incremental development and feedback, and makes use of automation wherever possible.
7. Optimize the Whole
Hinted at with the previous principle, Lean recognizes that software is more than just the sum of its parts, but also the interactions between the parts. Optimizing the whole looks at dependencies and builds for collaboration to ensure that every employee is incentivized to optimize for the whole – not just for their part.
When individuals or organizations are measured on their specialized contribution, rather than overall performance, sub-optimization is likely to result. – Poppendieck
Pros and Cons of Lean Software Development
Here is a table that highlights the advantages and disadvantages of the Lean software development model:
Pros | Cons |
---|---|
Aims for quick MVP development and delivery and within a limited budget. | Learning is not part of this methodology. Only if the developers are highly skilled and experienced, the methodology can help. |
Changes are well thought through and planned, which, in turn, help minimize the expenses. | A business analyst is vital for the success of the project. In case you lack a skilled team of business analysts — it can lead to feature creep. |
The development team gets the freedom to make project-related decisions. This motivates them and also gives a sense of ownership, which, thus increases productivity. | Lean offers too much flexibility. It allows the discovery part to evolve with time, but too much of this flexibility can lead to extended delivery time. |
Empowerment and respect often lead to higher levels of employee job satisfaction, which is vital to attract and retain skilled IT staff. | Dependent on team cohesiveness and “going to the gemba,” which can be challenging for distributed or remote teams. |
Lean in Action
Let’s take a look at Lean in action and how real companies have benefited from Lean startup thinking and Lean software development.
DropBox
DropBox incorporated Lean Startup Principles to incorporate immediate, high-quality feedback by reaching users where they were, helping them reach 1mm users within 7 months of launch.
Buffer
Buffer made it to 500 users within 2.5 months of launch, with a conversion rate of 4% to paying customers, by applying the concept of Lean to building a minimum viable product that was “much more minimal than you think.” The smallest test was just a website with two-pages to test whether the idea resonated. Today, Buffer boasts over 1 million users on its social media management platform.
HubSpot
HubSpot leveraged Lean Thinking to create its marketing platform, learning directly from customers in a variety of ways – direct feedback, forums, customer support – and allowing customers to become their lead supporters and iterating continuously to meet the growing needs of customers. HubSpot managed to grow from $0 revenue to $200M.
Takeaway
Lean software development methodology focuses on delivering value quickly and efficiently. However, for Lean to be effective, you need the right people with enough of the right skills to minimize waste. Where there exist IT skill gaps, a major issue for US businesses today, this can be a roadblock to Lean development.
At Net Solutions, we bring a lean mindset to every client and product. When you bring us an idea (or, even better, a customer problem), we collect insight. This process is called discovery. We ask:
- What is the problem your users are facing?
- How is your product or services going to solve that problem?
- Is the problem real? Or, are you trying to solve a problem that doesn’t exist?
- Why will users buy your product or services?
Once the idea is validated, we take an iterative approach to development that helps build and test products toward a minimum viable product. Our approach is Lean and Agile to ensure we develop the right product in a way that keeps costs down. With insight, and a team of skilled analysts, designers, and developers, we can help you avoid the top risks (product market fit, lack of skills) that lead to startup failure.
If you are looking to gain the benefits of accelerated Lean software development to help accelerate time to market on your new idea, reach out to see how the experienced Net Solutions can help.