DEV Community

전규현 (Jeon gyuhyeon)
전규현 (Jeon gyuhyeon)

Posted on

WBS vs Agile? There's No Such Opposition

"We're Agile, so we don't need WBS."

"Isn't WBS a Waterfall method?"

I hear these misunderstandings frequently.

One Scrum Master even said "WBS is the enemy of Agile."

Is that really true?

No. WBS and Agile are not opposing. They're actually the best partners.

False Dichotomy

Many people think this way:

# Wrong thinking
if methodology == "Agile":
    wbs = None  # "Agile doesn't need WBS"
elif methodology == "Waterfall":
    wbs = Required  # "Only Waterfall uses WBS"

# Correct approach
def modern_project_management():
    return {
        "structure": "WBS",      # Skeleton
        "execution": "Agile",    # Execution
        "mindset": "Adaptive"    # Mindset
    }
Enter fullscreen mode Exit fullscreen mode

WBS is not a methodology. It's a tool.

3 Misunderstandings About WBS

Misunderstanding 1: "WBS is Waterfall-only"

Just as a hammer isn't for a specific architectural style, WBS can be used with any methodology.

Waterfall WBS:

Project (12 months fixed)
├── 1. Requirements Analysis (3 months) ← Cannot change
├── 2. Design (2 months) ← Cannot change
├── 3. Development (6 months) ← Cannot change
└── 4. Testing (1 month) ← Cannot change
Enter fullscreen mode Exit fullscreen mode

Agile WBS:

Epic: User Management System
├── Sprint 1
│   ├── Login API ← Can modify
│   └── Signup UI ← Can change priority
├── Sprint 2
│   ├── Profile Management ← Can move to sprint
│   └── Permission System ← Can redefine
└── Backlog
    └── Additional Requirements ← Can add anytime
Enter fullscreen mode Exit fullscreen mode

The difference is flexibility, not WBS itself.

Misunderstanding 2: "Agile Has No Planning"

Reread the Agile Manifesto:

"Responding to change over following a plan"

This isn't "let's do it without a plan" but "let's make a plan that can respond to change."

// Development without planning (Chaos)
function chaotic_development() {
  while (true) {
    random_task = pick_random_task();
    do_something(random_task);
    // No one knows when it will end
  }
}

// Agile + WBS (Systematic)
function agile_with_wbs() {
  const epic = breakdown_into_stories(); // WBS!

  for (const sprint of sprints) {
    const planned_stories = prioritize(epic);
    execute(planned_stories);
    retrospect_and_adapt(); // Agile!
  }
}
Enter fullscreen mode Exit fullscreen mode

Misunderstanding 3: "WBS is Too Detailed and Rigid"

You decide the depth of WBS.

Excessive WBS (What to avoid):

Login Feature
├── Login Button
│   ├── Button Color Definition
│   │   ├── RGB Value Decision
│   │   │   ├── R value: 255
│   │   │   ├── G value: 0
│   │   │   └── B value: 0
│   │   └── Hex Conversion
│   └── Button Size
│       ├── Width: 100px
│       └── Height: 40px
(This is crazy)
Enter fullscreen mode Exit fullscreen mode

Appropriate WBS (Recommended):

Login Feature
├── Frontend (3 story points)
├── Backend API (5 story points)
└── Testing (2 story points)
Enter fullscreen mode Exit fullscreen mode

Real Case: Startup A's Transformation

Before: "Pure Agile" (Actually Chaos)

Situation:
- "We're Agile, so no documents needed"
- "We'll decide each sprint"
- "WBS is a relic of the past"

Result:
- 3-month project → 8 months delayed
- Half the team quit
- Lost investor trust
Enter fullscreen mode Exit fullscreen mode

After: WBS + Agile Combined

Change:
- Structure Epics with WBS
- Sprints execute part of WBS
- Big picture + Flexible execution

Result:
- 80% improvement in predictability
- 2x increase in team satisfaction
- Successfully raised next investment
Enter fullscreen mode Exit fullscreen mode

Synergy of WBS and Agile

1. WBS is the Map, Agile is the Travel Method

class ModernProject:
    def __init__(self):
        self.wbs = create_roadmap()  # Full map
        self.agile = navigation_method()  # Navigation

    def execute_sprint(self):
        # Select this sprint's work from WBS
        sprint_backlog = self.wbs.get_next_priority()

        # Execute in Agile way
        daily_standup()
        iterate_and_deliver()
        retrospective()

        # Update WBS
        self.wbs.update_progress()
Enter fullscreen mode Exit fullscreen mode

2. Mapping User Stories and WBS

Epic (WBS Level 1): User Management System

Feature (WBS Level 2):
  - Authentication System
  - Profile Management
  - Permission Management

User Story (WBS Level 3):
  - 'User can login with email'
  - 'User can upload profile picture'
  - 'Admin can change user permissions'

Task (WBS Level 4):
  - Login API Development
  - JWT Token Implementation
  - Profile Image S3 Upload
Enter fullscreen mode Exit fullscreen mode

3. Sprint Planning and WBS

function sprint_planning_with_wbs() {
  // 1. Check full backlog from WBS
  const all_work = wbs.get_remaining_work();

  // 2. Sort by priority (Agile)
  const prioritized = sort_by_business_value(all_work);

  // 3. Calculate sprint capacity
  const team_velocity = calculate_velocity();

  // 4. Assign WBS tasks to sprint
  const sprint_backlog = prioritized.slice(0, team_velocity);

  return {
    sprint_goal: define_goal(sprint_backlog),
    tasks: sprint_backlog,
    success_criteria: define_done(sprint_backlog),
  };
}
Enter fullscreen mode Exit fullscreen mode

Hybrid Approach: The Best Choice

Structured Agile, Not Scrumfall

❌ Scrumfall (Worst Combination):
- Waterfall rigidity + Agile chaos
- Long planning phase + Frequent changes
- Excessive documents + Lack of communication

✅ Structured Agile (Best Combination):
- WBS structure + Agile flexibility
- Full vision + Iterative improvement
- Appropriate documents + Active communication
Enter fullscreen mode Exit fullscreen mode

Practical Application Example

class StructuredAgileProject:
    def __init__(self, project_scope):
        # Define overall structure with WBS
        self.wbs = self.create_wbs(project_scope)
        self.total_points = self.estimate_total()

    def run_sprint(self, sprint_number):
        # Execute Agile sprint
        sprint_goal = self.define_sprint_goal()
        sprint_backlog = self.select_from_wbs()

        # Daily Scrum
        for day in range(10):
            self.daily_standup()
            self.work_on_tasks()
            self.update_burndown()

        # Sprint Review & Retrospective
        self.sprint_review()
        self.retrospective()

        # Update WBS progress
        self.update_wbs_progress()

    def adapt_to_change(self, new_requirement):
        # Reflect changes in WBS
        self.wbs.add_node(new_requirement)
        self.reprioritize_backlog()
        # But maintain overall structure
Enter fullscreen mode Exit fullscreen mode

Tool Selection Guide

Tools Supporting WBS + Agile

Plexo ⭐:

  • WBS structure visualization
  • Sprint management
  • Real-time collaboration

Jira:

  • Epic-Story-Task hierarchy
  • Sprint board
  • Burndown chart

Azure DevOps:

  • Hierarchical backlog
  • Sprint planning
  • WBS view

Tools to Avoid

  • Pure Kanban tools (lack structure)
  • Traditional Gantt tools (lack flexibility)
  • Simple Todo apps (no hierarchy)

Team Persuasion Strategy

For Teams Saying "We're Agile, Though?"

  1. Suggest Small Experiment:
    "How about structuring just one next sprint with WBS?"

  2. Change the Name:
    Use "Epic Breakdown", "Story Mapping" instead of WBS

  3. Emphasize Visualization:
    "How about sprint planning while seeing the big picture?"

  4. Share Success Stories:
    Spotify, Netflix also use structured backlogs

Measurable Improvement Metrics

metrics_before_wbs = {
    "sprint_goal_achievement": "60%",
    "prediction_accuracy": "40%",
    "team_satisfaction": "5/10",
    "stakeholder_trust": "Low"
}

metrics_after_wbs = {
    "sprint_goal_achievement": "85%",
    "prediction_accuracy": "75%",
    "team_satisfaction": "8/10",
    "stakeholder_trust": "High"
}
Enter fullscreen mode Exit fullscreen mode

Conclusion: Tools are Just Tools

The WBS vs Agile debate is like hammer vs saw.

Both are needed. Use them according to the situation.

Core Message:

  • WBS = Structure and Visibility
  • Agile = Flexibility and Adaptation
  • WBS + Agile = Predictable Adaptation

Teams saying "We're Agile so we don't need planning" and
Teams saying "We have WBS so no changes allowed",

Both are wrong.

Wise teams say this:

"We see the whole picture with WBS and execute with Agile."

This is project management in 2025.


Need project management that perfectly combines WBS and Agile? Check out Plexo.

Top comments (0)