Does your “To do list” behave like a Queue, a Stack, or a Priority Queue?
In a collaborative environment, in which many people are sending and receiving requests from one another, people’s to do lists should like a priority queue to optimize performance.
What is a Queue, Stack, or Priority Queue?
Before boarding a plane we enter a boarding queue or line, the first person into the queue is the first person out and onto the plane. The queue follows the “First In Last Out” process aka FIFO. Alternatively, when we board a plane we can enter a priority queue in which the next economy class passenger on the queue will board as long as a passenger with a business ticket is not on the queue. If there is a passenger with priority status, then, he will board next. The priority queue, though, requires a set of rules to decide who boards next when there are multiple people with priorities in the queue. For instance, who boards next when there are a handicap person, a passenger with a baby, and a business ticket passenger all in the queue.
Another option, we could follow is a stack or a Last In First Out queue (LIFO). Our email inbox works like a stack, the newest email (Last in) is at the top and usually read or archived first (First Out).
What does our “to do list” look like?
Each morning there is a new set of requests waiting for our attention in different sources like (Asana, Email, etc.) in addition to our existing ‘to do list’. How we handle these requests is critical to our long term performance. We can add each request to the top of our to do list like a stack or we can process the request and add it to our priority queue and resume our day with our top priority. Seems simple enough?
Here’s where I think it gets tricky.
How do I handle a request that does not include a priority level?
How do I handle a request that is pushed compared to a request that is pulled when I’m ready to process the request?
The concept of “pushed” and “pulled” requests was first introduced to me when I got my first iPhone. The iPhone prompted me if I want email to be pushed to me as they are received or to hide them from my view and only show them when I open my email inbox. The latter avoids new emails distracting every 6 minutes.
We, of course, know we are better off ‘pulling requests’ at set times throughout the day and processing those requests than we are having requests pushed to us at all hours. However, as employees or service providers, we recognize that our managers or clients are, of course, entitled to be make requests ‘on their time’.
As managers, we make requests of our employees often so that we can focus on other tasks. We rely on our employees to process the request, assign it a priority and implement it when it’s the highest priority item left in their queue. We should assign it a priority when we make the request but assigning it a priority is a tiring and exhausting process that requires more time from us.
As employees when our manager makes requests we often *mistakenly* assume that the newest request is the most important unless otherwise stated. We become confused, we think to ourselves – my manager knows I can’t complete the other 3 requests he made yesterday and this new one so he obviously wants this one done first or he would have told me its priority level was lower. Further, how my boss makes the request hints to the tasks level of priority:
- If my manager sent the request on Slack, then the task must be Urgent;
- If my manager sent the request via Email, then the task must be Urgent, but not as urgent as Slack.
- If my manager sent the request via Asana, he doesn’t think it’s as urgent.
Urgent does not imply Important
Further, as employees, we confuse urgent with important. Slack may mean urgent but it doesn’t mean important. When left to decide, we mistakenly may resolve do the newest request next; effectively changing our to do list from a priority queue into a stack – a stack in which the important projects get hidden at the bottom.
What should we do to make sure our to do lists remain priority queues?
When people send requests they should include a description explaining how important (and urgent) a request is to the receiver. This means there should always be a deadline to a request.
People should avoid pushing people requests that are not super urgent since there is no need to push a request that is not urgent. Managers may be better off adding the request to the meeting agenda for them or scheduling an email to send later in the day. For instance, managers can write an email at 6pm and schedule it to send at 7am so their employees can have a better work/life balance.
Employees should make it know when they ‘pull requests’ e.g. 10am in person scrum + email processing.
Employees should respond to a requestor with a recommended order of priorities (and other tasks they are working on so that a manager has transparency on how someone spends their time. This makes it easy for a manager to change priorities or juggle the other requests being made of their direct report.
 These terms are commonly used to refer to Data Structures. See here for more on the topic