Optimizations - what do you think when you hear this word? Something is getting better and more effective and genuinely helps to extract more value from what people do. But what happens when we focus more on optimization than the initial cause?
Think about your day-to-day activities:
But do they help? Do we even remember the original idea behind the majority of these items? Who proposed them? Who tracks how they are being lived? What happens if we just remove the majority of them? All these questions are fundamental to living by Lean and Agile values, reducing waste, and caring about what matters.
Let’s take a look at two common examples of what we think are known to the majority of people.
The Jira workflow is the mightiest tool. Leadership loves it as it provides an overview of what’s going on, and engineers hate it because it is rarely user-friendly.
In the diagram above, you can see a typical workflow for the Jira issue. It contains of:
All this was created to make someone’s life easier. But does it?
As a new joiner navigating through this workflow, you are most likely to get one or more comments from the list:
It doesn’t look like it helps anyone. Would it make sense to review the workflow again?
The workflow and obsolete items on it are perfect examples of local optimizations. They were created for good and probably made sense at that point, but as an organization and its people evolved, some elements became useless and even dangerous. That’s a rabbit hole now.
According to the Scrum guide, It is a formal description of the state of the Increment when it meets the quality measures required for the product. Once the Definition of Done is met, the Increment is Done and can be delivered.
Clear and easy to define and use, isn’t it? But how do we actually use it?
It all starts from a few items, let’s say:
When one of the iterations is released, users start getting error 403:
The team quickly reverts the release, does a postmortem, and realizes that they have forgotten to drop sessions that are not valid anymore, so they add the item to the Definition of Done, and now, it consists of:
They release it again, and now there is an error 404:
The team quickly reverts the release, does a postmortem, and realizes that database migrations were not applied, so they add the item to the Definition of Done, and now it consists of:
The release, and guess what? Error 500:
The team quickly reverts the release, does a postmortem, and realizes that …. You have got my point. This list is going to be expanded forever until someone decides it is a mess and proposes to recreate it. That’s a rabbit hole now.
Don’t get me wrong, local optimizations are helpful. They are extremely helpful on short distances and can help to:
But they can also, and most likely will, distract from what matters at a long distance, especially if left unattended.
They are a necessity. Each team will try to ease their lives by introducing a checklist, framework, or regulation. It is important to remember that while they can help, they are guaranteed to harm in the long run if they are left unattended.
Try to think about optimizations that you have introduced to your team and review them. Try to minimize those that focus on a narrow set of actions, but instead, try to influence behavior. While evaluating those that already exist or when you try to create new think about:
If you had to introduce them, it's not a problem. Just make sure to plan a check-in in the future and put it on your calendar. During the check-in, revise:
It is hard to get out of the rabbit hole, but remember that everything is possible in the world where magic exists!