LuckPicker

Building an On-Call Rotation

Weekends and holidays are not interchangeable shifts, and randomness alone will not balance them.

An on-call rota is a draw where the units being distributed are not equal to each other — a Christmas week and a quiet February week are both one shift, and any scheme that treats them as interchangeable is unfair no matter how unbiased the draw is.

An on-call rota distributes units that are not equal to each other. A quiet February week and the week containing Christmas are both one shift, and any scheme that treats them as interchangeable is unfair however unbiased the draw was.

The fix is to count the expensive slots separately and balance those, then randomise what is left.

Not all shifts are one shift

The first step is to identify which slots carry a real cost premium. Public holidays, the week containing a major religious or cultural festival, school holidays for people with children, and — depending on your service — the weeks around known high-traffic events.

Those slots should be counted and distributed as their own pool. A rota that gives one person two premium weeks and another none is unfair by an amount that a random draw over undifferentiated weeks will produce reliably and nobody will forgive.

The remaining ordinary weeks can then be allocated randomly, because they genuinely are interchangeable and randomising them removes the appearance of favouritism from the part where favouritism would be invisible.

  • Identify premium slots: holidays, festivals, known high-load periods.
  • Distribute premium slots deliberately and evenly, tracked across years.
  • Randomise the ordinary weeks, which genuinely are interchangeable.
  • Publish both allocations so the deliberate half is visible.

Fairness is an annual accounting, not a monthly draw

People judge an on-call rota over a year, and they keep a mental ledger with considerable accuracy. A rota generated fresh each month with no memory will produce someone with six shifts and someone with two over a year, and the six-shift person will know.

The chore rota assigner enforces one rule — nobody takes the same slot in consecutive periods — and reports the totals, which is the number that matters. It does not enforce equal totals, and for a rota that runs for a year you should be checking that column rather than trusting the draw.

The practical arrangement is a longer generation horizon. Generating twelve weeks at a time rather than one produces totals that are much closer to even than twelve independent one-week draws, because the round-robin dealing within each generation does most of the balancing for you.

A team of five over a year

  • 52 weeks across 5 people: 10.4 each is the fair share.
  • Independent weekly draws: expect a spread from about 6 to about 15.
  • Generated in 12-week blocks with round-robin dealing: spread typically 9 to 12.

Swaps, and how they break the accounting

Every rota develops an informal swap market, and it is a good thing — people trade shifts around their own lives far better than any generator can. What it does is silently invalidate the totals column that the fairness argument rested on.

The response is not to ban swaps. It is to keep the ledger against the shifts actually worked rather than against the shifts allocated, which means somebody has to update the record when a swap happens.

Without that, the rota is fair on paper and not in fact, and the discrepancy accumulates in one direction — people who are flexible absorb more shifts, and the record shows them absorbing fewer.

What randomising is actually buying you

It is worth being clear that randomisation is not the mechanism that makes an on-call rota fair. Deliberate balancing of premium slots and honest accounting of totals do that work; the random draw only decides the order of the interchangeable weeks.

What randomisation buys is the removal of a specific accusation. A manually assigned rota is fair or unfair depending on the manager, and nobody on the team can tell which — a randomised remainder makes that question unaskable about the part it covers.

That is a real benefit and a narrow one. A rota that is randomised and unbalanced is worse than one that is manual and balanced, because it has an answer to the wrong complaint.

Frequently asked questions

Why not just randomise the whole rota?

Because the slots are not equal. Christmas week and a quiet February week are both one shift, and a uniform draw over them produces real unfairness.

Which slots count as premium?

Public holidays, major festivals, school holidays for people with children, and any known high-load period for your service.

How should premium slots be allocated?

Deliberately and evenly, tracked across years rather than within one. That is the half that should not be random.

How uneven does random allocation get?

For five people over 52 weeks, independent weekly draws typically give a spread from about six shifts to about fifteen.

Does generating longer blocks help?

Considerably. Twelve-week blocks with round-robin dealing typically give a spread of nine to twelve rather than six to fifteen.

How do swaps affect fairness?

They silently invalidate the totals. Keep the ledger against shifts worked rather than shifts allocated, which means updating it when a swap happens.

Should swaps be discouraged?

No. People trade shifts around their lives far better than any generator can. The record just has to follow reality.

What does randomising actually buy?

Removal of a specific accusation about the interchangeable weeks. It does not make the rota fair — balancing and accounting do that.

Tools for this job

Background reading

← All use cases