Holiday periods are challenging for many software teams. Sales and promotions lead to record levels of load and reliability expectations are higher than ever, while at the same time, team members need the opportunity to enjoy the holiday with friends and family, rather than being stuck on-call!

This challenge can be addressed by manually curated holiday on-call schedules that use shorter than usual shifts to avoiding anyone losing an entire day of holiday time with friends and family at once. While useful for maintaining work-life balance and team happiness, the curation and management of these schedules is inevitably tedious and error prone when trying to manually take into account the constraints and preferences of every team member!

See how On-Call Optimizer makes scheduling holiday on-call shifts simple in this short (3:28) video:

Continue reading for more details of the example rotation demonstrated in the video…

Demonstration Scenario

This demonstration is based around the example of an retail platform serving customers in North and South America. For the Thanksgiving holiday period in November 2023, the company has decided to run an additional on-call rotation providing incident management and escalation support to their existing software teams.

The new rotation is to be staffed by 7 experienced, senior engineers over 7 days surrounding the extended weekend. The engineers staffing the rotation are located in a variety of locations throughout the USA as well as 1 in Europe and 2 in Brazil. Each of the engineers has a variety of individual constraints and preferences for when they are on-call over the holiday period that need to be taken into consideration.

The company has decided to break each day of the week up into 3 shifts; a 12-hour overnight shift during which the system is under less load and tends to be quieter, with two 6-hour shifts covering the busier day time hours.

Demonstration Steps

Three simple steps demonstrate how On-Call Optimizer transforms the burden of manual scheduling in a simple process that delivers an optimal holiday on-call rotation.

  1. Define the rotation schedule and list the participating members.
  2. Connect one or more calendar(s) to provide availability data for each member.
  3. Generate the optimal schedule and export it to supporting tools.

Step 1: Rotation Configuration

The following shows the simple configuration constructed during the demonstration to power this on-call rotation.

# Example escalation/IM rotation for example.com Thanksgiving 2023.

# The rotation is configured in the Pacific time zone.
TIME_ZONE = America/Los_Angeles

# The rotation only covers 7 days, so these parameters are not critical.
HORIZON_DAYS = 7
SCHEDULING_WINDOW_DAYS = 7

# Overnight, morning and afternoon shifts are required as described above.
SHIFT_START = Daily 21:00 BEST_MEMBER  # Overnight shift
SHIFT_START = Daily 09:00 BEST_MEMBER  # Morning shift
SHIFT_START = Daily 15:00 BEST_MEMBER  # Afternoon shift

# All 7 team members are listed here.
MEMBERS = person1@example.com person2@example.com person3@example.com person4@example.com person5@example.com person6@example.com person7@example.com

Step 2: Calendar connection and import of team member availability information

The video above demonstrates the process of connecting a calendar to On-Call Optimizer to supply availability information (either constraints, or preferences for specific time periods to be or not be on-call) for each team member.

The tables below summarize the simulated availability information that has been imported from the configured calendars.

Imported Constraints

Team MemberDayShift(s)DescriptionSource
person1 (Chicago)Wed 22nd NovWhole DayHolidaymarked ooo in calendar
person1 (Chicago)Thu 23rd NovWhole DayHolidaymarked ooo in calendar
person2 (SF Bay Area)Thu 23rd NovAfternoon ShiftThanksgiving Dinnerno-oncall event
person3 (Portland)Thu 23rd NovAfternoon ShiftThanksgiving Dinnerno-oncall event
person4 (Atlanta)Thu 23rd NovAfternoon ShiftThanksgiving Dinnerno-oncall event
person4 (Atlanta)Fri 24th NovWhole DayUnavailablemarked ooo in calendar
person4 (Atlanta)Sat 25th NovWhole DayUnavailablemarked ooo in calendar
person5 (London)Entire WeekAfternoon ShiftUK night vs US dayno-oncall event
person5 (London)Sat 25th NovWhole DayPersonal commitmentsno-oncall event (on personal calendar)
person6 (Brazil)Entire WeekOvernight ShiftNo nightsno-oncall event
person7 (Brazil)Sun 26th NovWhole DayChurchno-oncall event (on personal calendar)

Imported Preferences

Team MemberDayShift(s)DescriptionSource
person1 (Chicago)Entire WeekMorning ShiftMatches CHI working hoursprefer-oncall event
person2 (SF Bay Area)Entire WeekAfternoon Shiftmornings are badprefer-oncall event
person5 (London)Entire WeekOvernight ShiftUK day == US nightprefer-oncall event
person6 (Brazil)Entire WeekMorning ShiftBrazil afternoon is okprefer-oncall event
person7 (Brazil)Entire WeekOvernight Shiftearly riser - this matches my timetableprefer-oncall event

This demonstrates On-Call Optimizer flexibility to consume a mixture of personal commitments, working hour preferences and time zone requirements from various sources as input for the sophisticated algorithms that deliver the optimal on-call schedule.

Step 3: Generate and Export Schedule

Given the above configuration and availability data, the optimal schedule generated by On-Call Optimizer is show below. This schedule avoids the specified constraints for every member, balances load fairly across the team and meets 71% of the supplied preferences too!

# Generated Schedule
2023-11-22 09:00 person5@example.com
2023-11-22 15:00 person4@example.com
2023-11-22 21:00 person3@example.com
2023-11-23 09:00 person5@example.com
2023-11-23 15:00 person7@example.com
2023-11-23 21:00 person5@example.com
2023-11-24 09:00 person1@example.com
2023-11-24 15:00 person2@example.com
2023-11-24 21:00 person3@example.com
2023-11-25 09:00 person1@example.com
2023-11-25 15:00 person2@example.com
2023-11-25 21:00 person5@example.com
2023-11-26 09:00 person6@example.com
2023-11-26 15:00 person2@example.com
2023-11-26 21:00 person4@example.com
2023-11-27 09:00 person6@example.com
2023-11-27 15:00 person2@example.com
2023-11-27 21:00 person7@example.com
2023-11-28 09:00 person1@example.com
2023-11-28 15:00 person3@example.com
2023-11-28 21:00 person7@example.com
2023-11-29 09:00 person6@example.com
2023-11-29 15:00 person2@example.com
2023-11-29 21:00 person4@example.com

This schedule can now be exported to any of On-Call Optimizer’s supported on-call products.

Return to the list of other examples

About On-Call Optimizer

On-Call Optimizer eliminates conflict and frustration from on-call scheduling, improving work-life balance and maximising the willingness and ability of all team members to participate in on-call duties with confidence their personal constraints and needs will be respected by the schedule.

Founded by Matt Brown, a seasoned Google SRE and DevOps leader who has spent more than 20 years participating in and helping run on-call rotations.

Matt's expertise guides On-Call Optimizer's philosophy and feature development allowing your team to benefit from industry leading expertise and techniques that deliver simple, humane on-call scheduling without spending significant amounts of time or money!

Headshot of Matt

Schedule a 30 minute chat with Matt to discuss how On-Call Optimizer can help you today.

Schedule time with Matt

Or visit mattb.nz to read Matt's writing on SRE, DevOps and technology.

Let's Talk!