Cross-Team Dependencies — How to Not Get Blocked
The Slack ping, the escalation path, the meeting that should have been an email — and when each is right
#SoftwareEngineering #Teamwork #Slack #Productivity #EngineeringManagement

You're staring at a yellow ticket. Inventory flag. Payments can't ship the checkout change until Warehouse exposes it. You already pinged their channel Monday. You nudged the owner Wednesday. Someone suggested a "quick sync." Your manager asked if you've escalated.
You're busy. You're still blocked.
That's the tell. Activity across every channel isn't diagnosis. The yellow stays yellow because you optimized for looking unblockable — not for the failure mode that owns the delay.
Three Ways to Stay Stuck
The Design. Treat every stuck dependency like a volume problem. More reminders. More people. More calendar. If they're ignoring you, shout louder.
The Reality. Warehouse already knows about the flag. It's on their backlog behind two platform migrations. Your Slack "any update?" adds noise without a decision. Your escalation CC's three managers and still doesn't name what needs to change — priority, scope, or contract. The meeting restates the thread for twenty minutes and ends with "let's follow up async."
The Solution That Shipped. You used every channel. None of them matched the failure mode. The other team isn't being difficult — they have different priorities. You spent political capital proving diligence. The yellow ticket is still yellow.
More pings can mean less progress.
The Channel Map — Ping, Escalate, Meet
Getting unblocked across teams is a channel-selection problem. Not a persistence contest. Match the failure mode to the tool that can resolve it.
Most messy dependencies stay messy because nobody names how the teams are supposed to interact — collaborate to discover an interface, consume a service with a clear boundary, or get temporary help clearing an impediment.
"We need to coordinate better" is not a mode. It's a shrug.
Slack — when the blocker is ignorance
Use async when the other side might not know, or might have forgotten, and a specific ask can land without a calendar tax.
A useful ping is not "any update?"
It's: what you need, why it matters to a dated delivery, what "done" looks like, and what you've already tried. Name a person if you can. Leave a reply path that doesn't require a meeting to decode.
If the inventory flag is already specified and you only need a commit date — or a hard "not this quarter" — Slack is enough. Soft reminders without a decision invite soft silence. The owner has nothing to approve, reject, or schedule.
Don't confuse "we put it in Slack" with "we made a decision packet."
A channel dump with no owner and no due date is how async turns into fog. The thread grows. The commitment doesn't.
Escalation — when the blocker is priority
Use the ladder when both sides understand the ask and still can't agree on order. That's not rudeness. That's a prioritization decision that lives above the two teams.
Clean escalation is open, joint, and boring. Align on the disagreement first. Tell the other party you intend to escalate. Bring options, not a villain narrative.
Private side-channels to a sympathetic manager are the opposite — thin context upstairs, damaged trust downstairs. Leaders endorse a story they half understand. Peers learn you skip the seam.
Escalation Theater looks like volume: managers copied, thread heated, still no decision named. Real escalation looks like a packet: dependency, impact if delayed, what you already asked, the trade-offs, and the single ask — reprioritize, cut scope, or change the contract.
Waiting "politely" while a priority conflict burns a sprint is not kindness. It's expensive silence.
Escalation, done clean, is sometimes the respectful move.
Meeting — when the blocker is ambiguity
Use live time when the contract itself is unclear — ownership, interface shape, edge cases, who owns the failure mode when the flag is missing.
A meeting is expensive on a maker schedule. One slot can split an afternoon into two pieces too small for real work. So earn it.
Earn it when async has already exposed the gap: two teams writing past each other, or discovering an API together instead of consuming a stable one. That's collaboration on purpose — high bandwidth, timeboxed. Don't schedule it to "align vibes." Schedule it to leave with a written decision: fields, owner, ship shape, follow-up channel.
Sometimes the meeting that should have been an email is the email that should have been a meeting.
A week of polite ping-pong over an undefined inventory contract costs more than twenty focused minutes. The folklore only remembers the wasteful meetings. It forgets the weeks that should have been one.
Escalation Theater — Loud, Still Stuck
Escalation gets a bad reputation because people use it as emotional leverage. Copy leadership. Imply the other team is broken. Hope urgency substitutes for clarity.
That pattern fails for a predictable reason: leaders can't re-order work they don't understand, and peers stop answering people who treat every delay like a character flaw.
The respectful version assumes good intent and optimizes globally — your launch versus their migrations — instead of locally for your ticket. You escalate the decision, not the person.
Watch for the tells of theater:
- The thread never states the decision in one sentence.
- Nobody can name who Approves the call.
You've seen the next two already — they show up in the same threads.
- "FYI" managers outnumber people who can change the backlog.
- The ask is "please prioritize us" with no options and no consequence of delay.
If you can't state the decision in one sentence, you're not ready to escalate.
You're ready to write a better Slack message — or book the ambiguity meeting.
The Ask That Travels Across a Seam
Back to payments and Warehouse. Same dependency. Three channels. Only one is right at a time.
Ignorance. "We need inventory.available_for_checkout on the order payload for checkout v2. Spec is in the linked doc. Need a commit date or a hard no by Thursday so we can mock or cut scope."
That's Slack. Specific. Dated. Offers the owner a real reply.
Priority. They answer: it's behind two migrations, and those aren't moving. Escalate jointly with both tech leads' managers. Packet: dependency, customer-facing date, options (minimal field now / mock for two sprints / slip checkout). Ask: pick one.
That's the ladder. Not a character review of Warehouse. A priority call with options attached.
Ambiguity. Three people mean three different things by "available." Stop pinging. Book thirty minutes with the two owners. Leave with field semantics written down. Then async can run again.
That's the meeting. Expensive on purpose. Cheap compared to another week of polite confusion.
A traveling ask names the decision, who can decide it, the date, and the consequence of delay. Without those, every channel becomes theater — Slack noise, escalation spectacle, or a sync that restates the fog.
Noise or a Matched Channel
The Channel Map is small on purpose. You don't need a RACI workshop to pick Slack vs ladder vs room. You need an honest read of the stuckness: don't know, can't reorder, or haven't defined.
Busy is cheap. Matched is rare.
Ping when they might not know. Escalate when they know and can't reorder. Meet when nobody has defined the thing yet.
Everything else is motion that leaves the ticket yellow.
More in Team
When Two Teams Share a Failure — Accountability Without Blame
A shared cause does not require equal responsibility; the useful split follows control, visibility, and who can prevent the next recurrence.
8 min · July 30, 2026
DORA Metrics Are Not KPIs
What gets gamed the moment it's a target — and what actually tells you something about team health.
6 min · July 25, 2026
What Actually Happens in Sprint Planning
The mechanics nobody explains to engineers joining their first Scrum team
7 min · July 10, 2026