There’s a famous psychological experiment — the “Invisible Gorilla” — where participants watch a video and count how many times players in white jerseys pass a basketball. They get so focused on the count that they completely miss a person in a full gorilla suit walking across the court, thumping its chest, and continuing on. The data was right there, but the task blinded them to the bigger picture.
I think of this experiment because it mirrors something I see in almost every system I work with. We’re so obsessed with “counting the passes” — the current inventory level, the latest account balance, the status of an order — that we miss the gorilla walking through our data. We focus on the final state and lose the narrative. By the time someone asks why a number changed, the video has been erased. All we have left is a final score and no game film.
When we prioritize the final state over the events that created it, we aren’t just saving storage. We’re actively deleting the business intelligence we need to understand our own trajectory.

The “Final Score” Fallacy
Most traditional software relies on CRUD — Create, Read, Update, Delete. When data changes, the old information is simply overwritten. If you have 100 items in stock and sell 10, the database updates to 90. The “100” is gone forever.
I think of this as the “Final Score” fallacy. It’s like trying to coach a basketball team using only the final score of 21–14, without ever seeing how the points were scored. You can’t improve what you can’t observe.
This is a paradigm shift from traditional CRUD and Object-Oriented Programming.
Stop storing the score. Start recording the game. If you save the events, you own the entire game.

The “Fake-Lot” Illusion: When Tech Constraints Obscure Reality
In traditional relational databases, we often resort to “digital duct tape” to force reality into rigid tables. A prime example is the “Fake-Lot.”
Many systems require every sale to be linked to a specific physical “lot.” But what if you sell 10 cases of potatoes before they’ve even arrived at the warehouse? The real-world state is clear: those items are unallocated. But the database can’t represent that.
So developers create a “Fake-Lot” — a placeholder record that exists only in the system, not in the warehouse. And now you’ve introduced a gap between the software and the business. The system says one thing; the warehouse says another. This creates what I’d call “training debt.” Businesses spend hours teaching employees and clients to mentally work around this misrepresented data, because the system can’t handle the nuance of something being not yet allocated.
Event Sourcing respects business reality. It allows an unallocated state to exist as a legitimate event until the physical lot arrives. No placeholder. No workaround. Just the truth of what actually happened.
When we embrace this approach, we can use the Ubiquitous Language of the business — a core tenet of Domain-Driven Design — rather than forcing employees to translate technical artifacts like Fake-Lots into something that makes sense in the real world.
Projections: Custom-Made Glasses for Your Data
If you record every event, the raw data can look like a chaotic stream. That’s where Projections come in.
I like to think of Projections as “custom-made glasses.” Different departments look at the same stream of events through their own tailored lenses — almost like a form of digital cubism. Just as a cubist painting shows an object from multiple perspectives simultaneously, Projections let different teams see what matters to them.
-
Warehouse sees logistics — bins, aisles, and pallets.
-
Sales sees relationships, deal sizes, and commissions.
-
Accounting sees payment statuses, invoices, and aging reports.
The underlying reality is the same. The interpretation is what changes.
The data hasn’t changed. It’s the way we interpret the data that has changed.
And here’s what makes this powerful: each business unit can evolve its own “view” of the truth without ever risking the integrity of the master immutable record. That kind of decoupling is rare and valuable.

Intent Is the Real Treasure
There’s a fundamental difference between Data and Knowledge. A database telling you that you have 90 potatoes instead of 100 is just data. But an event titled “10 potatoes damaged by a forklift” — that’s knowledge.
I’ve been thinking about this in terms of what I call the Banana Abstraction. A “Banana” as an item is an unmanageable 10-year stream of data. But a “Lot” is a short-lived, physical reality where things actually happen — damage, decay, or sales. The lot is where intent lives.
Capturing intent becomes even more critical as we integrate AI into our systems. If a chemical formula is modified, we need to know whether it was changed by a human scientist responding to a client request or by an AI agent optimizing for cost. That “Audit of Intent” is the only way to truly manage automated systems alongside human decision-making.
In the age of AI, simply knowing that a change occurred isn’t enough. We have to capture the why to ensure that our algorithms align with our human business goals.
The “Oops” Factor: Replaying the Tape
In the real world, you can’t delete the past. If an accountant makes a mistake in a physical ledger, they don’t reach for an eraser — they issue a corrective entry. Event Sourcing brings that same integrity to digital data through an immutable history.
This gives you what I think of as a “Time Travel” superpower. Say you discover a bug in a cost calculation formula that’s been running for three years. You don’t have to panic. You can “replay the tape” — apply the corrected logic to the original stream of events, recalculate the history, and arrive at the true current state. And you still preserve the record of what you previously believed to be true.
The ability to retroactively correct the past without erasing it is a safety net. A single logic error doesn’t have to become a permanent stain on your data’s integrity.

Are You Watching the Video?
Event Sourcing isn’t a silver bullet. For simple applications where history provides zero business value, it may be overkill. But for any organization navigating complex, evolving narratives — whether in logistics, finance, or AI-driven manufacturing — it’s a necessity.
We have to stop being satisfied with just knowing the final score. We need to start watching the video of our business as it unfolds.
If you stop looking at your data as lifeless numbers and start seeing it as a living story — what is it waiting to tell you?





Leave a Reply