Introduction
Technical blockers and dependencies are inevitable in complex projects, but how you communicate about them can either create panic or confidence. The ability to explain why something is blocked, what the dependency chain looks like, and how you're managing it—in clear, accessible language—is essential for maintaining client trust during challenging moments.
Why This Skill Matters
When Blockers Become Mysteries
When blockers and dependencies are poorly explained:
- "It's blocked" feels like an excuse or lack of initiative
- Clients don't understand why something they see as simple is taking time
- Dependencies feel like technical mumbo-jumbo hiding poor planning
- Anxiety builds because clients can't evaluate the situation themselves
- You appear to lack control or understanding of your own project
When blockers and dependencies are demystified:
- Clients understand the "why" and can evaluate reasonableness
- Frustration decreases because the situation makes sense
- Confidence maintains because you clearly understand the system and constraints
- Collaboration improves as clients may help remove blockers
- Shared problem-solving emerges instead of blame or suspicion
- Your expertise shines through clear explanation of complexity
For technical professionals, being able to explain "why this is harder than it looks" without sounding defensive is crucial for maintaining productive client relationships during inevitable roadblocks.
Core Principles
1. Explain the "Why," Not Just the "What"
- "We're blocked" → WHY are we blocked?
- "This depends on that" → WHY does this dependency exist?
- "This is complex" → WHAT makes it complex?
Understanding breeds patience and trust.
2. Make the Invisible Visible
Technical dependencies are often invisible to clients:
- Use analogies and visuals to show relationships
- Explain the chain: If X can't happen until Y, and Y can't happen until Z...
- Show what would happen if you skipped proper sequencing
3. Distinguish Blocker Types
Different blockers require different communication:
- External blockers: Waiting on third parties, client input, etc.
- Technical blockers: Technical prerequisites that must be completed first
- Resource blockers: Team capacity or expertise limitations
- Discovery blockers: Need more information before proceeding
Each type has different mitigation strategies and timelines.
4. Always Pair Problem with Plan
Never present a blocker without:
- What you're doing about it
- When you expect resolution
- How it affects timeline/scope
- Alternative paths if applicable
Good Examples
Example 1: Explaining a Technical Dependency
Client asks: "Why can't you work on the reports module while the API is being built? Can't you do both at the same time?"
Good Explanation: "Great question—let me explain the dependency. The reports module displays data that it pulls from the API. Think of it like building a house: we can't install the plumbing fixtures (reports) until the pipes (API) are run. If we built the reports first, we'd have to rebuild them once we know what data structure the API provides.
What we CAN do simultaneously is design the reports UI while the API is being built, so we're ready to connect them immediately. That's actually what we're doing now—the design work doesn't wait, just the implementation that connects to the API.
Does that make sense why the sequence matters?"
Why It Works
Uses clear analogy, explains the logical dependency, shows what CAN be done in parallel, demonstrates strategic thinking.
Example 2: Communicating an External Blocker
Status update including a blocker:
"Blocker Update: Payment Integration
We're currently blocked waiting for [Third-Party Service] to activate our production API credentials. Here's the situation:
What's blocked: Final payment integration testing and deployment
Why we're blocked: Their activation process requires manual review, which their team does twice weekly (Tuesdays and Fridays)
What we've done:
- Submitted all required documentation last Friday
- Followed up twice to confirm receipt
- Escalated through our account manager yesterday
Expected resolution: Credentials should be approved in their Friday review (October 4)
Timeline impact: If approved Friday, no impact to October 15 launch. If delayed another week, we'd need to push launch to October 18.
What we're doing while blocked:
- Completing other features ahead of schedule
- Preparing deployment scripts so we can move fast once unblocked
- Testing payment flow in sandbox environment
Alternative plan: If this drags past Friday, we can launch with manual payment processing and add automated processing in a quick update the following week.
Bottom line: This is frustrating, but manageable. We're staying productive and have contingency plans."
Why It Works
Clear explanation of external blocker, shows proactive efforts to resolve, quantifies timeline impact, demonstrates productive use of blocked time, offers alternative if needed.
Example 3: Explaining Technical Complexity
Client says: "Adding a user profile picture should be simple, right? Can we just add that quickly?"
Good Response: "I understand why it seems straightforward—and the core feature is! But let me walk through what's involved so you can see why it takes some time:
- Upload and storage: Need to securely store images somewhere (we'll use [service])
- Image processing: Need to resize/optimize images so they load fast and don't break the UI
- Security: Need to validate files are actually images (prevent malicious uploads)
- Privacy: Need permissions system (who can see whose photo?)
- Performance: Need to handle caching so images don't slow down the app
- Edge cases: What happens if image fails to load? Default image needed?
- Mobile vs. desktop: Need to serve different sizes for different screens
Each piece is ~2-4 hours of work, plus testing. Altogether, this is about 1.5-2 days.
We CAN add it—I want to make sure you know it's not a 30-minute task so you can prioritize accordingly. Still want to include it in this sprint?"
Why It Works
Validates their intuition (seems simple), breaks down the actual work involved, quantifies time realistically, empowers them to make informed decision.
Example 4: Visual Dependency Explanation
Client is confused about why features are taking so long:
Good Approach: [Sketch or share simple diagram]
```
Phase 1: Foundation (Weeks 1-3)
├── Database setup
├── Authentication system
└── API framework
Phase 2: Core Features (Weeks 4-6)
├── User profiles (needs: Authentication ✓)
├── Messaging system (needs: User profiles)
└── Notifications (needs: Messaging system)
Phase 3: Advanced Features (Weeks 7-8)
└── Analytics (needs: All of Phase 2)
```
"This shows why we can't jump straight to analytics—it needs data from messaging, which needs user profiles, which needs authentication. It's like building floors of a building: you can't build the 3rd floor until the 2nd is solid.
The good news is once the foundation is done (Phase 1), multiple things can happen in parallel. We're deliberately front-loading the sequential work."
Why It Works
Visual makes dependencies concrete and understandable, shows the logic clearly, frames current work as strategic foundation, creates realistic expectations.
Example 5: Resource Blocker Communication
Situation: Need specialist expertise you don't have.
Good Communication: "I want to flag something early: The payment integration includes PCI compliance requirements that are outside my core expertise. I can implement the integration, but I want us to have a security specialist review it before we launch—this is too important to risk getting wrong.
Options:
- I can bring in a specialist I've worked with for a half-day review (~$800, adds 3 days to timeline for scheduling)
- We can launch without credit card storage (less convenient for users, but avoids PCI scope)
- We can use a fully managed payment solution that handles compliance for us (monthly cost, but faster and lower risk)
My recommendation: Option 3—it's faster, safer, and probably cheaper long-term.
I wanted to surface this now so we can decide thoughtfully rather than discovering this issue later."
Why It Works
Honest about expertise limits, surfaces early, provides options with trade-offs, makes recommendation, shows strategic thinking about risk.
Bad Examples
Example 1: The Vague Excuse
Client asks about delay:
Bad Response: "It's just really complicated. There are a lot of dependencies. These things take time."
Why It's Bad
No actual explanation, sounds like an excuse, doesn't demonstrate understanding, creates suspicion rather than clarity.
Example 2: The Jargon Wall
Client asks why something is blocked:
Bad Response: "We're blocked because the polymorphic association refactoring for the STI pattern conflicts with the eager loading strategy in the ORM, and until we resolve the N+1 query optimization in the API layer, we can't properly implement the caching strategy required for the websocket pub/sub architecture..."
Why It's Bad
Incomprehensible wall of jargon, actively excludes client from understanding, sounds like either showing off or hiding behind complexity.
Example 3: The Blame Shift
Blocker communication:
Bad Response: "We're blocked because you didn't get us the information we needed. We asked for this weeks ago. We can't do anything until you respond. This is on your team."
Why It's Bad
Hostile and defensive, damages relationship, doesn't acknowledge your role in managing the blocker, no constructive path forward.
Example 4: The Surprise Blocker
Three weeks into a four-week sprint:
Bad Response: "Oh, by the way, we can't actually finish this feature because we're blocked on [thing]. Just wanted to let you know."
Why It's Bad
Should have been surfaced immediately when blocker was discovered, leaves no time for mitigation, appears to lack project awareness or communication discipline.
Example 5: The Helpless Presentation
Blocker update:
Bad Response: "We're blocked waiting for the API vendor. Not sure when they'll respond. I guess we just wait? 🤷"
Why It's Bad
No plan, no follow-up actions, sounds passive and helpless, doesn't inspire confidence, hasn't explored alternatives or escalation.
Tips for Developing This Skill
1. Build a Blocker Communication Framework
When communicating any blocker:
- What's blocked: Specific feature or task
- Why it's blocked: Clear explanation of dependency or issue
- What we've done: Actions taken to resolve
- Expected resolution: When you expect unblock
- Timeline impact: Effect on schedule
- What we're doing meanwhile: Productive use of time
- Alternative plans: If blocker persists
Make this your standard template.
2. Develop Analogies for Common Dependencies
Create go-to explanations:
- Sequential dependencies: Building floors, cooking steps, assembly line
- Technical dependencies: Plumbing before fixtures, foundation before walls
- External dependencies: Waiting for permits, customs clearance, vendor delivery
3. Use Visual Dependency Mapping
For complex projects:
- Create simple dependency diagrams
- Show critical path
- Highlight blockers visually
- Update and share regularly
Tools: Simple flowcharts, Gantt charts, or just boxes and arrows.
4. Surface Blockers Early and Often
- Don't wait for blockers to become critical
- "Heads up: we might be blocked by X next week if Y doesn't happen"
- Flag potential blockers before they're actual blockers
- Create space for collaborative problem-solving
5. Demonstrate Agency
Even with blockers:
- Show what you're doing to resolve
- Explain workarounds or alternatives
- Maintain forward progress where possible
- Keep pressure on external dependencies
Blockers happen; passivity is a choice.
6. Quantify Impact
Replace vague impacts with specific ones:
- "This will delay us" → "This adds 3 days to the timeline"
- "This is a problem" → "This affects the reporting module, but not the launch"
- "We're stuck" → "We can't proceed with X, but Y and Z continue"
Specificity enables decision-making.
7. Educate About Technical Constraints
Help clients understand common patterns:
- "You can't test without something to test"
- "You can't build UI without knowing what data you'll have"
- "Security review must happen before public launch"
Over time, they'll internalize these and ask fewer "why can't you just..." questions.
8. Own Your Part
When the blocker is partially on you:
- Acknowledge it clearly
- Explain what you're doing about it
- Don't make excuses
"This is taking longer than I estimated because I underestimated the complexity of [X]. Here's my revised timeline..."
Connection to Other Skills
Demystifying blockers and dependencies connects with:
- Explaining Complex Concepts: Blockers are often complex
- Proactive Communication: Surface blockers early before they're critical
- Delivering Bad News: Blockers are often unwelcome news
- Setting vs Managing Expectations: Blockers affect expectations
- Creating Digestible Status Updates: Blockers should be regular update content
- Knowing When to Dive Into Details: Calibrate technical depth about blockers
- The Power of Analogies and Visual Aids: Essential tools for explaining dependencies
- Instilling Confidence: How you handle blockers builds or destroys confidence
- The Reassuring "I Don't Know": Sometimes blockers reveal unknowns
- Managing Your Own Emotions: Stay calm and constructive about blockers
This skill is critical for maintaining trust during challenging project moments.
Action Items
Immediate Practice
- List current project blockers—for each, write a client-friendly explanation using the framework above
- Create a simple visual dependency map for your current project
- Next time you surface a blocker, pair it with your plan to resolve it
Ongoing Development
- Build a library of analogies for common types of dependencies in your work
- After resolving blockers, document them as learning for future projects
- Ask clients: "Did my explanation of that blocker make sense?"
- Review past projects: Which blockers could have been surfaced earlier?
Build Your Communication System
- Create blocker templates:
- Standard blocker notification format
- Dependency explanation format
- Visual dependency map template
- Develop analogy library for:
- Sequential dependencies
- Technical prerequisites
- External dependencies
- Resource constraints
- Build proactive blocker management:
- Regular risk review: "What could block us next?"
- Early warning system: "This could become a blocker if..."
- Dependency tracker: Map all major dependencies at project start
Self-Reflection Questions
- Do I surface blockers immediately, or hope they'll resolve themselves?
- When I explain blockers, do clients seem satisfied with the explanation?
- Do I explain the "why" behind dependencies, or just state that they exist?
- Do I demonstrate agency when blocked, or sound helpless?
- Am I defensive about blockers, or matter-of-fact and constructive?
- Do I use visuals to make dependencies clear?
- Have I built clients' technical literacy about common dependencies?
---
Remember: Blockers and dependencies are normal in complex work—how you communicate about them is what matters. Clients can handle hearing about constraints and challenges; what they can't handle is feeling like they don't understand what's happening or that you're not in control. When you demystify a blocker, you're not just explaining a delay—you're demonstrating that you understand the system deeply, you're managing it actively, and you're being transparent with them. That builds trust even when the news isn't ideal. The goal isn't to have zero blockers—it's to communicate about them so clearly that clients think "That makes sense, and I trust they're handling it well."