I wrote a schedule for a team of ~20 co-workers for a 24/7 support shop. This required people change shifts / sleep schedules often.
The schedule was a point of contention for years.
After I volunteered to write the schedules, in 3 months I had everyone happy.
It was not hard.....but....
The catch was that I did it manually for a month at a time with a wide ranging amount of changing priorities that would be hard to program ... and the key was COMMUNICATION, and working with people and their personal preferences.
One of the senior teachers in my school used to organise schedule for 1000 pupils and 50+ teachers. With some minor things everything worked pretty damn well.Then they decided to get some software to do the same.Never ended up working...
Humans might be kinda slow and expensive, but their ability to handle a lot of variable data and inputs and weigh them dynamically, filter out absurd results before applying them, and etc is pretty amazing.
Like if someone comes to me and says "what if we... did X with the schedule". I could tell them how to do that and not to right away. The code would have to be changed / rewritten and tested and fail at it each time... so much mess.
Especially when scheduling other humans... the humans being scheduled can smell a computer scheduling a mile away and IMO they expect the worst at that point. They're not necessarily wrong.
I suspect that the big thing there is negotiation and social skills. It is not just about making schedule, it is also about talking with people, making them compromise, making them happy despite not gaining everything they wanted, explaining them that what they wanted they wont like actually, making them understand others too.
This is a good point on social aspect: no software can go to a couple of teachers and say: look, there's an overlap and we've only got one classroom,how about you do x,y,z and then next time you get x,y,z.
I think ultimately if you're working with humans the question is if you want the schedule to solve a sort of math problem for you ... or if you want folks to be happy.
They are very much not the same thing and the dynamic nature of keeping people happy and filling a schedule is extremely difficult to account for with software.
Computers solve the legible problems. But scheduling is one where the problems lack in hard specification, and plans involve several "layers" of prioritization, so what's called for is approximate results that avoid failure modes, which is something a skilled human does pretty well.
I do think that software speeds up some parts of the process, but like so many automated processes, it's computer assistance, not computer intelligence.
I was reading some old literature a few months ago on this related to police staffing where union issues had to be taken into account. It seems adding social penalties is a way to do this algorithmically
You’re giving me flashbacks to some software I worked on a while ago that had to use rules from three different collective agreements from nursing unions. Turns out writing business logic for rules that aren’t internally consistent is a challenge, and unlike most LOB projects I’ve worked on, the procedure can not be amended until the next round of bargaining.
They are far worse at it than humans. This is the difference between narrow AI and general AI. Humans can do millions of different complex tasks, and can adapt when the situation changes. Computers are terrible at updating their models automatically based on new information, as they don't have understanding of the bigger context. Worse still, software today has no way of analyzing and adjusting the assumptions it is operating off of.
People are (currently) better than computers at updating their models but I don’t think we’re particularly great at it. Look at how many business run on the “this is how we’ve always done it” model
Assuming you can get someone highly competent to do scheduling, which isn't all that likely. More likely you'll get someone who both produces mediocre results, and favors their friends.
Even if you can get competence, you may want to automate it anyways. I'm currently working in health, and I recently visited a radiology center that claimed it took a full year to get front desk staff fully up to speed. Understanding the full scheduling requirements for all scans, some medicare rules that influence scheduling, and how to handle all the various problems, takes a long time. They live in terror of having front desk staff leave, because a quick replacement is impossible.
It was one of the hardest things i wrote, making a schedule for students, teachers and the classes. Worked like a dream, written in pascal. They used it for years.
As a problem, classroom scheduling is very interesting. The kids and the teachers were well aware of challenges anyone doing the scheduling hadv and very much doubt any software at the time could handle non standard situations. Interestingly enough,just last year I was trying to find off the shelve software that could do scheduling and have a calendar feature for one our suppliers. After considering 10 or so options I ended up with a conclusion that unless someone would do custom solution, they'd have to continue using Excel for it.
Ya, Scheduling tools are often pretty bad in general and constraint optimization does too much assuming that things won’t change or that people are just automatons.
We ended up deciding we needed to build our own tool and have also started to sell it https://happy.tools/
The biggest challenge is just addressing the constantly shifting math on what is 'good'.
So late night shifts are generally undesirable, but required to be covered and so you really want to spread them out. Having said that for some folks they'd rather do a bunch in a row, others spread them out. Some folks mind them less than others.
Just making the math decide that an even number across the whole team is 'fair' always leads to some weirdness no matter how it works out.
So a weekend night shift might be 3 days of work then 4 off. That's awesome for a guy whose vacation starts the following week because he gets more time off. He might actually WANT that. So in that case a night shift is desirable and makes the guy happier.
Another person might not want that or not have a vacation... so his point of view might differ. But maybe next weekend he feels differently.
And that's just one given weekend shift with somewhat unpredictable results.
The real key though is not just noting how the variables change wildly it is that keeping those guys happy, being flexible for them... makes them MORE willing to take a rough shift now and then. That's even HARDER to quantify, but EXTREMELY valuable.
And of course my ability to walk up to a dude, explain the situation, he trusts me because I've done this before / him favors is just something a computer that fires off an email just can't do.
This is a nice reminder that some things just aren't amenable to automation. Things shift too often and/or the number and type of exceptions just aren't worth automating.
I wrote a schedule for a team of ~20 co-workers for a 24/7 support shop. This required people change shifts / sleep schedules often.
The schedule was a point of contention for years.
After I volunteered to write the schedules, in 3 months I had everyone happy.
It was not hard.....but....
The catch was that I did it manually for a month at a time with a wide ranging amount of changing priorities that would be hard to program ... and the key was COMMUNICATION, and working with people and their personal preferences.