I’m an attorney unlike most, when I’m done practicing for the day I enjoy building software projects. Fortunately, Howard and Howard has a vibrant Intellectual Property practice with like minded attorneys. Computer science makes you think. There are countless algorithms that go unseen to people unaware of them. Some have direct application to any professional that sells units of their time. They can help best answer the important question: what project do you work on next to maximize your hourly output?
Do not worry about not knowing the answer. This problem has been found to be intractable. Basically, there is no specific algorithm that can provide an optimal answer. Fortunately, one algorithm can get us as close enough, and even closer with tweaking.
If you are selling your time by the hour, the goal is straightforward. You want to ship as much time out the door that you can. From this vantage point what you do first does not matter when it comes to all of your tasks. The time it takes you to complete all the tasks is fixed. If you work for 40 hours a week, it takes you that long to complete those tasks no matter the order. But that fixed time doesn’t translate to time value for your client. As your time is fixed, maximizing the value for your client is the goal.
Imagine for this week that you have a two-day project and a four-day project. Which should you do first from your clients’ perspective? If you do the four-day project first, the first client must wait that time to get its result, while the other client will wait the same four days plus an additional two days, for a combined client wait-time of ten days. Performing the shorter task first results in a two-day wait for both clients, plus one four-day wait, for a total wait-time of only eight days. Therefore, it is more important to do the shorter project first to maximize the time value for both clients.
This algorithm has been dubbed, the Sum of Completion Times. The time it takes for you to complete the tasks is fixed, but sum of the time your clients must wait is variable. A two-day project takes two days, for both you and your client. As a result, performing the task that takes the least amount of time saves the most time for all of your clients. Even if the more vocal ones will not care to hear why their project was not completed first.
If, or when, your client demands to be granted higher priority for being such a good client in the past, providing them with the Sum of Completion Times algorithm will not make them happy. Tell your client that you are using computer science to serve them optimally, and they are welcome to read up on the algorithm being used to maximize value, and that you are doing everything to manage the intractable problem of saving them wait time. Then, make them feel special and say that their specific concern is of higher priority and will be addressed first.
Your client is voicing a concern in the Sum of Completion Times algorithm called “weight.” The client’s needs must be addressed now. It has great weight, despite it causing more wait time to all involved. For example, deadlines must be kept, so sometimes the client must wait more time than is optimal. A higher priority task beats out the faster task that would save all clients more time.
One weight-based tweak to the Sum of Completion Times algorithm is called Priority Inheritance. Basically, when there is a big project that must be pushed out now, it takes priority over the faster projects due later. This tweak famously resulted in a software patch for the Mars Pathfinder Rover that fixed its error state. As soon as it booted up, Pathfinder began a low priority task that kept it from doing anything important. The software patch provided Priority Inheritance so that the rover could overlook certain less important tasks and complete the most important ones first.
Therefore, when the client demands performance, please provide them with the resources and algorithms discussed, and blame it all on an intractable scheduling problem that cannot be solved. Finally, offer to put their work first if it has high priority. Clients may not like what you said, but the perfect schedule remains an unproven problem of computer science. Clients that look into the issue should see how smart using the Sum of Completion Times is and be grateful that your service maximized the value conferred.
As a result of these algorithms, I’m off to finish the things that can be done the fastest, while being mindful of those that must be done now or else. It’s the best way to maximize my output for myself, but also--more importantly--for my clients.