Task Dependencies Management | Prevent Blockers
Identify and track task dependencies to prevent blockers. GitScrum links blocked-by relationships, shows dependency chains, and surfaces blockers in standups.
8 min read
Dependencies are the hidden rocks in project waters. Ignore them, and work crashes to a halt when blocked. Manage them well, and work flows smoothly with parallel progress. This guide covers identifying, tracking, and resolving dependencies before they become blockers.
Dependency Types
| Type | Example | Risk Level |
|---|---|---|
| Technical | API needed before frontend | High |
| Team | Design from another team | Medium |
| External | Third-party integration | High |
| Resource | Waiting for access/tools | Medium |
| Knowledge | Waiting for requirements | Medium |
Identifying Dependencies
During Planning
DEPENDENCY IDENTIFICATION
βββββββββββββββββββββββββ
IN SPRINT PLANNING:
βββββββββββββββββββββββββββββββββββββ
For each story, ask:
"What must exist before this can start?"
βββ APIs, endpoints, services
βββ Designs, specs
βββ Environment, access
βββ Data, content
βββ Document answers
"Who needs to provide something?"
βββ Other teams
βββ External vendors
βββ Stakeholders (decisions)
βββ Subject matter experts
βββ Clarify timeline and owner
"What could block this?"
βββ Technical unknowns
βββ Approval gates
βββ Resource availability
βββ External factors
βββ Plan mitigations
DOCUMENT DEPENDENCIES:
βββββββββββββββββββββββββββββββββββββ
Task: Frontend profile page
Dependencies:
βββ User API endpoint (Team Backend, Day 3)
βββ Profile design (Design team, Done)
βββ Avatar upload service (Blocked on S3 setup)
βββ Track in GitScrum
Dependency Mapping
VISUAL DEPENDENCY MAP
βββββββββββββββββββββ
CREATE DEPENDENCY DIAGRAM:
βββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β [User API] [Avatar Service] β
β β β β
β βΌ βΌ β
β [Frontend] βββββ [Design] β
β β β
β βΌ β
β [Integration Tests] β
β β β
β βΌ β
β [Deploy to Staging] β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
CRITICAL PATH:
βββββββββββββββββββββββββββββββββββββ
The longest chain of dependencies
determines minimum project duration.
In above:
User API β Frontend β Tests β Deploy
(This is the critical path)
Avatar can parallel with Frontend.
Design must finish before Frontend starts.
IDENTIFY:
βββ What's on critical path? (Can't slip)
βββ What can parallel? (Opportunity)
βββ What has most dependents? (Risk)
βββ Focus attention accordingly
Tracking Dependencies
In GitScrum
GITSCRUM DEPENDENCY TRACKING
ββββββββββββββββββββββββββββ
LINKING TASKS:
βββββββββββββββββββββββββββββββββββββ
Task β Links β Add Dependency
Types:
βββ Blocked by: This task waits on linked task
βββ Blocks: This task must finish for linked to start
βββ Related: Just associated (no dependency)
βββ Parent/child: Hierarchy
EXAMPLE:
βββββββββββββββββββββββββββββββββββββ
Task: Frontend Profile Page
βββ Blocked by: GS-100 (User API endpoint)
βββ Blocked by: GS-101 (Profile design)
βββ Blocks: GS-120 (Integration tests)
STATUS VISIBILITY:
βββββββββββββββββββββββββββββββββββββ
When dependency incomplete:
βββ Indicator shows on blocked task
βββ Can filter "Blocked" tasks
βββ Dashboard shows blocker count
βββ Standup surfaces blockers
DEPENDENCY VIEW:
βββββββββββββββββββββββββββββββββββββ
Project β Dependencies
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Dependency Chain β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β GS-100 User API ββββββββββ In Progress β
β β β
β GS-105 Profile Page ββββββββββ Blocked β
β β β
β GS-120 Integration ββββββββββ Waiting β
β β
β β οΈ GS-100 delay affects 2 downstream tasks β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Managing Dependencies
Proactive Management
PROACTIVE DEPENDENCY HANDLING
βββββββββββββββββββββββββββββ
START DEPENDENCIES EARLY:
βββββββββββββββββββββββββββββββββββββ
If A depends on B:
βββ Start B as early as possible
βββ Buffer time between B finish and A start
βββ Track B progress actively
βββ Escalate early if B slipping
COMMUNICATE ACTIVELY:
βββββββββββββββββββββββββββββββββββββ
To dependent team:
"We need the User API by Day 5.
Our frontend work starts then.
Any concerns about that timeline?
How can we help?"
Not:
"Where's the API?" (on Day 5)
DAILY STANDUP:
βββββββββββββββββββββββββββββββββββββ
"What's blocking you?"
βββ Surface dependencies daily
βββ Immediate visibility
βββ Action same day
βββ Don't let blockers linger
DEPENDENCY REVIEW:
βββββββββββββββββββββββββββββββββββββ
Weekly in sprint:
βββ Review all open dependencies
βββ Status of each
βββ ETA still valid?
βββ Risk level updated?
βββ Action items assigned
When Blocked
HANDLING BLOCKERS
βββββββββββββββββ
WHEN BLOCKED:
βββββββββββββββββββββββββββββββββββββ
Step 1: CONFIRM IT'S REALLY BLOCKED
βββ Can you work around it?
βββ Can you mock/stub temporarily?
βββ Can you work on another task?
βββ Only truly blocked = blocker
Step 2: COMMUNICATE IMMEDIATELY
βββ Tell the blocking party
βββ Make visible in standup
βββ Update task status
βββ @mention relevant people
Step 3: ESCALATE IF NEEDED
βββ If blocker isn't moving
βββ Go to PM/lead
βββ Involve management if cross-team
βββ Don't wait until deadline
Step 4: FIND WORKAROUNDS
βββ Can we mock the API?
βββ Can we use sample data?
βββ Can we skip this for now?
βββ Can we parallelize differently?
βββ Keep making progress if possible
WORKAROUND EXAMPLES:
βββββββββββββββββββββββββββββββββββββ
Waiting for API:
βββ Mock the API responses
βββ Build frontend against mock
βββ Integrate when API ready
βββ Parallel development
Waiting for design:
βββ Build with placeholder UI
βββ Structure and logic first
βββ Apply design when ready
βββ Don't block completely
Waiting for decision:
βββ Document assumptions
βββ Build most likely option
βββ Plan to adapt if different
βββ Proceed with risk noted
Reducing Dependencies
Prevention Strategies
DEPENDENCY REDUCTION
ββββββββββββββββββββ
CROSS-FUNCTIONAL TEAMS:
βββββββββββββββββββββββββββββββββββββ
Instead of: Frontend team, Backend team
Have: Feature teams with both skills
Result:
βββ Most dependencies are internal
βββ Team self-sufficient
βββ No cross-team waiting
βββ Faster delivery
LOOSELY COUPLED SYSTEMS:
βββββββββββββββββββββββββββββββββββββ
Design for independence:
βββ Clear interfaces/contracts
βββ Services can develop in parallel
βββ Mocks enable independent testing
βββ Changes don't cascade
βββ Architecture reduces dependencies
CONTRACT-FIRST DEVELOPMENT:
βββββββββββββββββββββββββββββββββββββ
Before building:
βββ Agree on API contract
βββ Document endpoints, payloads
βββ Both teams build to contract
βββ Mock enables parallel work
βββ Meet in the middle
SMALLER BATCHES:
βββββββββββββββββββββββββββββββββββββ
Instead of: One big feature with many dependencies
Have: Small slices with fewer dependencies
Each slice:
βββ Minimal dependencies
βββ Can complete independently
βββ Delivers some value
βββ Lower risk
βββ Faster feedback
Dependency Anti-Patterns
What to Avoid
DEPENDENCY ANTI-PATTERNS
ββββββββββββββββββββββββ
HIDDEN DEPENDENCIES:
βββββββββββββββββββββββββββββββββββββ
Pattern: Dependencies not documented
Result:
βββ Surprise blockers mid-sprint
βββ No time to resolve
βββ Sprint fails
Fix: Explicit identification in planning
LAST-MINUTE DISCOVERY:
βββββββββββββββββββββββββββββββββββββ
Pattern: "Oh, we need X!" (mid-development)
Result:
βββ Work stops
βββ Scramble to get X
βββ Delays everything
Fix: Thorough grooming, ask "what do we need?"
SILENT BLOCKING:
βββββββββββββββββββββββββββββββββββββ
Pattern: Blocked but didn't tell anyone
Result:
βββ Days lost
βββ Late discovery
βββ No time to help
Fix: Immediate communication, daily standup
OVER-DEPENDENCY:
βββββββββββββββββββββββββββββββββββββ
Pattern: Everything depends on everything
Result:
βββ Nothing can move independently
βββ Any delay cascades
βββ Maximum risk
Fix: Loose coupling, independent slices
GitScrum Features
Dependency Management
GITSCRUM DEPENDENCY FEATURES
ββββββββββββββββββββββββββββ
LINKING:
βββββββββββββββββββββββββββββββββββββ
Task detail β Links
βββ Blocked by (waits for)
βββ Blocks (must finish first)
βββ Related (associated)
βββ Visual connection
BLOCKER STATUS:
βββββββββββββββββββββββββββββββββββββ
Status: Blocked
βββ Special status
βββ Visible on board
βββ Filterable
βββ Dashboard widget
βββ Standup highlight
DEPENDENCY DASHBOARD:
βββββββββββββββββββββββββββββββββββββ
βββ All blocked tasks
βββ Aging (how long blocked)
βββ Cross-team visibility
βββ Escalation alerts
βββ Unblock tracking
NOTIFICATIONS:
βββββββββββββββββββββββββββββββββββββ
βββ When dependency completed
βββ When task blocked
βββ Reminder if stuck
βββ Keep everyone informed
Best Practices
For Dependencies
Anti-Patterns
DEPENDENCY MISTAKES:
β Not tracking dependencies
β Silent blocking
β Last-minute discovery
β Everything depends on everything
β No escalation path
β Waiting passively
β No workarounds attempted
β Ignoring cross-team needs