Once we were working on an interesting project, and one of the many features there was scheduling for companies with a large number of staff. In this article I would like to tell you when and how to develop a web based employee scheduling software.
What types of scheduling exist
There are different types of scheduling for different businesses.
Perhaps the easiest one is scheduling of meetings or calls. We just need to find some free time in the calendars of several people and make them come together.
Moreover, the schedule may relate to the project plan. In this case, it often means agile tools and Gantt charts.
In this article we will talk about another type of scheduling.
Scheduling of the staff work
Scheduling is necessary for the organization of work for a large number of staff, especially shift work.
- construction companies
- schools and universities
The difficulty of scheduling lies in the fact that you have to handle a lot of restrictions:
Business / management restrictions
The restaurant manager can tell us that he needs, for example, 2 waiters, 1 cook and a chef on the day shift.
The manager has to make similar rules for every day of the week - split the days on the shifts and specify which roles should be present on each shift.
Roles are not the most complicated case. For example, it may be necessary for a hospital that among the two nurses on duty at least one should be a male under the age of 40, as it may be needed to transport the patient.
When recruiting, candidates sign contracts, where their working conditions are described. They have nothing to do with business requirements. For example:
- every fourth day rotation schedule
- without night shifts
- vacation every 6 months
The Labour Code can also impose some restrictions on us:
- no more than seven consecutive workdays
- no more than three consecutive night shifts
Up to a certain limit, schedule can be created manually, but the complexity of this task is rapidly increasing with the number of people and business rules, so we have to move on to automation.
Automation should be started with a search of existing solutions. There are many tools for scheduling, both paid and open source, but they have some drawbacks.
in fact, it is difficult to find a tool for automatic scheduling
Most tools solve other problem (other types of scheduling), or simply offer an editor that allows you to manually create a schedule.
It is more likely that your scheduling requirements will be different from the offered ones.
Every schedule is heavily dependent on the company restrictions, so it is likely that the chosen tool will not support everything that you need. However, if there are not many specific rules in your company, then you can create a schedule and later on adjust it manually.
Сost to develop online employee scheduling software
In general, the expediency of developing your own web based scheduling system for business depends primarily on how much time you spend on the schedules preparation and update.
If you make a schedule every six months and spend one day on it, but the employees resolve conflicts and exceptions by themselves, then most likely you do not need to build employee scheduling software. Try ready-made solutions, but even this is not necessary.
On the other hand, if your company has several branches with hundreds of employees and you regularly update schedules for each of them, then automation and even the development of your own cloud based scheduling system will be paid off very quickly. For example, it would make sense to create custom employee scheduling software for construction companies.
Of course, we have to understand that the cost will vary depending on the business requirements and developers experience. The best way to find out the employee scheduling software development cost is to talk with outsource developers. If you need a kind of starting price, you can get the working system for $10,000.
How to make software for an employee scheduling
For the geeks who are interested in a particular algorithm, I'll write a bit about the implementation of scheduling.
An interesting point in the scheduling is that there is no "right" schedule. There are options that fit better or worse. Some can satisfy all the requirements (but these may not exist). So everything is very simple - we just need to sort out all the possible options for the scheduling, evaluate all of them and choose the one that is better than the others. Obviously, it is not the best solution, and we need to come up with a faster algorithm.
The problem is very similar to the knapsack problem and different approaches to the solution can be found by studying it.
We need to choose an algorithm that optimizes the order in which we will sort out the options and the criteria by which we will be able to stop in time. Genetic algorithms fit the description.
In a nutshell, the algorithm is as follows:
- we create N random schedules
- if at least one of them suits us, we take it and the work of algorithm stops
- we assess the schedule and choose the best M options
- we copy the best M options, applying the random changes (mutations) to them as long as the amount does not reach N options
- we go to step 2
Determination of appropriate schedule and options comparison
Let’s assume that the "appropriate schedule" is any schedule that is not cut off by the requirements, which are specified for the calendar. After finding it, we will stop the search.
To create the next generation, we need to compare the options and determine the best. The easiest way, as for me, is just to evaluate each option using numbers. To do this, you can take a list of our criteria and define a function that will be able to evaluate how the schedule option meets the criteria (between 0 and 1). Evaluation of options will help to assess the schedule for all criteria and get the average rating. If the criteria are not equal, you can take a weighted average.
When we need to stop
Here everything is quite simple - it is necessary to stop if one of the following is true:
- we found a suitable schedule
- new generations do not increase the average level of compliance
- after a certain number of generations.
Please note that the schedule which meets all the criteria, may not exist. These situations need to be processed depending on business requirements. For example, you can exclude some criteria.
Do not forget about exceptions
The main problem of all plans, including our schedules is that people have to follow them, but the people are very unreliable. So do not forget to give the ability to make exceptions to the rules - change people, cancel the shifts due to employee's illness, add overtime shifts, etc.
In addition the employee can ask to be assigned to a certain time in advance - then our algorithm will have to handle this condition as another criterion.
Availability and mobile devices
Speaking of people being unreliable - if the schedule is forgotten, it will not help anyone. Therefore, it is necessary to make sure that the schedule will be available to all employees. Custom web based employee scheduling software with a mobile interface is the most suitable for it. Manager interface, of course, can be left only for the desktop, but the mobile access (read-only) for the employees must be available.