In the 1990s, one company stood out in the automobile manufacturing industry. What did they do that we can apply to software development? Here we will tell you!
How can we improve the performance of our teams and of our organization? As leaders, this is something we ask ourselves all the time since in this competitive world, we are constantly demanding to get more results with the same amount of resources (or even less). Where can we find the required substantial competitive advantage if this is the scenario?
In the early 1990s, in the automobile manufacturing industry, one company stood above everyone with a huge competitive advantage. That company was Toyota, and everyone was excited to learn what they had done to improve their performance while others were struggling to survive in the market. The answer was simple: They were applying some manufacturing principles and practices that they had been developing since the 1950s, which they later called Lean Production or Lean Manufacturing.
Thanks to its success and how it was working, the concept was taken by the software industry and renamed as Lean Software Development (LSD) in order to apply it within the development process. Some of the current trends such as DevOps or Microservices, as well as methodologies like Kanban, are based on some of the Lean principles, helping to improve productivity.
This might be interesting: Microservices: The biggest challenge might be your own company
Lean Software Development: What does this mean?
Thin, healthy, light… All these words can go with Lean. Lean Software Development refers to a management philosophy that looks to maximize the value for the clients. It means that a process can be approached in a way that makes it faster and more productive, with less risks and waste of time and money.
Fifteen years ago, when Lean Software Development: An Agile Toolkit was published, the authors studied the Lean Manufacturing principles and adapted them to software development. As a result, they established seven principles that can help you achieve your objectives.
In this article, I decided to focus on the most important principle from my experience – eliminate waste. I will also explain the best tool to accomplish it, called the Work In Progress limit (WIP).
Focus on the necessary
Lean tells us that if we focus on satisfying the demands of our clients as soon as possible, we will improve the overall productivity as well. Anything that does not directly add value to the customer needs to be discarded because it is a waste of our resources.
If we want to eliminate the waste, we need to concentrate on reducing the Lead Time, which measures the time between when we get a customer request and when the customer receives what they requested. Translating this to software development, we can say that Lead Time is the time between when we got a change request and when the change is delivered to production.
Let’s review a typical software request in order to see the challenge in a real world example. To satisfy a customer’s request, we have to do three steps (Implementation, Testing, and Production Deployment), and each step is done by different teams.
In this context, the Lead Time is the sum of the duration of those steps plus the time in between each step when the request is on standby. Here is a hypothetical, but quite probable, example.
Waiting for the Development Team to start the request: 10 hours
Real implementation time: 2 hours
Waiting for the QA Team to test the request: 4 hours
Real testing time: 1 hour
Waiting for the IT team to deploy the request: 2 hours
Real production deployment time: 1 hour
Processing Time: 4 hours
Lead time: 20 hours
This example shows us that to complete the work required we just need 4 hours; however, the customer receives the result of their request in 20 hours. In general, there is the tendency to put the focus on reducing the time necessary to do the actual work. However, as we can clearly see, we can significantly reduce the Lead Time by reducing the waiting time, which represents 80% of the total time.
Limit your work!
As a Project Manager, I have had the opportunity to apply the Kanban methodology in several software developments and have learned how to apply the WIP limit and see the extraordinary outcome of it. Lean principles are applied in current trends in the software industry, and Kanban methodology is one of them. Its core practice is to limit the Work In Progress (WIP).
The common practice of every Project Manager is to optimize the capacity of the teams and get the maximum out of them. Therefore, if we find out that someone does not have anything to do, we rapidly assign him or her something to do, right? Although we may think this makes the team move faster and deliver more, we could in fact be making it slower and less productive.
Why do we have this contradiction? For each item to do, the team needs to spend more time in communicating, more time in meetings, more time transferring knowledge, jumping between various and unrelated tasks (context switching), asking experts questions, providing status updates, etc. All of this overhead increase exponentially as we add more tasks.
We are not thinking about the collateral effect when we see that Joe does not have anything to do and we decide to assign him the low priority feature Z. We are not thinking that in order for Joe to accomplish feature Z, he will need help from Sara and Michael and will need to ask the Product Owner a few questions… All of them are working on the critical features A and B. Because of this, they will be distracted, they will need to do context switching, add that item to the agenda of the meetings, etc. By doing this, we are generating all this waste, delaying our top priorities in the project just for the sake of efficiency within the capacity of the team.
What we need to do instead is ask Joe to help Sara and Michael.
The solution is simple: limit the number of items in progress. This will help the team to stay focused only on the most critical items. The end result will be better productivity with less stress and tension felt by members of the team.
To Sum Up
As leaders of our teams, we can significantly increase the value that we deliver to our customers by having the team working on less things at the same time. Our role is to find out what the top priority is with our stakeholders and then guarantee that the team focuses just on that and nothing else.
Comments? Contact us for more information. We’ll quickly get back to you with the information you need.