The Agile Handbook

Unravelling the Dynamics of the Agile Development Team

Last updated on

Unravelling the Dynamics of the Agile Development Team

Self-Organizing Doesn’t Mean Self-Managing Without Support

The term “self-organizing team” gets used like magic — say the words and the team becomes autonomous and high-performing. In practice, building genuinely self-organizing teams is hard, slow work that most organizations underinvest in.

Here’s what self-organizing means in Scrum: the team decides how to do the work, not what to do. The Product Owner sets priorities. The Scrum Master clears obstacles. The development team chooses their approach, sequence, and technical methods for delivering sprint goals.

What self-organizing does not mean: the team never needs guidance, operates without any constraints, or is immune to organizational forces that shape their environment. Teams don’t self-organize into existence — they’re structured, supported, and given conditions that make self-organization possible.

Most teams I’ve encountered that are struggling with self-organization have one of two problems: either the organization hasn’t given them genuine autonomy (managers are still directing technical decisions), or the team hasn’t developed the norms and trust required to make collective decisions effectively. Both are fixable, but they require different interventions.

What Cross-Functional Actually Requires

A cross-functional team has all the skills needed to deliver complete features without external dependencies. This definition is more demanding than it sounds.

In practice, “cross-functional” is often applied to teams that contain multiple specialties but still create handoffs between them. A team with frontend developers, backend developers, and a QA engineer isn’t cross-functional if the QA engineer only gets involved after development is “done.” The team is cross-functional if testing and development happen concurrently, if developers write tests, if the QA engineer participates in story refinement to shape testable acceptance criteria.

The distinction matters because handoff-based work within the team is the same coordination problem as handoffs between teams — just at smaller scale. Features wait in queues. Context is lost between handoffs. Feedback cycles lengthen.

The ideal: every sprint, every developer on the team has a working understanding of the full stack of the feature being built. Not expertise across every domain — that’s unrealistic. Working understanding sufficient to pair on a problem, review work across domains, or spot integration issues before they become blockers.

Teams that achieve this have typically invested deliberately in knowledge sharing: pairing across specialties, mob programming on complex features, and treating skill gaps as team problems rather than individual deficiencies.

Team Size: Why 3-9 Is More Than a Guideline

Scrum’s 3-9 person recommendation for development team size is often treated as optional context. It shouldn’t be.

Teams smaller than three lack diversity of perspective and create fragility — one person absent and critical skills are missing. Teams larger than nine have exponentially more communication paths and coordination overhead that overwhelms the benefits of added capacity.

The math: a 5-person team has 10 communication pairs. A 9-person team has 36. A 12-person team has 66. Each additional member adds more coordination complexity than they add capacity. At some threshold — usually around 8-10 people — the coordination overhead makes the whole system slower, not faster.

When teams are consistently larger than 9, the usual solutions are: split into two teams with coordinated sprint goals, adopt LeSS or Nexus for multi-team Scrum, or find that the large team is actually being treated as two or three informal sub-teams anyway, in which case making the structure explicit often improves coordination.

The Roles Within the Team: What Actually Matters

The Scrum Guide deliberately doesn’t specify roles within the development team. This is intentional — the team is collectively accountable, and prescribing individual roles would undermine collective ownership.

In practice, teams typically include some combination of:

Software developers who write and maintain code. The quality and practices of this work — unit tests, code review, refactoring — determine whether the team accumulates technical debt that will slow them in future sprints or maintains a codebase that stays workable as it grows.

QA specialists who define quality standards, design test approaches, and ensure the Definition of Done reflects genuine quality, not just functional completion. The shift from “QA tests what developers build” to “QA and development collaborate to define what quality means and how to achieve it” is significant and requires deliberate culture change.

Designers who understand user needs and translate them into interface decisions that actually work for users. Teams without design expertise often build functional software that’s confusing to use. Teams with design expertise integrated into development — not handed off requirements — build software that’s both functional and usable.

Systems engineers who understand architecture, infrastructure, and how the pieces fit together. In teams using CI/CD, this role often extends into operations — “DevOps” as a cultural practice rather than a job title.

The important point: these are skills that need to be present, not necessarily roles that need to be filled by dedicated specialists. A developer with strong UX instincts can cover design needs for a small product. A backend developer who understands testing deeply can cover QA for a well-tested service. The goal is the capability, not the org chart category.

The T-Shaped Developer and Why It Matters

“T-shaped” means: depth in one area (the vertical bar), breadth across multiple areas (the horizontal bar). A T-shaped backend developer can write good backend code (depth) and can contribute meaningfully to frontend work, infrastructure, and testing even if not at expert level (breadth).

T-shaped team members are more valuable than I-shaped specialists in Agile teams because:

  1. They can help when the specialist is overloaded, sick, or on vacation
  2. They can review work across domains, which improves quality
  3. They understand the integration between their area and others, which improves design decisions
  4. They reduce the bus factor — the risk of a team member leaving taking irreplaceable knowledge

Building T-shaped skills requires deliberate investment. Pairing across domains, rotation through different parts of the codebase, encouraging developers to volunteer for tasks outside their primary specialty — these practices build breadth over time. They require short-term efficiency sacrifice for long-term resilience gains.

The Trust Foundation

Self-organization requires trust. Teams that don’t trust each other default to individual work, hidden problems, and blame-avoidance behaviors. Teams that trust each other surface problems early, help each other out, and hold each other to shared standards.

Trust in development teams is built through:

Consistency — doing what you say you’ll do, regularly, over time. Not delivering perfectly, but delivering honestly. “I said this would take two days, it’s taking five, and here’s what I found” builds more trust than either silence or cheerful optimism until it’s too late.

Vulnerability — being willing to say “I don’t know” or “I’m stuck” before it becomes a crisis. Teams where asking for help is safe are faster and more reliable than teams where asking for help is an admission of weakness.

Retrospective honesty — using retrospectives to talk about what’s actually not working rather than what’s technically improvable but not really causing problems. Comfortable retrospectives produce comfortable retrospective reports. Honest retrospectives produce change.

Shared standards — the Definition of Done, coding standards, commit message conventions. These shared standards create a basis for team members to trust each other’s work and review each other’s contributions without starting from scratch each time.

The Takeaway

The development team is the part of Scrum where the value actually gets created. The Product Owner decides what to build. The Scrum Master creates conditions for good work. But the development team is where working software comes from.

Investing in that team — in cross-functional skill development, in trust, in genuine self-organization — pays compounding returns. Teams that have been well-invested for a year are dramatically more capable than the same people were a year earlier, if the investment was in the right places.

What counts as right investment: pairing and knowledge sharing, space to refactor and improve technical quality, retrospectives that actually change behavior, and protection from the interruptions and shifting priorities that prevent sustained, focused work.

The team is not a resource. It’s an organism that gets better or worse over time depending on the conditions it operates in. Build the conditions first.