Assumption is the mother of all fuck-ups

The comforting danger of “we assumed…”
You’ve heard the saying: assumption is the mother of all fuck-ups. It’s crude, yes, but also painfully accurate. Trust me, been there.
- “We assumed each customer would have one account”
- “We assumed the Excel template wouldn’t change”
- “We assumed we would only need one language”
These statements don’t come from bad developers. They come from teams under pressure, moving fast, or trying to make progress without full information. It feels efficient to move forward based on a shared understanding, or at least a silent one. But that’s the trap:
Assumptions feel like alignment. They’re not. They’re just unspoken bets.
How assumptions show up in software
Assumptions are easy to spot in hindsight. They’re harder to catch in the moment because they’re embedded in our tools, our conversations, and our diagrams. You’ll find them:
- in requirements that gloss over edge cases
- in data models designed for the “happy path”
- in architecture diagrams that skip error handling
- in user stories with no alternate flows
- in test plans that only test what we expect to happen
They hide behind “default settings”, “temporary workarounds”, and “this should be fine.”
Real-world fallout
Some examples I’ve seen in real projects:
- A warehouse app that assumed every product would have a barcode. Then a shipment arrived from a new supplier—with no barcodes. The team had to manually override 300 entries.
- A SharePoint site that assumed everyone would use the default language. Then came a merger with a French team, and suddenly no one could find the documents they needed.
- A Power Platform solution that assumed the requester of a task would always be the one to approve it. It worked beautifully—until vacation season hit and tasks piled up with no fallback path.
None of these were technical failures. They were assumption failures.
We assume to move faster. It helps us act when things are uncertain, unclear, or politically tricky. Some assumptions are born out of survival—others out of status, fear, or comfort. And the ones we never say out loud? Those are the most dangerous. They’re not just technical; they’re cultural, emotional, or territorial. That’s why in complex orgs, the riskiest assumptions are often the ones no one is allowed to question.
The most dangerous kinds of assumptions
Let’s call them out. Here are some of the worst offenders:
Assumption Type | Example | What really happened |
---|---|---|
User behavior | “Users will always finish the form in one go.” | They got a Teams call halfway through and closed the tab |
Data shape | “Every entry will have a unique ID.” | Except for the ones copied from a legacy system, those were all blank |
Organizational clarity | “Everyone understands what ‘urgent’ means.” | Turns out, it means “maybe next week” to one team and “drop everything now” to another |
Tool stability | “That Excel template won’t change structure.” | Someone added three columns and changed the headers. Quietly. On a Friday |
Language/culture | “Date formats? Everyone uses dd/mm/yyyy, right?” | Until the US team joined and booked a meeting for the wrong day. Twice |
Connectivity | “The app will always have network access.” | Except in the warehouse. Or on the train. Or when VPN dies |
Ownership | “That’s the API team’s problem, not ours.” | The API team said the same about you. Nothing got fixed |
These feel safe, until one breaks, and it’s your team scrambling at 2 a.m.
How to catch them before they catch you
Assumptions aren’t inherently bad. You need them to move forward. But they should be explicit, testable, and ideally temporary. Here are a few ways to surface them early:
- Say them out loud. Literally start a meeting with: “Let’s list our assumptions.”
- Challenge default values. “Why is that the default? What if it’s wrong?”
- Use assumption mapping. A whiteboard or Miro board with three columns:
- What we think is true
- What we’ve confirmed
- What we need to find out
- Add assumptions to your backlog. Track them like risks or tech debt.
- Involve people outside your bubble. Someone from sales, support, or compliance will spot gaps you missed.
And a favorite: ask the team, “What would really surprise us later?” The answers usually surface the biggest hidden assumptions.
Spotting assumptions is the first step. But what do we do with them? That’s where validation comes in.
How to validate assumptions without killing momentum
It’s one thing to spot an assumption; it’s another to do something useful with it. The goal isn’t to eliminate all risk, but to expose the shaky ground before it becomes a crater. Here’s how we turn assumptions into validated decisions inside an agile setup:
1. Prototype early, and for the right reasons
Use quick spikes or throwaway prototypes specifically to test assumptions. Not to build a solution, but to answer a question:
- Will this work with our existing system?
- Does the user actually understand this flow?
- Can we really get that data from that source?
2. Make assumptions visible in your backlog
Log them like you would bugs or tech debt. Use tags like @assumption
, or write stories like:
As a team, we need to confirm that customers can link multiple accounts to their profile.
This keeps the risk visible and gives you a chance to prioritize actual validation work.
3. Include assumption checks in definition of ready
Before a story goes into a sprint, ask:
- What are we assuming here?
- Can we test or demo this assumption?
- What would we do if it’s wrong?
This prevents hidden dependencies from sneaking into sprint commitments.
4. Demo failures, not just successes
In sprint reviews, don’t just show what worked. Show what you tested and ruled out. It builds trust and makes it safe to admit uncertainty early.
Closing thought
Software fails quietly when we act on things we hope are true. It fails loudly when we act on things we assume are true. The fix isn’t endless documentation or 500-question checklists. It’s building a habit of naming our guesses and replacing them with knowledge when it counts.
Make it safe to ask “what are we assuming here?” in every room. It’s not a sign of indecision; it’s a sign you want this thing to actually work.
Published on:
Learn more