Software Engineering

Your On-Call Rotation Is Telling You the Truth About Your Architecture

The incident pattern your team keeps normalizing is usually a design signal. On-call pain is one of the clearest ways a system reveals where its architecture is actually weak.

Why recurring on-call pain is often a direct reflection of architectural decisions, and how teams can learn more from incident patterns than from abstract system design ideals.

Jay McBride

Jay McBride

Software Engineer

3 min read

Introduction

On-call rotations reveal truths architecture diagrams politely hide.

A system can look elegant on a whiteboard and still produce miserable nights because the real operational burden lives in coupling, recovery complexity, weak observability, and too many fragile assumptions piled into the same workflow.

Teams often normalize that pain. “This service is just noisy.” “That job always misbehaves.” “Deploys are rough, but we know the dance.”

That is not operational maturity. That is adaptation to design debt.

This article is for teams with recurring incident patterns they have started treating like weather. Your on-call rotation is not only handling problems. It is describing your architecture back to you.

The Core Judgment: Repeated Incident Pain Is Usually a Structural Signal

One bad night can be bad luck.

Recurring categories of pain are almost always telling you something more important:

  • too much coupling
  • weak recovery paths
  • poor failure isolation
  • unsafe deployments
  • invisible dependencies

This is why I pay attention to the same alert family appearing over and over. Not only because it is annoying, but because it usually points to an architectural truth the team has not yet priced in.

How This Breaks in the Real World

The easiest mistake is treating incident response as purely reactive labor.

Fix the symptom. Recover the queue. Restart the worker. Add a temporary script. Survive the week.

That approach is understandable when everyone is busy. It is also how teams become extremely familiar with the consequences of design decisions they never circle back to challenge.

At some point, the pager stops being an operational issue and becomes an architecture review written in timestamps.

A Real Example: The Same Service, Different Incidents, One Real Problem

I watched a team spend months dealing with what looked like different incidents:

  • request spikes
  • stale data
  • retry storms
  • deployment fragility

Each event had its own immediate cause. But the same service sat in the middle every time because it had become the point where too many concerns met:

  • expensive reads
  • write-side orchestration
  • third-party sync logic
  • user-visible state calculation

The service was not unlucky. It was overloaded as a responsibility center.

On-call pain was telling the truth before architecture discussions did.

What I Would Do Instead

I want teams to review incident patterns by category, not only by one-off postmortem.

Ask:

  • which component keeps appearing?
  • what dependency chains show up repeatedly?
  • what kind of recovery keeps requiring human memory?
  • where are we leaning on fragile coupling?

That turns on-call from a survival function into a design feedback loop.

It also helps the team distinguish noise from signal. Some alerts need tuning. Others need architectural humility.

Closing

Your on-call rotation is telling you the truth about your architecture because operations eventually pays for every elegant shortcut and hidden dependency.

If the same pain keeps surfacing, listen.

The pager is often less confused than the roadmap.

Share

Pass it to someone who needs it

About the Author
Jay McBride

Jay McBride

Software engineer with 20 years building production systems and mentoring developers. I write about the tradeoffs nobody mentions, the decisions that break at scale, and what actually matters when you ship. If you've already seen the AI summaries, you're in the right place.

Based on 20 years building production systems and mentoring developers.

Support my work on Buy Me a Coffee
Keep Reading

More Articles

/ 3 min read

Retries Are Not Reliability

Repeating a failing action can be useful. It can also multiply load, duplicate side effects, and hide the fact that the system was never designed to fail safely.

Read article
/ 3 min read

Your Architecture Is Probably Too Clever for the Team You Actually Have

Architecture should be designed for the team that has to operate it, not for the fantasy team you wish you had.

Read article