DevOps as Matrix Management: software doesn’t mind
Multidisciplinary teams in business
We want teams to share a common purpose. They need a wide set of skills. If we lead by purpose, then we can’t lead by skill, so how are people going to be evaluated on their professional competence? How will they grow?
Matrix management. People are led (guided in what to do) by program managers focused on shared purpose. Additionally, they participate in a professional, skill-based hierarchy where they grow in how to do their work best.
Some challenges: people can feel like they have two bosses. Professional leadership can feel like they don’t have control over the people they’re responsible to grow. Program managers don’t have full control over hiring or training, even if this team’s particular needs are unusual.
Multidisciplinary software teams
A complete software development team needs to take responsibility for operations, delivery, observation, security, scaling, testing, accessibility, user experience, so much! How do we add all these skills to one team? With tooling.
We abstract hardware behind an API. We build self-service spin-up tools. We make builds automatic. The professional leadership in these aspects of software are the people building these tools: whether in the same team or in Development Experience teams. These same people serve as consultants when teams need more expertise.
The product teams decide what they need to do, and these support teams help with how. When a product team has special needs, they can take more control and make their own delivery, for instance. Until then, people can learn operations at a high level, not the whole stack.
It is like matrix management, except the contributors stuck in the middle are software, not humans! They don’t mind having one team push their buttons and another change their code. The team behind the tooling feels control. For special needs, the product team is free to “hire” and train their own software.
In business, matrix management lets multidisciplinary teams share a purpose, while still helping people grow in their professional skillsets. In software, DevOps means each team changes and operates their software, with the help of continually improving automation.