“Software is eating the world” isn’t just a great sound bite, we’re automating more and more things and one of those things is scheduling. It used to be you called and talked to a human if you were reserving a table, making a doctor’s appointment or getting an oil change. Now you can do all of them online. The time saving and convenience for consumers are huge. From the business’s perspective having customers book online is easier and since a web presence is now mandatory this is a trend that’s going to continue.
The downside of scheduling being done by a computer is you have to make explicit some rules that the maitre d’, office manager, or mechanic knew implicitly
- We want to keep 20% of the tables open for walk-ins
- The doctor needs to be gone by 3 on alternative Tuesdays to pick up his kids
- We only have 4 lifts, so even though I have 6 mechanics working I can’t book any more oil changes, but I can patch tires
Scheduling software is coming to more and more industries and unfortunately every industry has there own rules and terminology, so each implementation will be different. This essay is an attempt at cataloging some common features that scheduling systems need and some questions you should ask when building a scheduling system.
Questions to ask
In journalism they have the 5 Ws to get a story. For scheduling you can ask similar questions to get an idea of the features required, roughly in order of importance:
- When should the appointment happen?
- What needs to happen?
- Who needs to be there?
- Why is it happening?
- Where is it happening?
If you don’t have a When, then it’s not a scheduling system it’s an issue tracking system. The other 4 questions may not be necessary depending on exactly what you’re building but When is mandatory.
An appointment at minimum needs to designate a start time but normally has an end time also. If you’ve ever gotten a party invitation that says “from 9 PM to whenever” or you’ve ever been told by a mechanic you can pick your car up “sometime after 4" you’ve had an appointment without a definitive end.
Just having a start time and end time may not be enough though. Baking a cake takes 2 hours total. 30 minutes to mix everything at the start 60 minutes to bake then 30 minutes at the end to put on the icing. Is that 60 minutes in the middle free for the baker? If so how do you represent that?
Is the appointment recurring?. Does it happen every week, every other week, once a month etc. Outlook actually does this pretty well, letting you schedule repeating appointments on a fairly arbitrary basis. What it doesn’t let you do is exclude from the calendar i.e. “I do a sales call every Friday, except for the 2nd Friday of the month when I play golf”
What is the reason for the appointment? If you try to schedule an appointment with a car mechanic they want to know if it’s for an oil change, a check up or because your break light is out. Part of this is because changing your break light will take 15 minutes, while doing a full check up takes 2 hours.
Another reason to ask What is that scheduling systems are used to gather data for other systems. For example when you schedule a check up with your mechanic they’re actually doing multiple things:
- an oil change
- rotating your tires
- replacing your break pad
- replacing your batteries
- checking your engine
All of which is billed individually so the scheduling system needs to ask What for the billing system. Similarly if you have engine trouble and your car is under warranty they want to know what model it is so their defect tracking system can detect models that are having issues across the board.
Will your scheduling system be collecting data for some other purpose? (The answer is always yes)
Is the appointment with a specific person? When my mom gets her nails done there’s only one nail technician she trusts, when I schedule my iPhone to get fixed I don’t care who at the genius bar fixes it. In the first scenario my mom is scheduling with a specific technician in the latter I’m really just saying what needs to done and when it needs to be done, I don’t care about the who at all.
Those are the two ends of the spectrum but this doesn’t have to be binary. When you schedule a hotel room you can specify 2 doubles or 1 queen bed, or a non-smoking room, or a room with a beach view. These are all properties of certain rooms. Is there any characteristic the scheduler might want to differentiate on?
Are multiple resources needed for this? In the mechanic example if an oil change requires a mechanic and a lift then both of those resources have to be free at that time for someone to schedule an oil change at that time.
Relatedly in the cake baking example if it takes 30 minutes of prep work 60 minutes to bake and 30 minutes to put on the icing the chef is only busy for the first 30 minutes and the last 30 minutes while the oven is busy for the 60 minutes in the middle. So even if multiple resources are needed for the appointment it may not be for the entire time, so they can be scheduled for other things (incidently in cooking this is called dovetailing).
Why is asked to get to the root cause of why you’re booking an appointment. It’s used to add context/detail and what the system does with the answer is industry specific.
Why is where human judgement comes in and is usually the hardest part to automate.
When you call a restaurant to make a reservation and the maitre d’ asks if this is for a special occasion, they are asking so that they can have birthday cake or champagne ready. Similarly if you call your mechanic because your car won’t start and you’re missing work they’ll fit you in to their schedule because it’s a higher priority than a regular check up.
Are there multiple locations this could take place? If I want to book a dinner reservation at the restaurant Candle 79 then the location is going to be 154 E 79th St, New York, New York because that’s their only location so their scheduling system doesn’t have to worry about location. However if I want to rent a car from Enterprise I need to specify which office I’m picking up at because they have a dozen locations.
Answering these 5 questions is necessary for the basics of building a scheduling system. There are other features such as double booking, overlapping appointments, floating lunch breaks, and time restrictions that you may need to think about but the 5 Ws get you the common features that aren’t domain specific.