Slashdot Mirror


In Search of the "Perfect" Pager Rotation?

jSpectre asks: "At my new job the Unix SA team has increased from 5 to 7. We're trying to work out a new, rotating on-call schedule and everyone has 'perfect' but conflicting ideas. Twelve weeks on and 6 off, 25 weeks on and 10 off. I thought someone out there must have come up with the perfect formula given N number of people you could rotate through the weekdays and weekend most efficiently. My google and web searches have come up with nothing. Does anyone know of a good formula/solution? The requirements are this, we have 7 people (but the forumla should ideally apply to N people) who should rotate through the weekdays (a 24 hour period) and the weekend (a 48 hour period). There is a desginated primary and a secondary person. They should be on for a few weeks and off entirely for a few. Sound like a good thesis/research problem for someone? By the way, Google comes up with a lot of people's schedules if you search for pager rotation. Tisk tisk."

14 of 70 comments (clear)

  1. 7 people, 7 days in a week . . . by Mordant · · Score: 4, Funny

    Hmmm - maybe we're onto something . . . ;>

  2. Some of us... by infernalC · · Score: 4, Funny

    ...don't worry about pager rotations because our datacenters never have failures, you insensitive clod!

    1. Re:Some of us... by fm6 · · Score: 3, Funny

      ...don't worry about pager rotations because our bosses don't like overtime, you insensitive clod!

  3. In search of the perfect lotto number... by $exyNerdie · · Score: 5, Funny

    I want to win the Powerball® jackpot which is estimated at $250 million.
    Does anyone know of a good formula/solution? The requirements are this, I want to win this Powerball® jackpot (but the forumla should ideally apply such that out of the N times I play, I should win at least N-1 times). Sound like a good thesis/research problem for someone? By the way, Google comes up with a lot of pages if you search for lucky Powerball® numbers. Tisk tisk.

  4. Auction it by A+nonymous+Coward · · Score: 5, Interesting

    Give everyone points per week, either same for everybody or based on seniority. Then set up a schedule in advance, whoever has the most points gets the duty. When duty is taken, points are removed. People can of course volunteer for duty, and if multiple ones do, low points get first choice. Allow points to go negative.

    Or something like that. I'm sure it could be an interesting exercise designing the points system and implementing a web page to handle it.

    One more thing, you need some kind of deadline, no changing your mind within a week of duty. But if you get someone to swap, allow that.

    Now if you are going to pay for the duty, you want the weekly points awarded based on how much different shifts cost. Maybe factor in seniority also.

    1. Re:Auction it by Eneff · · Score: 5, Interesting
      ding ding ding!


      mod points just expired, though. Damn!


      I'd actually put a twist on the idea... Instead of losing points, have people gain points for doing these duties. (You start at a base 50 points, for example, then auction down for each 4 day/3 day or 5 day/2 day shift.)


      now here's the rub... you reverse auction for desirable days/weeks off. (Christmas, Thanksgiving, et al) People use accumulated points to bid for it off. The two that bid the least are primary and secondary, respectively. Those two would then get some percentage of the points bid.

      So, for example, I'd have no problem working Christmas and Easter, but I'm taking the two weeks surrounding my birthday off. (This could conflict with Easter, but you get the point.) I'd also bid for the week containing labor day, for example.

  5. This Could Really Burn Some on Holidays by TheWanderingHermit · · Score: 3, Insightful

    Maybe you could work out a schedule based on the calendar year. The current one could seriously frustrate some people if they are on through the entire holiday season. Thanksgiving, Christmas, and New Years could easily come within 6 weeks of each other. It might be entirely possible some people are on through this whole time and others are off that entire time. If it's not balanced off the next year and some of the same people have to stay on call a 2nd year through that time, I would think it could lead to hard feelings.

    While the holidays may not effect your business, they do have a storng emotional effect on most staff and it might help to set up the schedule to treat people fairly not just in regular time on/time off, but also in holiday time. For example someone who works Christmas or a 3 day weekend might get an extra week or weekend off some other time.

    I've never had to deal with this in the tech field, but when I was in property management, I know anyone on call over holidays always felt at least a little frustrated, but at least they knew they all had to deal with it more or less equally.

  6. An idea by blate · · Score: 3, Interesting

    Let's start with the assumption that you don't care if you're on-call, so long as you never get paged to do something during non-business hours.

    A simple system that would work for N people might be the following:

    1. Number the people 1..N (or 0..N-1 if you're feeling geeky).
    2. The pager starts with person 1. If you need a secondary or tertiary (sp?), then assign to persons 2, 3, ...)
    3. If person j takes the call passes the pager on to the next unallocated person in the list, who takes on j's priority (i.e., primary, secondary, etc.); if the primary takes the call and you have secondaries, etc., the secondary becomes the primary and the next unallocated person on the list becomes secondary.
    4. Goto 3 (couldn't resist)

    Assuming that calls are evenly distributed, then you only have to take a call every N*(call inter-arrival time) units of time.

    You could change around the "who gets primary next" rule in various ways.

    Assuming that you don't get more than one call on a weekday or over a weekend, this system should be reasonably fair.

    1. Re:An idea by TheWanderingHermit · · Score: 3, Insightful

      Let's start with the assumption that you don't care if you're on-call, so long as you never get paged to do something during non-business hours.

      Speaking as someone who had a real jerk for a boss and was on call for 11 months at one stretch, I don't think that's a valid assumption. While it seems like there's no problem unless you're called, being on call can be a stressful experience. It means you can't go out of town and you have to be aware that any activity you plan may be interrupted. For me, it meant I had a full spring, summer, and fall where I could not go on one single long (20 miles or longer, which put me out of quick "response" range) bike ride, which is something I love to do.

      There's another problem with this overall idea, as well. If you move in an unpredictable rotation like this, then you never know if you're going to be on call for an upcoming weekend. It means you basically can't plan on going away for a weekend until Friday. If you have a lot of friends and an active life, that is unacceptable.

  7. best "rotation" by kasper37 · · Score: 3, Funny

    I've found that the best rotation is the everyone-gets-paged-and-if-you-don't-see-it-fixed- within-a-few-minutes-find-a-terminal rotation.

  8. Not really a rotation, but.... by krangomatik · · Score: 3, Interesting

    We all carry nextel phones or pagers and get text messages from our alerting system when things go down. When I see something go down and I'm somewhere I can vpn in I'll usually do so and check to see if any of my coworkers on actively vpn-ed in and give them a beep to see if they are already working on the problem and see if they need any help. If there isn't anyone looking at it and I'll usually jump on in and get to work and the next person who takes a peek will see me and we'll talk they'll get a feel for what's going on, the extent of the problem, etc. This works pretty well for us (we are small, 10 person group and pretty much know where each other are the evenings/weekends). We also have an answering service that has a formal 'on call' list, so if a customer calls with a problem they'll just call down the list until someone answers. We rotate the list around every quarter, or therabouts, so the 'primary' person changes. I often volunteer for the top spot on the list because I'm pretty flexible and don't have a wife/kids and don't mind being called. This works out well because if I'm not able to fix it we have a list they can call down and everybody pulls their weight so no one really feels bad if they have to hand it off down the list now and then. I'm guessing that since you are looking for a more formal schedule that this sort of 'loose' system may not be the right answer for you, but it may be the right answer for others. We have separate call out lists for some more specialized systems (oracle, router folks, mainframe, telecomm) so that when there is a problem with a specialized system you get the more experianced people first. Our managers are also at the bottom of the list, so if all else fails the call will go to a person who has a complete phone list and a good idea of where people are so they can start call people's alternate numbers and what not. This system also allows for quite a bit of flexiblity people. Our 'tradespeople' (aka union) side of the house where there are MOU's or something relating to off hours support has a more formal policy, but they also have financial incentive (time and a half type stuff) for being on call, so there isn't usually a lack of people willing to be on call. One thing that we have considered, that may work for you, is dumping our answering service for a PBX based application. That way customers could be routed through a menu tree (yeah, people just love those...) that would identify the area of the their problem and then page out the people on call for that area. You can tie something like that in with your calandering/scheduling system so that only people who have time marked as free are paged. You would have to incorperate some sort of checking to ensure that you had at least a primary and alternate for any given time, but it should be doable. I am coming from a shop where people are generally will to be on call when possible, so we don't often run into a situation where someone has to give up something just to be on call, so YMMV with this type of system.

  9. The way we do it... by onjay · · Score: 4, Insightful

    This is a perpetual scrum in medical residency, too. We can't do back-to-back calls, which makes it harder than, "You cover this weekend."

    0 - Get a big ass calendar with holidays and some pencils. Decide how many days/year each person will have to work. Break them down into 4 or so categories: weekday, friday, weekend, holiday are ours. Friday is annoying because you can't go out but not as bad as an 24h (weekend/holiday) day. If weekends are light, you could just have "weekday" and "friday + weekend" categories. Anyway, share around evenly.

    1 - Holiday parity is a good place to start. Noone wants to get screwed both xmas and new year's. Ask for preferences and nail down someone for coverage for these and Labor day, the 4th, T-day, etc. They can trade later.

    2 - Map out the conferences and people's known vacation blocks, anniversaries, exams, etc.

    3 - Some people haven't adapted to a totally random fill pattern of coverage, so give people a choice of contiguous blocks/easy to remember patterns (M/W for the month of ___) or irregular blips.

    4 - Schedule the parts where many are out of the office with whatever it takes. Subtract these and the holiday days from the totals each person has to work. Schedule the pattern-desiring people and people with evening classes/outside commitments/inability to show up if on a random schedule. Again revise the totals.

    5 - Start marching through at the beginning, rotating through the N people available. Keep running track of the fridays/weekends, do a little stagger to keep the weekends from being the same person on the same day, and it will start filling out.

    6 - Think outside of the month to fit those last days in. You don't have to fill months contiguously or in date order. If there is a new employee, it may be best to slack off a bit on them (no weekends) at first until they fill out their KB; this gives you some flex.

    N - Nothing you can do will make the perfect schedule. You have to have one master list that is the last word, and on which everyone must record their trades. Leftover days are best distributed to the people who took the least holiday days or the dues-paying new hires.

    N+1 - Write some open source software to do this. Acrimony might be less, and the legibility would be better for sure.

  10. This problem has already been solved. by MarkusQ · · Score: 3, Funny
    This problem has already been solved. You should be searching under more general terms (e.g. "fair scheduling algorithms") rather than problem specific terms like "pager rotation," that's all.

    For example, let's say you have N people working (and all are interchaingable, to start with). That means that each of them should be on call for K = 1000/N milliseconds out of every second (on average). Provided there are less than 500 people to be scheduled, you can accomplish this by rounding K to an integer (for the case where there are more that 500 people to be scheduled, either schedule them for one millisecond each, or go to a finer grained time-base). One important point to remember is that you must resource lock the call to the person in << K ms to avoid race conditions (which can garble text messages and result in an annoying high-pitched noise if two or more people try to return the call simultainiously and get multiplexed--

    Hot damn, my run just finished.

    G'night all...

    -- MarkusQ

  11. Try a DA Form-6 by oni · · Score: 4, Informative

    The Army had to solve this problem eons ago in order to have rotating guard and staff duty schedules. Thier solution is the DA Form-6. Look it up. It has all the features you specified.