Of course, this is easier said than done. Sometimes, you do not have control over what needs to be done. In these situations, you can use the principles to help those in control to see what is going on and encourage them to change their actions. Additionally, and perhaps more importantly, recognizing the principles being violated helps you see what you can do within your own sphere of influence. You are equipped to see in new ways: how often we are aware of ineffective behavior but justify it by saying, "Well, this is just the way things are; we do not want to be satisfied with the status quo!"
Why Focus on Lean Anti-Patterns?
Now, given that you are trying to do Agile development, why should you focus on Lean anti-patterns? People who study both Lean and Agile soon realize that Lean provides a set of principles that assist in the adoption of Agile practices. Violating Lean principles guarantees that you will have bad Agile practices.
Simply tweaking a process as a quick response to fix some sort of bad practice may never fix the true problems. That approach rarely addresses the underlying root causes. That is why Step 2, above, is so important. Start by looking at the impediment, the practice or whatever is getting in the way. Then, use anti-patterns to help consider the principles being violated and thus to identify root causes, and then address the root cause. That will lead to fixing bad practice. Toyota calls this having a "stop-the-line" mentality. When there is a problem, stop the production line, identify root causes, fix it, and then go on. That is how you drive out impediments from your process for the long term.
Three Common Lean Anti-Patterns
My colleague Jim Trott and I have identified 29 anti-patterns in the areas of enterprise organization, project management, requirements and analysis, design and code, and quality assurance. These are a start, and we are sure there are more. As examples, let me describe three that are all related to delay:
- Individuals thrash on their tasks
- Tests are defined too late
- Optimizing QA
Individuals Thrash on Their Tasks
Almost everyone in a modern organization has experienced thrashing on tasks: there are so many things to do that you end up going from one task to another before finishing the first task. This is called "task-switching". Each time you switch tasks, you have to stop what you were doing and then take time to start focusing on the next task. When you come back to the first task, you have to take time to remember where you were before you can start up again. The term "thrashing" comes from when computers had so many processes, the overhead of switching between tasks took more time than the work itself. That is just what happens to us.