Using Agile for software development? Do you feel it's quite different from Lean ? For practitioners, it is important to understand the differences and similarities between Lean and Agile in order to ensure the correct application and achieve an effective and efficient organization, says contributor Rupesh Lochan. In this article, Lochan sheds some light on the similarities and differences between the two approaches.
Introduction
My background is in manufacturing and I now work in the software industry. Being part of software industry, I sense, there is some confusion about the similarities and differences between Lean and Agile. This article is an attempt to put up a comparative view of Agile and Lean by looking at the history, approach and applicability of each methodology.
History of Lean and Agile.
Lean has its Genesis in the manufacturing industry, while Agile has been conceptualized and developed in the software industry.
What is Lean?
Lean in its present form is primarily descended from the Toyota Production System. Two Japanese businessmen, Taiichi Ohno and Shiego Shingo, are credited with conceptualizing, developing and nurturing the Toyota Production System (TPS), which the motor company began using in early 1950’s. But due credit should be given to James Womack and Daniel Jones for bringing a series of books in early 90’s - namely The Machine That Changes the World, Lean Thinking and Lean Solutions - which helped to conceptualize Lean in its present form, making it possible for organizations to follow a structured approach to become Lean.
What is Agile?
In February 2001, a team met in Chicago for 2 days with a goal to find a new approach for software development, which would be practical and pragmatic and could reflect the reality of a dynamic software development environment. Agile was agreed as an acceptable name for an alternative approach to document-driven software development, bringing many different approaches to software development - Extreme Programming, Scrum, Adaptive software development, Feature driven development and others – under one roof.
What are the Similarities and Differences Between Lean and Agile ?
Both Lean and Agile are primarily conceptualized as a means to improve the efficiency of a process, but as the table below illustrates, their approach, industries served and tool kit are quite different:
Method |
Approach |
Industries |
Tool Kit |
Lean |
Lean provides a holistic approach to make an organization /process more effective and efficient. Lean is more like a philosophy which has different dimension of cultural change, mindset change along-with the toolkit embedded in it. |
Lean as a methodology can be used for any industry/ business/ domain.
|
Lean has a broad range of tool kit such as value stream map (VSM), waste analysis, kanban, heijunka, jidoka, multitasking, supermarket, visual management, empowerment, etc
|
Agile |
Agile is based on the philosophy of efficient project management specific to application development. Agile is more of a technique, suitable for the software development industry. |
Agile is specific to increasing the speed of application development in software industry. |
Agile uses a set of tool kit primarily taken from Lean. Some Lean tools being used in Agile development are multitasking, Kanban, empowerment, visual management, etc |
The differences are summarized in the diagram below:
Mapping of Lean techniques in Agile workflow.
Agile uses many of the techniques that are prescribed in Lean. The following section of this article attempts to map the use of Lean tool kit in the Agile workflow.
The following diagram details the Agile workflow:
Phase 1: Planning.
During the planning phase, the product owner, scrum master and the team are primarily busy with creating a product backlog, doing prioritization of product backlog and planning for the sprint. During this phase ,quite a few Lean techniques are used to achieve the desired objective:
Specify Value:
Specifying value is the first of the five Lean principles conceptualized by James Womack and Daniel Jones. This means being focused on understanding value from the customer’s point of view.
During the planning phase, the whole activity of an agile team is guided by understanding the value from the eye of the customer so that a potential shippable product can be created at the end of the development cycle. Inputs from customer play a big role in prioritizing the backlog. The product owner is responsible for making changes in the priority of the product backlog, based on changing requirements of the customer.
Quality at Source:
Lean prescribes to ensure quality at source so that a process can generate a defect free output.
An agile team tries maintaining quality at source by selecting only those requirements for development during the development cycle (sprint), only if there is sufficient clarity on the requirement. Requirements that do not have sufficient clarity are investigated further for getting more clarity, ensuring that the development effort is used effectively.
Implement Pull:
Implementing pull is another of the five Lean principles given by James Womack and Daniel Jones. It means instead of pushing something onto customer, production should be guided by the requirements (and hence demand) of the customer.
Requirements for development of an agile team is linked with the features that are prioritized with input from the customer. The team develops only that part which is required by the customer. This aspect ensures pull in the system.
Empower the Team:
Empowerment is one of the key aspects of Lean philosophy. Lean values the knowledge of a worker at the lowest level and prescribes that the team must be empowered to make certain decisions, since they are the best people to make those decisions.
Agile follows the technique of empowering the team by giving them a free hand in selecting from the product backlog what they need to commit to. A team is left on its own to solve the problems encountered during execution, without bringing in lot of external interventions.
Phase 2: Execution
Execution is the core of agile development, when the action of development happens. Quite a few Lean techniques are used during execution phase.
Identify Waste:
Lean focuses on identifying and reducing/ removing the activities which are not appreciated by the customer or do not add value to the end product.
Agile development strictly follows this philosophy of identifying and removing waste. The only development activities that are done, are those that must be done for software development. The team avoids doing low level design work and excessive documentation also becomes a taboo, since it is expected that the documents will not be used in future.
Do visual management:
Lean prescribes the use of visual methods to make processes more efficient. Use of a task board is one such example for making the process status available to all on the floor.
Agile development emphasizes on the use of visual management tools. Generally, agile development team uses a big wall for making the status of development available to all.
Establish Kanban:
Kanban is one of the techniques used in Lean for creating pull in the system.
Agile uses Kanban technique to categorize the features under development/ features under testing/ features completed. By using the visual management technique and kanban in unison, the development is made self directing.
Organize the Workplace:
Lean emphasizes on efficient workplace design. It helps in avoiding waste of motion, transportation, inventory, defects, etc . Lean prescribes working in team cells that can make communication effective resulting in the avoidance of different types of waste.
An agile team is expected to be working closely, if possible in the same location. The workplace design should be such that the information exchange is smooth.
[inlinead-1]
Phase 3 : Delivery.
Understanding value for customer:
Lean emphasizes understanding and meeting customer requirements as the basic purpose of a process/ business. There is no one except the customer, who can decide value for customer.
Agile ensures that the product created at the end of the development cycle meet customer’s requirements. Any points of discontent are captured during the review phase and are acted upon subsequently.
Amplify Learning:
Lean emphasizes that an organization must be learning always and trying to reach to a stage of perfection. The fifth principle of the five Lean principles conceptualized by James Womack and Daniel Jones, suggests that an organization must always continue the improvement cycle through continuous and sustained learning.
Agile follows "Retrospective" at the end of development cycle. Retrospective by development team ensures discussion on what went well and what could be improved, ensuring a sustained learning through software development cycle.
[eventPDF]