Implications, defining what has to be true for your goal to succeed, are the hardest step.
Step 4, The Blockers, are relatively easy.
What’s Stopping You?
What is stopping you and your team from making your implications true?
I’m not working on it, and there aren’t enough hours in the day, aren’t valid answers.
The Implications are too big, too complex and too scary to tackle head on. If they weren’t, you wouldn’t be stuck.
Defining the blockers is about naming the steps you can’t take; the chasims you can’t cross.
Continuing with the Async Processing Example
Why can’t I make the API asynchronous?
Three big reasons:
- I don’t have a system to queue the requests.
- I don’t have a system to process the requests off of a queue.
- I don’t have a way to make the processing visible to the client.
The reasons create a giant requirement loop. I can’t build a job system until I have a queue to read off of, and I can’t queue the work until I can process it. I also need endpoints and UI to keep the customer informed of how the processing is going, if anything got rejected, and a way to remediate failures.
That’s a lot of work!
Even dropping customer observability, adding queueing and processing is a big step.
Big steps are scary, and not iterative.
Before going on to the next step, pick your 2-3 most important Implications, and write down 3 Blockers for each.
I recommend you don’t write down more than 9 Blockers before moving on to Step 5 – Weakening The Blockers