I've written simple scheduling software. The <i>only</i> consideration taken by this scheduling software were worker preferences: management doesn't care who covers the shifts, just that they're covered. So it took into account "fairness", day of week preferences, scheduled holidays, et cetera.<p>By those measures, the software does a lot better than humans. However, there's something to be said about the predictability of the old human schedules. The humans generally just figured out a 2 week schedule and repeated it; filling in holes created by scheduling conflicts with those workers they knew were usually eager to pick up more work.<p>IOW, you may previously have worked every 2nd Tuesday. If you couldn't work on a particular Tuesday, you just didn't work. Now you're much more likely to get a solid 2 shifts a month (presuming that's what you asked for), most will be on days you marked as preferred, some days may be on some you marked as available and none on days you marked as not available.<p>Now obviously I could have added a metric to guide the system towards more 'regular' schedules. But it would still compensate for those other considerations, and would still look somewhat random. It's usually pretty easy to tell the difference between a computer-generated and a human-generated schedule, and many people still prefer the human generated ones, even if it is less 'fair' by almost any measure.<p>Given how crazy a schedule generated solely by worker preferences is, I shudder to consider schedules driven solely by management preference...