While reading David Allen’s Getting Things Done, I connected the ideas that Allen suggests for time allocation to that of a real-time operating system with which I am familiar. Upon further thought, I wondered if there is a way to act more deterministic and accomplish tasks at higher efficiency, similar to how a microprocessor performs within a real-time operating system.
First let me establish some background information. I shall focus this discussion on a small portion of Allen’s book. This book has a lot of useful information. Much of it is common sense, but Allen made the light go on for me.
One of the key points I took from Allen is that your calendar should not include all your tasks. Why you may ask?… Let’s consider the following. You have scheduled to the minute a full day’s worth of tasks that you believe can be completed that day. What happens when all the scheduled tasks for the day don’t get done? Did the task(s) that didn’t get done cause the end of the world? If not, then you probably only experienced guilt (maybe only subconsciously). What happens to the tasks that didn’t get done? Do you move them to the next day? Most likely. In total, you didn’t get everything done like you desired, you feel some guilt for not meeting your expectations, and you need to reschedule the tasks that are still uncompleted. Moving tasks to the next day could become an endless cycle of guilt and extra work. Instead, why not only schedule certain items?
Allen states that only three types of actions should be placed on your calendar. Those include time specific actions (a meeting that has been scheduled for a specific time), day-specific actions (a phone call to someone who is about to go on vacation for a week), or day-specific information (a birthday you want to remember and acknowledge). Items that don’t fall into those three categories shall be placed on a list of ongoing work – a list that you periodically check to accomplish progress and also monitor any impending deadlines. These tasks fill up your time around the scheduled tasks on your calendar without filling your calendar.
While reading the discussion about scheduling your calendar, I contemplated, why not make your task scheduling more like a task scheduler in a real-time operating system running an embedded application? There seems to be a similarity between scheduling too much on your calendar to scheduling too many tasks to run at a specified task rate. In a real-time operating system, I equate a scheduled meeting to a scheduled task, something that is important and needs to be done at a certain time. A meeting with the president of your company is definitely something that must be scheduled and would be equivalent to a task that is scheduled at a high priority task rate in a real-time operating system. The phone call that must be done that day, I equate to a lower priority scheduled task, but above the background task level – it needs to be guaranteed to be done. Other non-calendar tasks equate to background tasks. This is work that is performed around the time critical tasks. This allows for a more optimized use of your time. You focus on the time critical tasks at the appropriate time and fill the rest of your day performing tasks that have no repercussions if they are not completed at a certain point.
At least in my view, the similarities between what I learned from Allen about scheduling your calendar and the scheduling of tasks in a real-time operating system are very similar. Unluckily, I am not as efficient scheduling my calendar as I am in scheduling the tasks of my embedded projects, but I hope to grow.