We thought we were planning.
We had user stories. We had architecture diagrams. We had acceptance criteria and sprint planning sessions that stretched for hours.
But hereâs what actually happened when we started building:
âWait, what happens if the user does X before Y?â
âI assumed we were storing this data here, but youâre saying itâs over there?â
âDo we validate this on the frontend or backend?â
âWho owns this piece of data when the order is in this state?â
We werenât planning. We were guessing with documentation.
And the execution? It was constant firefighting. Mid-sprint pivots. âQuick clarificationâ meetings that derailed entire afternoons. Bugs that revealed weâd built the wrong thing because three people had three different mental models of how it should work.
I remember one project - a Case Management System. Weâd âplannedâ it. Two weeks of user stories, diagram sessions, the works.
Three sprints in, we were still arguing about fundamental questions: What constitutes a âcaseâ? When does state transition happen? Who can see what when?
We were executing without a real plan. And it was exhausting. And weâd constantly get distracted with all the stuff we didnât plan.
What Real Planning Looks Like
I love to build real, tangible things on the weekend. With my hands, using Wood, Stone, Concrete, Nails and Screws.
Just recently, I spent a weekend building a fence for my house. I did that myself and I never did that before.
I spent hours planning that fence. My wife was constantly asking why I wouldnât start? I was focused on Measuring. Sketching. Making lists of materials - stones, concrete, wood, tools. Figuring out each step in sequence.
Then I went to the hardware store and bought everything.
And the execution? It never failed.
I knew exactly what to do next. No surprises. No âoh shit, I needed that other tool.â No backtracking. Just: step one, step two, step three, done.
I stood back and looked at that fence with pure satisfaction. Not because the execution was hard - it wasnât. Because the planning had been thorough.
Just a few years ago, it was unimaginable to have this feeling at work. Building software doesnât work like that, right? Itâs âsoftâ, you canât grasp it fully. Bullshit.
The problem with most software planning isnât that we donât plan enough time.
Itâs that our planning just sucks. We leave questions unanswered.
âWeâll figure that out during implementation.â
âThatâs an implementation detail.â
âLetâs get started and see what comes up.â
Thatâs not planning. Thatâs hoping.
Real planning means all questions are cleared and you only need to execute.
When I run Event Modeling workshops now, I watch teams have the same realization I did. Weâll be modeling a system - letâs say a checkout flow - and someone will put up a command: âSubmit Order.â
Simple, right?
Then the questions start:
- âWhat if payment fails?â
- âWhat if inventory isnât available anymore?â
- âDo we validate the cart one more time or trust the frontend?â
- âWho gets notified when this happens?â
- âWait - can you submit an order with zero items?â
These arenât âimplementation details.â These are the actual requirements.
And you canât avoid these questions - youâll get stuck modeling until you figure that out.
And in traditional planning? They get hand-waved away. Put in a parking lot. Marked as âTBD.â.
In Event Modeling? We donât move forward until we answer them. Right there. On the board. With the whole team contributing.
Because if we canât answer these questions during planning, weâre going to hit them during execution - when itâs 10x more expensive.
I spend 80% of my time planning. Execution - writing Code - itâs just a side effect of planning.
And my execution is fast, focused, and nearly bulletproof.
Hereâs what a typical project looks like now:
Planning Phase (80% of time):
- Event Model the entire system with stakeholders in the room
- Answer every single question that comes up
- Model until someone says âI think weâre doneâ and someone else says âwait, what aboutâŚâ and we realize weâre not
- Keep going until there are no more âwait, what aboutâŚâ moments
- Take a screenshot
This does not mean you model for months and then start. Quite the opposite - You can model one slice, a handful of slices - and then execute on them. Rinse repeat. Typically weâd model a âchapterâ - which is a group of slices forming a workflow. In the agile World, whatâs closest might be the Epic.
This is how I execute:
- Put on brain.fm (just works for me)
- Go slice by slice with extreme focus
- I know exactly what I have to do all the time
- No guesswork. Nothing.
- When one slice is done, move to the next
Yesterday I rebuilt part of the earlier mentioned Case Management system. Yes, itâs slice based now. The way we manage cases has changed. One slice needed a completely different table schema.
Because I had the Event Model - the real plan - I knew exactly what to do:
- Delete the slice
- Regenerate with new schema
- Replay events
- Switch over
Done in less than an hour.
No surprises. No âoh wait, this affectsâŚâ moments. No emergency Slack threads.
Because all the questions had been answered during planning.
If your execution keeps hitting unexpected problems, itâs not an execution problem.
Itâs a planning problem.
You left questions unanswered. You left room for interpretation. You documented assumptions instead of decisions.
Most teams think theyâre planning when they write user stories or draw architecture diagrams. But thatâs not real planning - youâre leaving question marks everywhere.
Real planning looks like this:
Before Event Modeling:
âUser submits orderâ (one line in a user story)
Sounds clear, right?
After Event Modeling:
- Order Submitted (event) - happens when?
- After: Payment Authorized (event)
- After: Inventory Reserved (event)
- After: Email Sent (event)
- But what if payment fails? â Order Rejected (event)
- What if inventory isnât available? â Order Pending (event) + Inventory Team Notified (event)
- Can you submit with zero items? No â Validation Error (event)
- Who can see the order in each state? â Read model defined with explicit permissions
See the difference? Every question answered. No TBDs. No âweâll figure it out later.â
Thatâs planning. And when you plan like this, execution becomes almost mechanical.
Plan Like Youâre Building a Fence
As a Team:
- Spend serious time planning - Donât rush this. It feels slow, but itâs not. It speeds up things like youâve never seen it before.
- Make sure you have everything you need - Answer every question. Buy every tool. No âIâll improvise.â
- Execute step by step - Now itâs just following the plan. Focus on one thing at a time.
- Execution never fails - Because the hard work happened in planning.
Event Modeling is the software equivalent.
We spend hours - sometimes days - modeling with the team. It feels slow to people used to âmove fast and break things.â
People love âemergent designâ, âno design upfrontâ and âbeing agileâ, it feels like freedom - the result though is just constant distractions and interruptions. You need to figure out things as you go. Like going to the hardware store and buying random things I like.. doomed to fail.
Execution after proper planning? Lightning fast. Focused. No context-switching. No surprises.
I take a screenshot of the Event Model before I start. A few hours later, I look back. Slices completed. Features shipped. Nothing broken.
That craftsman feeling of looking at what youâve built - not what youâve scrambled to fix.
I love that! Thatâs what proper planning gives you.
The Bottom Line
Most software fails during execution because it was never really planned.
You canât execute your way out of an unclear plan.
But when you plan properly - when all questions are cleared, when every team member has the same mental model, when the Event Model shows exactly what happens and in what order - execution becomes the easy part.
I spend 80% of my time planning.
And I always know exactly what to do next.
My Book Understanding Eventsourcing describes this process. And the companion course Implementing Eventsourcing gives you a head start. Want your Team to feel the focus? Letâs talk - Iâm specialized in training teams on exactly that.
Join the Agentic Engineer Program
Apply Spec-Driven Development Hands-On - Event Modeling, Event Sourcing, and AI Engineering with autonomous agents.
