Here are some notes I wrote for a scheduling software solution back when I was working retail. I don't guess I'll actually get around to doing anything else with them, so here they are.
If you're a software designer or HR manager, feel free to implement this. The workers will thank you.
RED/SPAR
Requirements Each Department/Seniority, Preference, Availability, Reserve
One source of employee dissatisfaction is that employees have no control over the times their shifts will be, beyond limiting their hours of availability, which ends up costing them shifts in most companies. While a company's need for flexibility in filling shifts is understandable, most companies make no visible effort to even try to schedule employees in shifts that will be convenient for the employees. They don't even ask what type of shifts the employees would prefer.
Now, some human resources people may feel that asking about preferences would lead to huge gaps in shift availability, but this is not true. Some people don't care when their shifts are, as long as they get a certain number of hours. Other people prefer to work evenings, some days, and some overnights. With the prevalence of computing power in the average office, building a schedule that incorporates preferences doesn't have to be an added headache for the personnel department, either.
A balancing program using the RED/SPAR balancing paradigm would actually tend to increase the number of hours the average employee puts for availability, because employees would see that the company sets schedules giving some consideration to the employee's need for a reliable schedule for planning activities during off time.
A RED/SPAR program would work by balancing the required employee coverage in each department against the availability, preferences, and seniority of each employee. First, personnel would set lasting preferences about how many employees need to be in a particular department each hour of the work week. Then, the software would offer one or more schedule suggestions based on the four balancing criteria.
First, seniority is considered and given a mathematical weight. All other things being equal, the scheduler would prefer to place the employee who has been in that department (or with the company) longest on shifts with the employee who was hired/transfered there yesterday. Seniority also resolves conflicts in criteria with lower priority, such as whether this employee or that one gets hours based on preference or just availability.
Second, preference is given a mathematical weight and compared with the needed hours. If eligible employees listed the necessary shift as their preference, they would be given the shift. This preference can be set by either setting a range of hours, or by setting one or two times that should fall within the assigned shifts, at the employee's decision. For example, Alice might set a range: 1400-2300, as her preferred shift. The software would try to place her in 2-11 shifts before placing her in shifts at other times. Bob might set a peak time of 1400, since he has no problem working 5-2 or 2-11, but doesn't want to work shifts that overlap midnight very often. Employees would also have the option of setting a radio button requesting all shifts be either evening or morning, or if swing shifts are okay, and whether they're available for overnight shifts. Preference can also include a goal for weekly hours, because some employees want to work a certain number of hours in the week, while others want to work as many as the company will give them. Preference settings also includes an option for dealing with the next level of priority, whether hours or shift time is more important.
Third, availability will be considered and given a mathematcal weight based on seniority and preference. Those shifts that could not be filled by putting people in their preferred shifts will be filled by adding them to employees whose availability covers the shift, whose preference is for as many hours as possible rather than as many shifts in the preferred times, who have been at the company or in the department longer (personnel's choice). So, Claire, who has been in the department four years and prefers hours over schedule control, gets a shift ahead of Dylan, who has been in the department three years and prefers hours over schedule control. Dylan gets a shift ahead of Ethel, who has been in the department as long as Dylan but prefers schedule control over hours. Ethel gets a shift ahead of Frank, who had the same preferences but has only been in the department for one year.
Fourth, the software allows personnel to have adequate coverage of the department without having too many people on the clock by assigning reserve shifts. Employees on a reserve shift must save the shift on their schedules in case they are needed (if another employee calls in sick, quits, or doesn't show up, or if work/customer volume requires additional workers). If the employee is needed for the shift, they will be called and expected to show up for the shift as quickly as possible, or at the appointed time, if notified more than two hours in advance. Whether or not the employee is not needed, the company will pay the employee a reserve pay equal to their standard hourly wage as compensation for being on call: two hours reserve pay for a shift the employee was not called in, or one hour for a shift or partial shift the employee did end up working. Both the employee and the company benefit from this arrangement, as the employee gets an extra amount of pay, while the company pays less for a reserve worker (two hours) than it would for having an extra employee on shift just for cushion (four to eight hours).
Using this system will increase employees' job satisfaction and save the company money and time, as well as increasing the total availability of employees who prefer a certain shift. And many employees will function better when given set shift times, so company productivity will increase.