As a senior manager, one of the most valuable things you can do for any development team is to create an organizational structure that enables stable teams. Permanent, lasting teams; not teams that assemble for a project and then disband to reform around a new project. Particularly if projects are relatively short, it’s highly valuable to keep teams stable, not to chop and change team members frequently.
When people are new to working together, all teams go through a natural process of bonding as a team. One fairly well known way of describing the stages a team goes through is ‘forming, storming, norming and performing’, which in summary means:
-
Forming – when a team is first put together, the team is in the forming stage; they are polite and hold back their views while they start getting to know each other.
-
Storming – this is the stage when people start to realize their differences and have the confidence to assert them. As people express their views, teams can argue about their differences and it’s normal for a team in this stage to have a fair bit of conflict, either directly or behind closed doors. It helps to recognize when your team is in this stage, as it helps everyone to understand what they are going through and that’s it’s completely normal.
-
Norming – this is the stage when people begin to compromise and the arguments or discussions turn into more constructive conversations where people learn to agree. At this stage the team are beginning to learn how to work most effectively with each other and are starting to gel as a team.
-
Performing – it is only when the team has come through all the earlier stages that they can really start performing to their best. The speed at which they get through the previous stages varies from team to team. With some teams, they hit it off straight away and get through the process very quickly and with only a little tension along the way. Other teams remain stuck in the storming process for far too long and it’s a long while before they really start performing as a team.
There are 3 big reasons why stable teams can make a huge difference to the performance of a development team:
-
Teams learn how to work most effectively together
Understanding that all teams go through this natural process is important. It helps managers to realize that it’s important to give teams enough time to get to know each other, and learn how to work well together. When they have worked together for a while, they will have learnt how to optimize their skills and working relationships, and hopefully in the end they will develop a real sense of team spirit, because they actually care about each other as long-standing team members.
-
Teams learn how to optimize their processes
Not only in terms of their relationships, the team will also learn gradually over time how best to optimize their processes. Agile methods help with this by encouraging regular retrospectives where the team regularly discusses (and actions) what went well, what didn’t and what they can do better/differently next time around. This process of continuous improvement helps a team to optimize its performance by eliminating, or at least minimizing, recurring issues that hinder the team’s progress.
-
Teams learn how to predict their Velocity
Another benefit of keeping teams stable and together long enough to optimize their relationships and processes is that they will have a known velocity. Velocity in agile methods is a measure of the speed the team is delivering at, usually measured in points. With new teams, velocity can fluctuate wildly for a little while until it settles down, and at the outset is completely unknown. Knowing the velocity of an established team helps to plan projects more reliably.
So if stable teams is such a valuable concept, it is best to align teams with specific products or product portfolios. That way they can move together from one project to the next without having to re-establish themselves as a team each time, and with the full benefit of already optimized relationships, processes and velocity. The idea here is about assigning projects to established teams, rather than assigning people to projects and forming a new team each time.
So what should these stable, established teams look like?
-
Product focused – being indefinitely focused on a particular product or set of products allows the team to gain real knowledge of the products and also of the domain, without losing this know-how and continuity each time a project is started and a new team is formed.
-
Business aligned– Each team should ideally have clear alignment with one area of the business, in order that they can have a very clear view of priorities and understand the wider business goals of the area they develop products for. This will help them to establish a common understanding and therefore develop stronger business relationships.
-
Multi disciplined– Each team should ideally include every skill required to deliver requests from start to finish. That’s from the first twinkle in the eye for a new idea, right through to releasing the product for its users.
-
Co located – Although it is not always possible or economic, in an ideal world, the team should all be located together, not only in the same city or same building, but sitting in the same space, where they can interact face-to-face frequently as and when required.
-
Shared goal – Ideally a team should be focused on the same goal. Although it’s not always practical to be single purpose, a team that is single minded in its aim to achieve a certain goal has a much greater chance of doing so. A team of people focused on different goals isn’t really a team.
So take a look at your organisational structure. Does it look like this? What could you do to make some of these benefits possible?