DEV Community

Cover image for The Operating Model for Small Engineering Teams
Wolyra
Wolyra

Posted on • Originally published at wolyra.ai

The Operating Model for Small Engineering Teams

A small engineering team can ship remarkably well. The coordination overhead is low, decisions happen quickly, and everyone can hold the system in their head. That advantage does not persist automatically. We have watched teams of eight that moved faster than teams of eighty, and teams of eight that had somehow manufactured all the coordination problems of teams of eighty without any of the benefits.

The difference is the operating model. Not the technology stack, not the deployment tooling, not the project management software. The practices that govern how work is owned, reviewed, shipped, supported, and learned from. These practices scale cleanly from five to fifteen engineers. Past fifteen, they almost always need to change.

This article is about what works in the five-to-fifteen range, and the signs that a team has grown past it.

Ownership: primary owners, not teams

Every service, every major module, every integration should have a primary owner. A named engineer, not a team. The primary owner is the person who gets pinged first when something is broken, who reviews changes that are not their own, and who is responsible for the long-term health of the thing they own.

This sounds obvious, but many small teams skip it. They assume “the backend team owns the backend.” What happens in practice is that when something breaks in a specific service, everyone on the backend team assumes someone else is looking at it. No one is. The mean time to assignment is longer than the mean time to fix.

Ownership should be explicit, documented, and refreshed when people change roles. A second owner — not a backup, an actual co-owner who is on-call together — makes the model resilient to one person taking a vacation.

What breaks past fifteen: with too many services per owner, the primary-owner model becomes theatre. The owner cannot actually keep up with everything they own. This is when small teams should either reduce the service count or move to team-based ownership with formal interfaces.

On-call: lightweight, predictable, respected

A team of five to fifteen needs an on-call rotation. Not because the volume of incidents justifies it, but because the alternative is worse. The alternative is that whoever notices first deals with it, which concentrates the pain on the most responsive engineers and leaves everyone else disconnected from the operational reality of what they are shipping.

Good practices we see in this size range:

  • A weekly rotation, starting and ending at a predictable handover time. Nobody wants to inherit an incident at the start of a weekend.
  • A clear escalation path. If the on-call engineer cannot resolve the issue within a defined window, there is a named person to call next.
  • On-call work counts. Time spent handling incidents reduces committed project work for that engineer, and the rest of the team knows it.
  • A postmortem for every incident that woke someone up, even if the cause turned out to be a known issue. The point is not blame, the point is to add to the runbook.

What breaks past fifteen: the on-call burden concentrates on services with high incident rates, and the team members assigned to those services burn out. This is the signal to invest in reliability work, not to rotate more aggressively.

Code review: calibrated to the change, not the author

Small teams can use code review pragmatically because trust is high. Not every change requires the same level of review. A typo fix in a comment does not need two approvers. A change to the authentication logic needs more than one set of eyes regardless of who wrote it.

A model that works: define which files or directories require review, and require it for those regardless of author. Allow self-merge for changes outside those areas when the author is confident. Trust is the default, and the review requirement is about risk, not about hierarchy.

This model breaks badly if abused. The signals that it is being abused: recurring incidents traced to changes that self-merged, authors consistently bypassing review by claiming “it is just a small thing,” and a culture where the most senior engineers never get their own code reviewed. All three indicate the model needs tightening.

What breaks past fifteen: the shared understanding of what is risky fades as the team grows. At that point, explicit reviewer requirements by area become necessary, and the lightweight self-merge model has to retire.

Deployment: frequent, boring, reversible

Small teams should deploy often. Several times a day is normal and healthy. Weekly or monthly release trains are an anti-pattern at this size, because they bundle risk and make every deployment a production event.

The practices that support high deployment frequency in a small team: automated deployment pipelines that do not require special knowledge to operate; a clear rollback path that can be exercised within minutes; feature flags for anything that might need to be turned off quickly; a deployment notification that goes to a channel everyone sees, so a sudden metric change has context.

Approval should be lightweight. The engineer shipping the change is responsible for verifying it works. The team trusts that responsibility, and the automation catches the obvious problems.

What breaks past fifteen: the rate of changes per day exceeds what a single deployment channel can handle, and incidents pile up when someone else’s change interacts with yours. Staged rollouts and per-service deployment pipelines become necessary at that point.

Postmortems: blameless, written, shared

Every incident that affects customers or wakes someone up gets a postmortem. Small teams often skip this because “everyone already knows what happened.” The problem with that logic is that knowledge walks out the door when someone leaves, and incidents that seem unique at the time often turn out to be patterns when reviewed in aggregate a year later.

A lightweight postmortem format that works at this size: what happened, timeline, what the customer experienced, root cause, what we are changing. No more than a page. Written within a week. Discussed in a regular meeting where the team reads them together.

Blameless is the critical word. The point is not to identify who made the mistake. The point is to identify what in the system allowed the mistake to produce an incident. The moment postmortems become about finding someone to blame, they stop producing honest information, and the whole practice collapses.

What breaks past fifteen: the volume of incidents exceeds the capacity to review them in a single meeting. At that point, postmortems need a triage process and a clearer distinction between ones that need full team review and ones that can be handled by the owning group.

What scales cleanly from five to fifteen

The practices above are designed to work across the range because they rely on a small number of shared conventions rather than heavy process. A team of five can run them with almost no overhead. A team of fifteen can run them with about one person’s time in meetings and writing postmortems. The marginal cost per engineer is small.

What also scales: the habit of writing things down. Decisions recorded in short documents, runbooks maintained by the people who use them, architecture notes updated when things change. Small teams often underinvest here because “we all know.” Teams that grow past fifteen find out that the people who knew have moved on, and no one writing now has the context.

Signs you have outgrown the model

Past fifteen engineers, the signs are usually obvious if you are watching:

  • Code review by the most senior engineer becomes a bottleneck, and changes pile up waiting for approval.
  • On-call incidents stretch longer because the person on call does not know the affected service well enough to diagnose quickly.
  • Deployment conflicts become a weekly event — two teams shipping related changes that break each other.
  • Decisions that used to happen in a hallway now require a meeting, and the meeting calendar fills up.
  • Onboarding a new engineer takes longer than a quarter to reach full productivity.

When these signs appear, the right response is not to scale the existing model harder. It is to move to a model designed for larger teams: team-based ownership with clearer interfaces between teams, explicit reviewer requirements by domain, per-service deployment pipelines, and a writing culture strong enough that new engineers can learn from documents rather than from people.

The mistake to avoid

The mistake we see often is that a small team, proud of how little process they have, refuses to add any as they grow. The result is not a fast team. It is a team where nobody knows who owns what, deployments collide, incidents blow up for lack of a runbook, and the best engineers start leaving because the operational pain is unbearable.

The opposite mistake — importing enterprise process into a team of eight — is worse in a different way. It produces a team that cannot ship anything without three meetings and four approvals, and the advantage of being small is wasted.

The right answer is a small, disciplined set of practices that serves the team at its current size and gets honestly reviewed when the team grows. If the review never happens, the model will break. If the review happens and nothing changes, the team is about to find out which parts of the model were holding everything together.

Top comments (0)