Help me Build a Better ScheduleJune 7, 2019 5:54 AM   Subscribe

I've been put in charge of making a schedule for my group of employees. It's hard, and I'd like to incorporate ranked choices.

I have a group of 10 employees.
A minimum of one, maximum of two people can be off every week.
People take from 5-10 weeks of vacation in a 50 week year.
Not everybody can get spring break, christmas, new years, etc, off.

I'd like to make a system where people can submit ranked choices to produce the fairest and happiest outcome.

I'd like the system to encourage people to be flexible (i.e I'd like week 10 off, but I'm ok with 10-13)

How can I do this? Is there some kind of program or mathematical model that can do this? Maybe some kind of spreadsheet?
posted by cacofonie to Computers & Internet (9 answers total) 1 user marked this as a favorite

As stated, this is some sort of integer programming problem. However, if you solve to minimise some measure of disatisfaction, you're not guaranteed to get a schedule that makes sense--there are probably more constraints than "how many staff do we need" and "who wants the day off"--one person can only work for X days in a row, people probably like consecutive days off more than one day off, one on, one off, etc.
posted by hoyland at 6:13 AM on June 7 [1 favorite]

Would everybody put their requests in at the same time, for the whole year? Do they have to request whole weeks?

It kinda sounds like something you could do with an auction (with Monopoly-type non-real money) or a draft, like in fantasy sports (baseball or American football). You could even allow people to “pick up” empty weeks and “drop” other weeks back to general availability as the year goes on, or trade weeks.

It feels kinda weird to do this for people’s real lives instead of for a silly game though. Maybe do a couple of practice drafts first to see if it works without antagonizing everyone.
posted by Huffy Puffy at 6:48 AM on June 7

Group A has one set of holidays guaranteed off and first half of the year primary choices of days off. Group B has the other holidays guaranteed off and the second half of the year with primary choices of days off.

Next year switch off.
posted by IndigoOnTheGo at 7:00 AM on June 7

I like what IndigoOnTheGo is saying but I think alternating set holidays off instead of dividing up the year like that because the people who start the year may not make it to the second half of the year.
posted by dawkins_7 at 7:36 AM on June 7

Honestly, for only ten people I think you're better off doing it manually. Have them submit preferences (things like major holidays that they really don't mind working on at all; unusual days that they really really really want off, and so on), work out as much as you can to satisfy everyone's preferences without conflicts, and then if necessary go back and ask for ranked preferences where there is a conflict. I don't think you're likely to develop an automatic system that will be less trouble and produce results as good as using human judgment at that scale.
posted by LizardBreath at 7:37 AM on June 7 [7 favorites]

I mean, 'set of holidays' isn't a thing that's constant from person to person. You may very plausibly have, e.g., Jews who don't mind working Christmas every year, so long as they can get the High Holy Days off -- giving them an equal number of Christmases off to be fair, while making them use up discretionary days off for their real holidays, is a waste.
posted by LizardBreath at 7:39 AM on June 7 [6 favorites]

How does sick time or having someone quit fit in into this? Is that "max of two people off" a really hard limit that would mean people are asked to cancel vacations?
posted by the agents of KAOS at 10:10 AM on June 7 [1 favorite]

How far in advance are you making this schedule, and what happens if someone needs to switch?

I had to do this for a group of 18, with some additional constraints on who was allowed to be where. Some services needed 24/7/365 coverage, some were M-F 8-5, and we tried to even those out as much as possible. We did this in Excel, requesting vacations and weekends off in March for a schedule that went Sept-August of the following year.

It nearly broke me.

The hardest thing was not setting up the schedule in the first place, although Excel is not the greatest at ensuring even coverage (if person A has 5 weeks of service X and person B has 4 weeks, you bet there were complaints). We asked people to tell us if there was a REALLY important week or weekend (e.g. "I need June 6 off because I'm getting married" level of important), and while we did our best, it was still impossible to honor everyone's needs and wants, and we made that clear upfront. (There were still complaints.)

No, the hardest thing was accommodating unexpected changes. One person had a family emergency and had to be out for a couple weeks. Shuffle shuffle shuffle. Another person had a visa issue and was not allowed to work for like three months. Shuffle shuffle shuffle.

All told, doing and updating the schedule manually/in Excel consumed 5-6 hours a week for the better part of the year. The following year, the department switched to Qgenda, and though I never used it myself, the schedulers that came after me thought it worked well. There are a bunch of other dedicated scheduling platforms out there. Use one of them and save your brainpower for the inevitable arguments that will arise.
posted by basalganglia at 5:17 AM on June 8 [1 favorite]

We have the "primary vacation" concept. You can have as many continuous blocks of leave during the year you want (and have earned leave for), but only one can be designated your Primary Vacation. People's primary vacation trumps everyone else. It turns out that if you ask for everyone's primary vacation dates by some early-in-the-year deadline, the conflicts are minimal and usually easy to solve.

If 3 people ask for the same week off as primary vacation, you have a tiebreaker system like seniority, but allow the person who gets bumped to designate a different time as primary vacation, which might bump someone else who didn't say it was their primary vacation.

Everything else, you just go strictly by first leave slip turned in takes precedence. That discourages late surprises, which is a good thing.

You could keep track of who got disappointed and try to rotate it year-by-year, but that's usually unnecessary unless your team is remarkably stable and you expect that 10 people to be the same forever. Then you might run into the problem of the two most senior people monopolizing the most desirable vacation time, like July 4 week, every single year. But even that's ok, because they wouldn't then have dibs on Christmas, etc.
posted by ctmf at 5:28 PM on June 8