topic --show roles
Agile Development Teams: What Self-Management Really Takes
A self-managing agile development team decides who does what, when and how, yet still needs clear goals, constraints and organizational support to work well.
The 2020 Scrum Guide made a deliberate change, replacing “self-organizing” with “self-managing” to describe Scrum Teams. The term gets used like magic, as if saying the words makes the team autonomous and high-performing. In practice, building genuinely self-managing teams is hard, slow work that most organizations underinvest in.
Here’s what self-management means in Scrum. The Scrum Guide says the team members “internally decide who does what, when, and how.” The Product Owner orders the Product Backlog and sets the Product Goal. The Scrum Master helps clear obstacles. The Developers choose their approach, sequence, task split and technical methods for delivering sprint goals, and there are no sub-teams or hierarchies inside the Scrum Team.
Self-management still leaves plenty for the organization to provide. The team needs clear goals to manage towards, known constraints to work within, and support from an organization whose forces shape its environment. Teams don’t self-manage into existence; they’re structured, supported, and given conditions that make self-management possible.
Most teams I’ve encountered that are struggling with self-management have one of two problems: either the organization hasn’t given them genuine autonomy (managers are still assigning work and 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 Does Cross-Functional Actually Require?
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 falls short 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. Expertise across every domain is unrealistic; what’s needed is 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.
How Big Should a Scrum Team Be?
The 2020 Scrum Guide says a Scrum Team is “typically 10 or fewer people,” including the Product Owner and Scrum Master. Earlier editions put the Development Team at three to nine. Either way, the limit is often treated as optional context. It shouldn’t be.
Teams that are too small lack diversity of perspective and create fragility: one person absent and critical skills are missing. Large teams have far more communication paths, and the coordination overhead 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.
When teams are consistently too large, the usual solutions are: split into two teams with coordinated sprint goals, adopt a multi-team framework such as LeSS or Nexus, or recognize that the large team is already operating as two or three informal sub-teams, in which case making the structure explicit often improves coordination.
Which Skills Does a Development Team Need?
The Scrum Guide deliberately doesn’t specify roles within the team. Everyone doing the work is simply one of the Developers, 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 as well as 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, instead of handing 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, and they don’t each need a dedicated specialist. 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; the org chart category is secondary.
What Is a T-Shaped Developer?
“T-shaped” means depth in one area (the vertical bar) and 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:
- They can help when the specialist is overloaded, sick, or on vacation
- They can review work across domains, which improves quality
- They understand the integration between their area and others, which improves design decisions
- They reduce the bus factor, the risk of a team member leaving and taking irreplaceable knowledge
Building T-shaped skills requires deliberate investment. Pairing across domains, a practice that comes from Extreme Programming, rotation through different parts of the codebase, and encouraging developers to volunteer for tasks outside their primary specialty build breadth over time. They require a short-term efficiency sacrifice for long-term resilience gains.
Why Self-Management Depends on Trust
Self-management 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. Perfect delivery isn’t the bar; honest delivery is. “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.
Build the Conditions for Self-Management First
The Developers are 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 Developers are where working software comes from. The Agile principles made the same bet in 2001, in that era’s vocabulary: “The best architectures, requirements, and designs emerge from self-organizing teams.”
Investing in that team, in cross-functional skill development, in trust, in genuine self-management, pays compounding returns. Teams that have been well supported 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 the 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.
A team is a living system that gets better or worse over time depending on the conditions it operates in. Build the conditions first.