On-Call Optimizer
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…
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.
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.
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
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.
Team Member | Day | Shift(s) | Description | Source |
---|---|---|---|---|
person1 (Chicago) | Wed 22nd Nov | Whole Day | Holiday | marked ooo in calendar |
person1 (Chicago) | Thu 23rd Nov | Whole Day | Holiday | marked ooo in calendar |
person2 (SF Bay Area) | Thu 23rd Nov | Afternoon Shift | Thanksgiving Dinner | no-oncall event |
person3 (Portland) | Thu 23rd Nov | Afternoon Shift | Thanksgiving Dinner | no-oncall event |
person4 (Atlanta) | Thu 23rd Nov | Afternoon Shift | Thanksgiving Dinner | no-oncall event |
person4 (Atlanta) | Fri 24th Nov | Whole Day | Unavailable | marked ooo in calendar |
person4 (Atlanta) | Sat 25th Nov | Whole Day | Unavailable | marked ooo in calendar |
person5 (London) | Entire Week | Afternoon Shift | UK night vs US day | no-oncall event |
person5 (London) | Sat 25th Nov | Whole Day | Personal commitments | no-oncall event (on personal calendar) |
person6 (Brazil) | Entire Week | Overnight Shift | No nights | no-oncall event |
person7 (Brazil) | Sun 26th Nov | Whole Day | Church | no-oncall event (on personal calendar) |
Team Member | Day | Shift(s) | Description | Source |
---|---|---|---|---|
person1 (Chicago) | Entire Week | Morning Shift | Matches CHI working hours | prefer-oncall event |
person2 (SF Bay Area) | Entire Week | Afternoon Shift | mornings are bad | prefer-oncall event |
person5 (London) | Entire Week | Overnight Shift | UK day == US night | prefer-oncall event |
person6 (Brazil) | Entire Week | Morning Shift | Brazil afternoon is ok | prefer-oncall event |
person7 (Brazil) | Entire Week | Overnight Shift | early riser - this matches my timetable | prefer-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.
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
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!
Schedule a 30 minute chat with Matt to discuss how On-Call Optimizer can help you today.
Or visit mattb.nz to read Matt's writing on SRE, DevOps and technology.
Thanks, I'll get back to you as soon as I can!