Agile teams

Agile teamsAgile teams are structurally different than their waterfall counterparts. Agile teams focus on the team itself, whereas waterfall teams often follow the structure of the organization. In traditional waterfall development, scheduling is often “top down,” meaning management sets the pace and schedule. In agile, the team is self organizing, and sets its own schedule and destiny within the larger organization. As I was learning scrum, one of the questions that kept coming to mind was, “How do development managers and scrum masters share responsibilities in the team?” Let’s explore the answer to this question.

Waterfall teams vs. scrum teams

Most waterfall teams are manager centric. They look to the the manager to set priorities, track progress, and evaluate performance. Agile teams are self-organizing. They work with a product owner (not usually in the team’s management chain) who sets the vision for what should be built. The team, through a series of sprints, drives how the product should be built.

Self-organizing teams own their destiny. In sprint planning, they decide how much work to commit to the sprint, and because of that, their level of ownership in the success of the program remains high. Engineers who own their own schedules build products of higher quality more consistently because they own their schedules. Engineers want to build high quality products on time. Everyone in the organization has the same goal. As a company we all want to succeed. Tuckman’s stages of group development outlines how teams form and thrive. Agile, self-organizing teams are no exception.

Mutual trust and candor are essential to well-performing agile teams. Management that continually focuses on hiring the right team is able to trust the team to get the job done. The need to then micromanage every detail of the team’s work doesn’t exist. The scrum master and the development manager protect the team from outside distractions such as feature creep, waterfall anti-patterns, cross functional thrash, or side projects that will compromise the integrity of the sprint.

Role 1: scrum mastersAgile teams_scrum master

Scrum masters are the project leaders in agile teams who focus on optimizing performance of the scrum process. They work between the product owner and the team ensuring consistent, successful sprints by running stand-ups, and working to reduce blocking issues for the team. Cross-functional thrashing can be costly for teams, so successful scrum masters own cross-team coordination so the core team can focus on product development. This practice keeps everyone efficient and on the same page.

“Scrum masters are leaders in agile teams who focus on optimizing performance of the scrum process.”

The scrum master coordinates most of the inputs and outputs required for an agile program. He or she drives the sprint kickoffdaily stand-upssprint review, and sprint retrospective. The scrum master is also an agile coach, helping the team to adopt and own agile practices throughout the product life cycle: story point estimation, sprint planning, and continuous delivery. The coaching aspect of the scrum master’s job is critical as they not only help the team to be agile, but advocate for agile development throughout the organization, and spread the good word about why agile development is right for the project and for the company. Often times, when agile methodologies are new at a company, the advisers and stakeholders outside of the team need agile coaching as well.

The scrum master works with the team and the development manager to estimate items in the backlog. At first, the team will need some guidance from the scrum master and development manager. As the team is forming, it builds shared knowledge of the program through successful sprint planning. As the team moves into a performing stage, the scrum master focuses less on estimation and more on optimizing the velocity of delivery.

Role 2: development managersAgile teams_Dev manager

There’s a lot of uncertainty for engineering managers when their team adopts agile – an Admiral Stockdale moment, if you will. But despite the fact that agile development teams don’t rely on their manager for estimation and prioritization, managers still play a vital role.

Hiring well

The most important thing a development manager does is hire. Why spend so much time on hiring the right candidate? Team changes are expensive on two levels:

  • Searching for candidates takes focus away from building great product.
  • When new employees join, the existing team needs to spend time onboarding them. Teams will experience a drop in velocity over a few sprints as each new person integrates into the team.

“The most important thing a development manager does is hire.”

When a team is truly self organizing and performing well, everyone in the organization sees it through the product quality and delivery. No one has more impact here than the development manager.

One of the big differences between agile and waterfall teams is that the development manager is a partner in the estimation process. In a waterfall team, a conversation like this wouldn’t be unheard of:

  • “Hey, how long is it going to take to deliver this feature?” – manager
  • “It’s going to take six weeks. We need to do A, B, C to get the feature to market.” – engineer
  • “Hmm. That makes sense, however, you need to find a way to get it done in four weeks.” – manager

But an agile development manager knows to hire great people, then trust them. A fundamental tenet of the agile process is that those closest to the work are best able to scope and deliver. The team sets the schedule. The development manager adds unique value in inquiring and vetting assumptions made in the estimation exercise – partnering in the process, rather than dictating it.

“A tenet of the agile process: those closest to the work are best able to scope and deliver.”

Developing well

While scrum masters focus on team velocity, development managers build up team members’ velocity by coaching individuals one on one. Development managers curate and inspire great talent in their organizations. Great managers are adept at the fundamentals of management: one on ones, giving feedback, and coaching their teams. Successful development managers mentor engineers to bring greatness to the table: ideas, code, tests, and culture. Great development managers partner with their teams. At times, the team will struggle or come to an impasse with architecture design decisions. Adept development managers know when to intervene to break the impasse or let the team continue to struggle to grow the team. The scrum master may not be as technical as the rest of the team so the development manager lends valuable context between the scrum master and the team when there is a clear knowledge gap.

In addition, they also partner with the senior developers in the company to set the development culture. They’re often influential in the technology choice for the program, and continue to own responsibility for the quality of the product from the code architecture to the end-user experience. Development managers engage in code reviews to ensure team members are contributing code that meets the short and long term goals of the program. They also set context internally for the team and in the larger organization.

To learn more

We’ve spent a fair amount of time looking at what makes a great manager in an agile culture and now we’d love to know: how does your team practice the agile methodology? Drop us a line in the comments!

And if you’re interested in checking out more agile tips and tricks, check out Atlassian’s Agile Coach – our no-nonsense guide to making software better.

Take me to The Agile Coach!

Editor’s note: This post was originally published in January, 2014 and has been updated for freshness and comprehensiveness.

Who’s who in agile teams?