Lean is a way of working which focuses on the removal of waste from a process. In this article, we will focus on following aspects of Lean in Software Development:-
- What is Lean in Software Development– In this section, we will learn the history of Lean, when and how Lean was invented? How did it evolve to the software industry from the manufacturing industry? What is Lean management in Software development?
- Lean Artifacts – We will learn about the primary artifacts of lean. We will get to know about the value-adding and non-value adding activities. We will also discuss different types of wastes in Software Development in detail.
- Lean roles and responsibilities – There are three significant roles in the Lean Development process – Lean Master, Lean Project Leader, and Lean Team Members. Here we will get to know their responsibilities.
- Lean Process flow – Here, we will talk about the principles to be followed during the entire Lean process flow.
What is Lean Software Development?
We have many other methodologies in Agile like Scrum and Extreme Programming then why Lean? What makes it different from other methods?
Here’s the answer, Lean Development Methodology decreases cost, efforts, and waste. Lean software development is an iteration methodology initially developed for the manufacturing industry to optimize production and avoid waste. Many of the principles and practices in Lean Software Development came from the lean enterprise movement and was initially used by big companies like Toyota.
Mary and Tom Poppendieck brought Lean into the Software development world. They converted all the values, practices, and principles according to the software industry, documented them all into one book and brought them into practice.
All the activities in any industry are divided into Value Add (VA) or Non-Value Add (NVA).
Value-Add activities –
are all the activities that physically improve a product or a service for customers – which means they are those activities that add value!
Non-Value Add (NVA) activities –
are the activities that do not add value but are performed. The Customer has to bear the cost of NVA, and since it is not value add, a customer doesn’t want to pay for it.
To understand waste better, we can consider a very simple example of an oven. An oven’s design is such, that if you open the door, it stops automatically and saves electricity. Similarly, in technical terms, if a feature is of no use, no extra coding is required. The Japanese call waste as “Muda.” The main focus of Lean is to remove waste and keep what is compulsory.
7 Waste of Software Development:
Lean Manufacturing and Toyota Production Systems (TPS) were the firsts to develop Lean Software Development. In TPS, they divided waste into seven major sections.
Mary and Tom Poppendeick – in their book ‘Lean Software Development – An Agile Toolkit,’ interpreted these seven wastes of manufacturing into seven wastes of software development. These seven wastes are Non-Value Add and act as the opponent. They make us waste our efforts, time, and cost.
Once we understand all seven wastes, we should be able to identify the wastes in the process, irrespective of Industry. Once you can identify it, you can eliminate it and hence increase your efficiency, productivity, and revenue.
Below are the wastes in the manufacturing industry and they are recognized in the software industry as below:-
|Manufacturing Industry Waste||Software Development Industry waste|
|Inventory||Incomplete/Partial work done|
|Extra processing||Extra or not needed Feature|
|Overproduction||Additional Processing or additional documentation|
|Defect||Defect (Counter-intuitive it seems at this moment, more details below)|
WASTE 1: Incomplete/Partial Work Done –
Work doesn’t add value to the customer until its complete, which, in turn, keeps the resources occupied. Moreover, until and unless it is not complete, we can’t figure out whether it will work or not.
- Incomplete coding documentation
- Partial or incomplete code
- Unverified code
- How to reduce?
- Try not to leave things unfinished
- Limit and decide to complete work in progress
WASTE 2: Extra or Not Needed Feature –
A feature that has not been demanded by the customer, or is not suggested by the customer but comes as part of the package, is called Extra Feature. For example, if the scientific calculator is software, then there are many features like angles (sin, cos, tan), square root, etc. which might not be used by everyone but they come as a part of the package. Here comes the 80:20 rule in the software industry. It means 80% of the users, use only 20% of the features.
- Example: At times, the client may be carried away with the latest technology and end up demanding a feature like a slider on a website, which will rarely be or not at all used by the end user.
- How to reduce? “Instead of worrying about how to develop stuff faster, it is far better to learn how to stop developing the things that are not important and focus on the things that will have the real impact” – The Lean Mindset.
WASTE 3: Extra Processing or Extra Documentation –
Extra processing is incompetent or unnecessary additional process steps that add no value to the development process.
- Very detailed documentation
- Extra management/planning activities
- How to reduce?
- Minimize extra activities
- Plan as per requirement
WASTE 4: Task Switching –
Every time a person shuffles between tasks, there is a significant time that is required to gather the information, thoughts, and get into the new task. According to research, it takes a minimum of 15 minutes of concentration to enter flow, and during this time, you are not productive. Imagine – if a developer is interrupted two times a day, over half an hour of work is lost.
- One person working on two projects
- Developer interrupted for breaks for conversations over other projects.
- How to reduce?
- Minimize shuffling and assign resources to one project at a time
- Eliminate what is not important
- Minimize interruptions
- Prioritize the activities
WASTE 5: Waiting/Delays –
There are some activities for which we need approvals, or there is some action required by some other team. Then this waiting for approval or waiting for information leads to waste referred to as “Waiting/Delay” waste.
- Waiting for inputs/information
- Delays in approvals
- Delayed testing
- How to reduce?
- Sitting in the same location as the client, this helps in quick approvals.
- Face-to-face conversations
- Regular feedback
WASTE 6: Hand-off –
Knowledge lost each time a deliverable/artifact is handed-off (analyst, designer, developer, and tester). While handing over, we can’t tell everything in detail no matter how much we try; some information would always be missing
- How to reduce?
- Less switching preferred
- One person should be assigned one activity
- The activity should be handed over to someone experienced in the same field
- How to reduce?
WASTE 7: Defect –
Defect resolution takes a lot of time, first wait till it is recognized and then wait for the resolution. The expenses which are incurred on fixing a defect at an early stage are significantly lower than those identified after the product has been delivered.
- How to reduce
- Testing as early as possible
- How to reduce
Lean Roles and Responsibilities:
If we want to implement Lean in any firm, then it becomes essential to consider the people as the main asset of the company. Primary roles in Lean development process are as follows-
Lean Master –
Any team working in a lean environment primarily consists of 3 roles – Lean Master, Lean Project Leaders, and the remaining large team is called “Lean Team Members.” Since “Lean Master” is experienced and has worked with the client in the same environment so he will be more aware of the project and the product. Lean Masters will help the client by-
- Selecting people with the right and relevant skills, i.e., allocate resources.
- Coach, Train and Mentor people in Lean Management
- Maintain master plan
- Manage changes
- Providing them job security by the company
- Understands Lean tools and techniques
- Understands what to expect during the transition and after that
Lean Project Leaders –
Lean project Leader works as a communication channel between Lean Master and the team but also works as a motivator. His main responsibilities include-
- Lead lean teams and projects all the time
- Report progress and remove barriers
- Communicator and organizer
- Responsible for team improvement
Lean Team Members –
In a small size project, the Lean team will be a team of 6-9 members. Their roles and responsibilities are as follows-
- Represent all process steps
- Expert in the process and the work they do. Like Developers, testers.
- Work together to design and implement a solution.
Lean Principles of Software Development:
Time, Distance, Team Size, Workforce, despite all these limitations in the real world the main focus of Lean remains the same – remove the waste and hence make your process more effective and always aim to get your work done through the process with as little roadblocks as possible.
Let’s take an example of a restaurant to understand lean workflow better. On a Sunday, let’s consider on average, 100 people come in an hour for dinner to this restaurant. Now as the owner of the restaurant, what will you do to feed them efficiently?
Eliminate Waste –
In the software development industry, Unnecessary Codes, Transportation, Partially Done Work, Defects, Task Switching, and Over Processing, these are some of the examples of above mentioned seven wastes. These wastes are to be identified and removed at every stage to deliver fast and better functioning features to the customer, and Lean Team members ensure they do it correctly. They find out the source of the waste and then work on the root.
The above picture shows the general functions, features, and documents usage data of a software development company. In any software company, there is usually a large portion of functions and features which are developed but never used or rarely used. The same goes for documents that are unused. All these features, functions, and documents are a waste for the system & their source should be identified and removed.
In our restaurant example – First things first, we cannot let any of our employees waste his/her time into any unproductive activity, like finding table numbers to serve food, talking to people unnecessarily, entertaining requests which are not applicable, etc. In short, to serve efficiently, you need to make sure there is no waste of time, cost, or manpower in the process.
Empower the Team –
In the software industry, we should respect the team members’ knowledge and experience as they are the ones who are practically working on the client’s project. In short, we should prefer the team over the process to be productive and successful. In the software industry, you can empower them by-
- Giving them opportunities to innovate and experiment
- By allowing them to take local decisions
- By providing them training on new technologies etc.
For our restaurant example – You will provide your staff, all that is required, i.e., equipment, spices, vegetables, oil, cleaning stuff, stoves, etc. You will also keep them motivated by giving away small tokens of appreciation. You will trust the chef’s knowledge and ask them to cook their best. Also, they need to trust their experience and work skills.
Deliver it Fast –
In Lean, we identify steps which are slowing us down, eliminate them as it will help us in fast delivery of software solution to the client. In Lean, we develop and deliver software solutions, incrementally to the client. Lean Project Leader keeps a track and ensures timely delivery.
For our restaurant example – we have taken a case where we have made two different processes:
Total time taken: 1 hour by each person.
Total time taken: 30 mins
It is quite evident that Process 2 has a clear edge over Process 1 because-
- As all the workers are getting utilized, so there is no waste in the process.
- It took only 30 minutes to serve food to the customer in Process 2 as compared to one hour in Process 1, therefore, leading to fast delivery as well.
Therefore, the restaurant got rid of Process 1 as it is slowing them down and follows Process 2 for faster delivery.
Optimize the Whole –
In software development organizations, developers may feel pressurized to meet stringent timelines and end up writing sloppy code, which may result in more defects. This, in turn, increases the workload for developers only. Similarly, if testers are overburdened with work, they will not be able to share their findings with developers on time. In the meanwhile, developers keep on writing code thereby increasing backlog for testers. An organization can easily overcome these situations by having a better understanding of their tester’s/developer’s capacity.
For our example, this restaurant observes more customers during the festive season. There is an ever-mounting pressure on the chef to cater to all these orders on time. As a result, he missed out on keeping the right balance of spices in 2-3 dishes, resulting in returned orders. This further causes rework for the chef as well as for the person who is responsible for serving. To ensure quality, avoid rework and timely delivery, restaurant management may put a threshold on the maximum number of customers which they are going to cater to at any given point of time. As soon as the number of customers reaches this threshold limit, the restaurant is not going to accept any more orders/customers, which helps in optimizing productivity, quality of production, and your business as a whole.
Build in Quality –
In the software development industry, your objective should be to maintain quality from the beginning and not test it in later stages. For instance, in the first place, the developer should try to develop smooth and bug-free coding. If any bug still appears during testing for resolution, the developer needs to ensure that:-
- The resolution of bug takes place.
- A thorough root cause analysis has been carried out.
- He takes down the details for the future reference.
The reason being, if the same bug is there in some other scenario, then it can be fixed during the development stage itself.
In the case of our restaurant example, one of the basic expectations of the customer from the quality perspective is “hygiene” so it is of utmost importance that all utensils are thoroughly cleaned in which the food gets served. Restaurant management would like to avoid any risk on account of “hygiene,” so they opted for a dishwasher machine, thereby, eliminating the potential risk of customer complaints on account of dirty dishes.
Defer Decision –
In the software development industry, most of the decisions have a direct impact on the project. We can always try to delay the decisions until they are based on facts because corrections are difficult in the software industry, as we may need approvals and it may cost us money as well. The lean master can defer decisions to avoid this.
For our restaurant – in case any customer complains that the food is too spicy. You know whom to question. But you can’t take decisions then and there; you need to check the facts and try to solve the problem, which is more important than making some harsh decisions.
Amplify Learning –
When it comes to a successful project, knowledge plays a significant role in the success of the project. Learning is an ongoing process that never completes. We need to keep learning from everything we code, test, deliver, and discard. We need to keep this knowledge available for everyone by sharing and storing it at some common place like a shared drive or LMS. Which, in turn, allows everyone in the system:
- To learn things that did well in the past.
- To avoid things that did not work well in the past.
Similarly, in our example, if the chef creates some dish which is very tasty, appreciated by the customers and gets repeated orders, its recipe must be shared with the rest of the chefs. It would be a delight for the rest of the chefs to learn what Chef did differently to make it taste great. Also, this will make the rest of the staff equipped to prepare an equally tasty dish in his absence.
After going through this article, we can conclude – Lean is one of the highly proven and successful methodologies which helps in eliminating waste, reducing cost, improves productivity and helps in maintaining a high level of quality.