Applying Lean Concept in Agile: Lean-Agile Methodology
Lean Agile has been the hottest topic in town for a while. We are familiar with Agile, but what is Lean Agile?
Lean principles were first introduced by Toyota and it was followed only in the manufacturing sector, but it got attention from the software industry after Tom and Mary Poppendieck wrote a book named “Lean Software Development: An Agile Toolkit”
Lean-Agile in Software development focuses on 7 key principles:
1. Eliminate Waste:
Nobody works to create waste, but some wastes are obvious that we fail to notice and which can be avoided. Toyota defines three types of waste ‘Muda‘ (meaning unproductive), ‘Mura‘(inconsistency, unevenness) and ‘Muri‘(unreasonableness, over-burden).
In software development the possible wastes are
- Unnecessary code or functionality
- Delay in the process
- Unclear requirements
- Constantly changing requirements
- Slow or ineffective communication
- Partially done work
- Defects and quality issues
- Task switching
2. Build Quality In:
Agile methodologies like Scrum, XP, TDD, Pair Programming etc. focuses more on Quality. Simple steps to bring in Quality process in software development include:
- Constant feedback – Inspect and Adapt
- Minimize time between stages
- Frequent integration
- Test cases, Test Script etc.
Quality is not an act, it is a habit. Quality is everyone’s responsibility and focusing on it reduces cost, time and effort significantly.
3. Create Knowledge:
Knowledge is key in software development. Some of the steps to create knowledge in our environment are
- Pair programming
- Code reviews
- Thoroughly commented code
- Knowledge sharing sessions
- Training etc.
4. Defer Commitment:
The term “Defer Commitment” can be easily misunderstood. What it means is to “Decide as late as possible”
Decide as late as possible means to keep your options open for as long as possible and get inputs as much as possible. By the time you need to decide, you will have many possible paths to choose from. That’s the reason in Agile Scrum, sprint planning happens just before the start of Sprint.
But keep in mind, deciding too late will delay the team and project success will become difficult. In deciding too early there is the likely risk that the plan changes in between due to newer circumstances.
5. Deliver Fast:
Deliver as fast as possible – Speed to market/First mover advantage is undoubtedly a competitive advantage. Instead of over-engineering or enhancing the product in terms of software architecture, design or business requirements, launch a simple product to get feedback from real end users, which can in turn be used to enhance the product.
Simple steps to ensure fast delivery are
- Have the right people
- Have right and clear plan
- Keep product simple
- Work as a team
- Eliminate waste
- Build quality in
6. Empower People:
Empowering people in workplace include:
- Assign ownership
- Respond to people promptly
- Listen attentively
- Hear opinions
- Empathy for other views
Empowering people doesn’t mean accepting whatever they say, but trying to discuss pros and cons as a team and make a decision. Important thing is to empower people without losing control of the outcome.
7. Optimize The Whole:
A lean organization seeks to optimize the whole value stream; not just individual people, teams or departments. A team which is organized in such a way that it has everything to deliver has distinct advantages like
- Responsibility and accountability
- Leading to better commitment
- Quality and innovation
- Team spirit and cooperation
- Shared goals
- Better team, Better product, Better organization
It’s good to follow Agile but let’s be better by following Lean Agile.
Image Credit: John Cooper on Flickr