How to set up a team structure in an Organisation

Team Topologies

“How does products gets successfully delivered?”

“By the team members who worked on it, of course!”

You may think, what a stupid, trivial and impertinent question it was

Successful teams don’t just happen, they are formed through careful deliberation

The truth is, teams aren’t a set of people randomly grouped based on skillsets. To build a product, you would need multiple teams coming together, aligning on API contracts, building independently and then integrating and releasing together or separately based on the software architecture

Now if you are tasked as the CXO to start with a clean slate and set up a team structure in an organisation of 200 engineers, how would you go about it?

Sit back and think deeply, we often take the organisation structure for granted. Most people have got into an organisation which has an established structure and you work along the existing guard rails

So coming back to the 200 headstrong engineers, how many teams would you have?

Just one team of 200 engineers? Surely no! How would you differentiate responsibilities on who builds which part of the system

Shall we just split into 20 teams of 10 members, because somewhere you’ve read about the magic Dunbar number? Huh, but we still have the same problem that we faced with the 200 engineers in one team. So this too doesn’t solve the problem

Let’s take a step back and consider, what principles should we consider while defining the team structure?

Principles for Team Structure

Lets take a leaf from good software architecture and apply them to team structure

  • The teams that we form should have high cohesion. That’s a fancy way of saying, group related things together
  • The teams should also have loose coupling. This means, we need a structure where everyone needn’t have to talk to everyone else. There should be clear boundaries and as little communication as necessary, for each team to produce their work
  • The cognitive load on the team should not be high. Cognitive load is the amount of working memory a team needs, consider it similar to a RAM

Fine, so what framework can you apply to decide on the team structure?

“Wait a minute, are there multiple frameworks?”

Team Structures suggested in PMP

If you have done your PMP, you would be familiar with these team structures

  • Functional
  • Projectized
  • Matrix
    • Strong
    • Weak
    • Balanced

Lets quickly understand them before looking into software specific structures

Functional Structure

This is commonly found in traditional as well as many new age organisations. Here you group based on areas of specialisation i.e. Finance, Sales & Marketing, Development, QA, etc. Most communication happens within each function

Projectized Structure

In this structure, you organise the whole company based on projects. Once a project is over, people are assigned to another project. The communications in this structure is primarily within each project

Matrix Structure

The matrix is a combination of the functional and the projectized structure. In this type of structure, the team members report to the functional manager as well as the project manager. The communication happens at both levels. Based on who has more control i.e. the Functional Manager or the Project Manager, Matrix is divided into the following

  • Strong Matrix: control remains with the project manager
  • Weak Matrix: control remains with the functional manager
  • Balanced Matrix: control is balanced between project & functional manager

Conway’s law

Does organisation structure influence teams? Conways law throws in light on this

As per Conways law, the organisational design will prevail over the software architectural design

What this means is, the software architecture will mimic the organisation structure. You would find software boundaries around the teams that you have formed. So rather than the most optimal architecture, you would find teams defining architecture to suit their team structure

Conway advises us that we need to understand what software architecture is needed before we organise our teams

How should a software team look like?

As per the authors of Team Topology, they suggest four types of team structures considering the cognitive load for a team as well as reducing the load on communication

Stream aligned teams

A stream aligned team is a focussed team which is working on delivering a product or a service or a feature. Their main focus is in building something meaningful and releasing it quickly to the market

The other three types of teams, work towards reducing the load on the stream aligned teams

Platform teams

A platform team is focussed on building capabilities which the stream aligned teams can use and re-use

Therefore any common capability that maybe needed as part of your product or products would be a good candidate. Identifying & building the right set of services for a platform will help the organisation save cost in the long run as well as speed up deliveries of stream aligned teams

Complicated subsystem teams

Complicated subsystem teams are those teams which require specialised knowledge

The goal for a complicated subsystem team is to reduce the cognitive load on the stream aligned teams when their services need to be used

Enabling teams

Enabling teams are specialists in an area who help in bridging the capability gap. The goal of this team is to guide the stream aligned teams and eventually make the stream aligned teams self sufficient

Summary

After reading this article, you should be in a fair position on understanding what aspects needs to be considered when defining an organisation structure as well as some of the frameworks that are available

I will separately discuss the different team interaction modes in a separate post

If you would like to dive in deeper, you ought to read Team Topologies. You can also read my other posts on teams such as 5 traits to get the best from your Agile team, How to ensure team commitments are honoured by Agile teams

If you liked this post, do comment & share and signup to my newsletter