In the crazy old days of waterfall development we had distinct teams of specialists: business analysts, architects, designers, developers, testers, deployment specialists and support staff.
In the world of Agile development one of the recommendations is to have cross-functional teams. This post describes what that means and what a good cross-functional scrum team composition looks like.
So what is a "cross-functional team"?
Imagine a development team that has all the people in it that can deliver a piece of functionality. A base of developers, a healthy dollop of testers, a sprinkling of UX, a soupcon of project owner and a scrum master to stir it all with. I'm going to take the food analogy way too far but it fits reasonably well, so forgive me.Vital ingredients
To get a perfect mix you need to use the right ingredients. Hopefully these are all items you have in your cupboard already, but here's my summary of what I need from each:- Product Owner - The restaurant owner who decides what sort of food should be on the menu and which customers will want to eat it
- Scrum Master - The restaurant manager who ensures that everything the chefs require is available when it they need it; that the menu isn't too elaborate and who makes sure that the kitchen is kept tidy
- Tech Lead - The head chef who works out how to make the food on the menu, works out the recipes that can be delivered each iteration and makes sure that the food is as expected when it's served to the customers
- UX - The one who makes sure that the food looks attractive and is easy to eat, with the correct utensils to hand
- Developers - The sous-chefs who prepare and cook the food, make sure that it tastes OK and clean the work-surfaces afterwards
- Testers - The tasters who check that the food is really OK to eat and meets health & safety regulations before the customers get to eat it
- DevOps Specialist - The mechanics who make sure that the equipment in the kitchen is adequate and works as expected for the chefs (if the chefs don't do that themselves); that the routes through to the serving area are clear and well understood and that the chefs know how to get their food through those routes
Getting the recipe right
The purpose of the team is to be able to deliver food to the restaurant (i.e. features into the production environment), but it's quite hard to work out the correct recipe. After much trial and error, this is the ideal balance I came up with per team in a scaled Agile framework:- 1 Product Owner
- 1 Scrum Master
- 1 Tech Lead
- 1 UX
- 2-4 Developers
- 1-2 Testers
- 1 DevOps specialist
| Team structure for a single scrum team project |
However, that's a heavy mix of some very expensive ingredients and the kitchen is large enough for several recipes to be cooked by multiple squads at the same time, so if you like you can spread some of the ingredients over a number of dishes. I'd recommend these proportions:
- 1 product owner per 3-5 squads
- 1 scrum master per 1-3 squads
- 1 DevOps specialist per 1-3 squads
- 1 UX per 2 user interface squads (not all squads require a visual element if they are specialised)
- The remaining roles are full time and shouldn't be divided cross-squad or the squads risk losing core cohesion.
| Team structure for a multiple scrum team project |
The result is a team size of around 6-8 FTEs per squad once the kitchen has settled down into a regular pattern. Too small and the team can't deliver enough food to the customers; too large and they keep falling over each other in the kitchen.
Considerations for larger projects
For projects that require larger teams, I'd add a Delivery Manager above the Scrum Masters and a Product Manager above the Product Owners. You may want to add a Business Analyst or two if the project is very large or Product Owners will spend their time dealing with team requests and run out of time to write stories for future work.Bon appetit!

No comments:
Post a Comment