Vicious Iterations – Part 2

In a previous post I wrote about the problem with teams that iterate without a real vision. Without a carefully premeditated direction iterations assure that everybody is busy — but they create a dangerous sense of confidence because we feel fast and nimble. A fly is fast and nimble too.

The problem with problem solvers.

A common way teams spend iteration fuel needlessly is by focusing too hard on the constraints at hand. It is quite natural, especially among the developer/technical roles, to see the glass half-empty. After all, these people are fantastic problem solvers: Ergo, they look for problems.

The issue is that focusing on attacking the backlog as the set of ‘issues at hand’ does not guarantee progress towards the enduring change we want to see in the customer, product or the world we influence at large.

Problem ahead! Charge!

Overlook the constraints, for now.

To identify the set of possible valuable paths it is useful to overlook — temporarily — the forest of constraints in front of us.

Why? Because it is too tempting to focus on constraints first; it is simple to identify that the next step is to solve ‘this’ problem. Of course, later we will discover that after ‘this’ problem there is ‘another’ problem, ad infinitum. If the emphasis is on problem-solving, seeking progress can turn into a ‘Whac-A-Mole’ game. (
The next time you or your team are plotting how to move forward, regardless of the size of the choice, try the following:

#1 Document all the constraints/problems.

Brainstorm all the things currently blocking or annoying the team:

  • The current design of the database tables is all wrong.
  • Our current UI implementation does not support multi-lingual capabilities.
  • The customer said they will not accept a manual install.

    … you get the idea

#2 Put the constraints away.

Do not worry, they will be safe. Take a picture of the whiteboard or write them down quickly on a document. Put this information away; you can call it “Pandora’s box”.

#3 See the possibilities

With constraints absent and with your product, customer and company ambitions in mind: Do you have-line-of-sight to new possibilities? Get excited. Pick.

  • Wow, we could hot-swap application servers.
  • Each customer could define its own language strings specific to their business.
  • Every implementation instance could have a custom upgrade path.
Constrains removed
I can see clearly now.

#4 Put the constraints back.

It is time to let reality to be reality. With a few valuable long-term possibilities identified, now we can put the forest back in place.
The paths to the chosen long-term states will not be straight, but it should be clear what are the remaining necessary detours and what constraints are worth blasting through to get to those long-term desired states.

#5 Now, iterate towards your choice of targets.

Directed Iterations
Directed Iterations

Maybe this sounds too simple. I guess it is. But focusing too hard on the constraints blocking you is a sure way to overspend iteration fuel. Avoid this by splitting the planning process in two: desires first, blockers second.

Allow yourself a good glimpse at the treasures that rest beyond the hills first. Only then set the compass and start walking.