Leaner and meaner: Lean Development
“The most dangerous kind of waste is the waste we do not recognize.”
Have you ever wondered why some organizations can be so wasteful? As a high school student, a friend mine’s uncle was a truck driver. He would tell stories about goods that seem fine but could not be sold for one reason or the other. These goods were given to the truck driver or sent to the trash. Having grandparents that lived through the depression I saw them waste hardly a thing. Lean manufacturing focuses on reducing waste and lean development does the same. Let’s start by reviewing some principles.
If you search around for Lean Development on the internet most resources point back to one book. Implementing Lean Software Development by Mary and Tom Poppendieck is the seminal work. In it, they outline the key principles of Lean Development. Let’s review the seven they discuss here.
Waste is anything that gets in the way of delivering value to the customer. Partially complete code is a form of waste. You see the emphasis of shipping code in the Scrum model. Churn or changing requirements is a form of waste. This is a waste of developers time and yields no value for the customer. Requirements gathering way ahead of time and testing long after the code has been written are also wasteful. Integration delays are wasteful and can cause delays. For this purpose, many organizations use continuous integration.
Build in Quality
The Poppendieck’s point out that defects are in essence incomplete work. If we use measures to prevent defects early like Continous Integration and Test-Driven Development(TDD) we can eliminate many defects. The earlier the defect is found the more money is saved and value delivered. Lean principles focus on the system. Some managers will browbeat developers who create defects. Lean says the system is part of the problem. Expect to change your code and refactor it often. Create programs that are easily changed.
We must create software that can evolve. Don’t expect it to correct the first time. Do builds daily to get feedback on your changes. Share your learning with your team and organization. Build learning into the system, therefore, everyone can learn. Do waste your learning or your organization will regret it.
I was having a conversation with Tim Gifford from Lean Techniques once. He brought this up and it was hard for me to understand right away. Having a plan mapped out can be reassuring. As I have learned more about lean though I understand why this helps. Making a decision to early can cause waste. Also, making decisions reversible can help us back out of something that seems not to work. Now I just need to work on my wife who plans out our trips two years in advance…
The faster we can deliver value we can get compensated for our work. Half done software isn’t worth much to anyone. Look for ways to streamline your process. Along with this seek out opportunities to eliminate defects as well. Simple things like using Test Driven Development can’t find issues early before they get out in the wild.
We need to be reminded of the importance of showing appreciation for our people. Don’t take them for granted. Leaders need to show each team member respect for their contribution. The example leaders set is the most important thing they do. For instance, if they let a high performer get away with treating teammates horribly they have set an example. Make sure your actions impart respect for the team and organization.
Optimize the Whole
Reading The Goal by Eli Goldratt teaches us not to optimize for parts but the whole system. This is an important lesson we need to learn and be reminded again and again. Managers can obsess about people being busy. I have never met a manager who was incentivized to keep people busy.
Pros and Cons
Let’s quickly review some pros and cons of Lean Development. First, we can start with the pros.
Reduce time wasters
Everyone wastes time. As a big fan of Michael Hyatt I am amazed how he can really see new ways to be more effective. He seems to share productivity tips constantly. Thinking Lean we can always review our processes and find more efficient ways to do things. What are you doing now that you could stop?
When lean thinking reduces waste it saves money. By completing the right work we can provide value. Forget the ten different things to work on have your team focus and save money not working on the features no one really cares about.
Need a good team
The first con is that it requires a good team. I wish that all teams were good but, we know that is not the case. I am sure you like me have been on a good team and a few bad teams. When a team really works well together they can do amazing things. Sad to say that doesn’t happen too often. Lean works best with a good team. Lean principles can’t save a bad team. Of course, there isn’t much that can.
It never says in the agile manifesto that we should never document anything. If it helps we should do it. Lean principles require a team to document some things so they can repeatedly achieve their goals. Overall Lean principles can be helpful but you need to understand these cons too.
Originally posted MyITCareerCoach.com