Table of Contents

What Should We Consider When Forming a New Team?

When you first bring Scrum, agile or Kanban into an organization you need to set up teams (see Why Do We Form Teams When We Transition To Agile? to understand why). Sounds easy, doesn't it until you starting thinking through the problem. That's when you start to understand that this may not be as easy as you thought.

This page describes some simple background rules to setting up new teams.

Background

If you read the books, the guidelines for team formation include:

Approach

While it is optimal to keep Teams together for a period of time (they learn how to work with each-other) changes will happen as people decide they want to work with others, on other things or find they are not suited to the role they have taken on. We need to be open to these discussions so that we can improve the overall team structure of the organization. Often the Team itself will come up with a proposal to re-configure. But note that these changes should be relatively rare. The general approach to team formation is to “bring work to the team” not “form specific team to do this work”. From a management perspective the additional benefit is that it reduces the amount of “resource allocation” activities you have to do (if you have the “resource spreadsheet” with FTE's down to small percentages of allocation, you are in for a treat is you adopt a team structure more oriented to the value delivered).

For us the basic objective is to set teams up so they generally can take a requirement and turn it into working software / delivered value and improve our delivery, our predictability, and our quality.

We aim to build a series of “functional teams” – a team with members that has membership from code development, QA, product management, UX, writers, etc - whatever is required to get the value delivered. This cross-functional group is needed so they can deliver value to “potentially shippable” state including QA and documentation.

Sometimes there is a need to form a “component team” where the team is responsible for a component (or more) in a product, and so provide services to functional teams. Pros for component teams is that they potentially reduce duplication. Downside is that they make planning more difficult as there is a dependency set up for just about every requirement where you need to deliver value (see Why Should We Work Harder to Eliminate the Effect of Dependencies? for more information). For a large product (lots of teams working toward the same product or service release) I’ve found the the ratio of functional vs component teams is about 70:30.

The idea of the “functional team” is hard for many organizations that are used to thinking about setting up teams based on the architecture of the product. Reality is that while the “architecture” approach may seem logical, its is basically the idea of “component” teams in the extreme, which means that every requirement coming into the systems requires extensive dependency management to get something out the door. And we all know that increased dependency leads to increase risk associated with our release of value. The traditional approach is an example of being resource efficient at the expense of being efficient in delivering value to the business.

We basically put everyone into Scrum teams, even specialized people such as architects and DB experts. We establish a rule that says “no person can be on more than two teams”. Practically this means that a (very) few people that are on two teams. Reason is that if we put people on more than 2 teams, they spend all their life in meetings and so are not very effective. Some experts are on 1 team and then when another team needs their capability they act as consultant / mentors while still remaining on their primary team.

Some additional notes:

Want to Know More?

For more information on the specific roles see:

Also see: