The Urgency Bias
I have two kinds of problems: the urgent and the important. The urgent are not important, and the important are never urgent.1
This is a quote from President Eisenhower, and it's formed a foundation for how I think about prioritization.
I had seen this quote a number of times online in the context of prioritization, usually discussing a system called The Eisenhower Matrix. But discussions I saw of the original quote didnât leave me satisfied, because they donât clarify what it means for something to be âimportantâ vs âurgentâ â and thatâs the whole crux of the matter.
Indeed, if youâve never heard the quote before, it can be a bit confusing, because âimportantâ and âurgentâ are very similar words in English; most thesauruses would list them as synonyms. The quote itself doesnât expand on the difference â it is, after all, just supposed to be short and punchy and memorable. The meaning behind the words is left for the reader to figure out.
These are the definitions Merriam-Webster offers:
The definition for âimportantâ is a bit vague on how to measure worth, though otherwise reasonable. But the definition for âurgentâ is even less satisfying, due to the use of the passive voice. Who is calling for immediate attention? I believe this ambiguity is a central source of mis-prioritization.
Learning how to prioritize tasks is foundational to successfully execute just about any project, but in particular itâs a skill that separates good software developers from the great. Properly identifying importance and urgency is the basis of this skill.
Definitions
A bit dissatisfied with the vagueness of the dictionary definitions, I took a mathematicianâs approach, and created my own definitions. As Iâve worked on better categorizing problems and tasks, Iâve found that there are actually three properties to account for:
- Long term value: how much will this impact the success of the project in the long run?
- Time sensitivity: how dangerous would it be to delay or to not do this task?
- External pressure: how much are you getting pushed by other parties to do this quickly?
Based on those three factors, I have three corresponding categories of tasks:
- Important tasks are those which are expected to bring value in the long run.
- Truly urgent tasks are those which must be done quickly, to prevent catastrophic harm.
- Tasks perceived as urgent are those which external parties apply pressure to address quickly.
Note that I split âurgentâ tasks into two categories. This addresses the ambiguity of the dictionary definition, by clarifying what makes a task worthy of âimmediate attention.â You can either make that determination based on the pressures of others, or you can base it on an objective measure. Distinguishing these two case means discerning truth from perception. While some things do truly need to happen quickly, many more things that are not truly urgent are nonetheless treated as such by others. Just because someone else is treating something as urgent, doesnât mean it actually is.
That, I think, is the crux of the Eisenhower quote. Looking at it again, it makes the most sense to me if his use of the word âurgentâ refers to what Iâve called âperceived as urgent.â The lesson of the quote, then, can be rephrased in a way thatâs less poetic but more specific, and resonates with my own experiences: the things that matter in the long run are rarely things that others will push you to do; and conversely, the things that people pressure you to do quickly rarely actually matter in the long run.
Examples in software
I do believe that these ideas can apply to any sort of project, but my own experience is mostly with software, so letâs look at some examples from each category in software. Keep in mind that I defined urgency in a particular way: truly urgent tasks must be done to prevent catastrophic harm. So to determine if a task is truly urgent, we can simply ask: what would happen if I delay this task, or even just don't do it at all? Would the harm be catastrophic?
Important Tasks
As I argued in my post on Keeping Software Soft, what matters in the long run for a software project is the ability to continually add changes and fix bugs. Therefore, the tasks that matter most in the long run are those that enhance this ability. This includes testing, monitoring, code documentation, refactors, and reductions of code and system complexity. While important, these are rarely truly urgent, as delaying them wonât cause immediate harm. Theyâre likewise rarely perceived as urgent.
Truly Urgent Tasks
The most obvious example of a truly urgent task would be a critical bug, like one that has crashed the server and made the product unusable. Every minute that the server stays down, users get frustrated with your product and lose faith in it. With no server, you have no product. Fixing that is pretty clearly urgent.
Other urgent tasks can arise from legal or contractual obligations. For example, last year, Apple introduced a requirement that apps must allow users to delete their accounts from within the app. Failure to add that feature by the deadline would have risked getting the app pulled from the App Store. If our business revolves around our app, then that would be a catastrophe, so adding this feature is urgent.
All truly urgent tasks are also important tasks. Preventing catastrophe in the short term is certainly also good in the long term. You canât ultimately succeed if you donât survive right now.
Tasks Perceived as Urgent
Truly urgent tasks may be correctly perceived as urgent. But many other things fall into this category that are not truly urgent. For example, consider a new experiment to change the layout of a subscription page to better highlight certain value propositions and get more users to subscribe. Some parties might push to get this done quickly, as it may increase revenue. But what happens if itâs delayed? In the meantime users will continue to subscribe at the existing rate, and itâs hard to believe that this would be a catastrophic consequence. I would therefore not consider this truly urgent, regardless of how itâs perceived.
As another example, consider a bug thatâs causing the signup page to crash for 1% of users. As a bug causing a frustrating experience, stakeholders may consider this urgent. But if itâs delayed? Then our signup rate is potentially 1% lower than it could be. In most situations, itâs hard to argue that a 1% difference is catastrophic, so I would not consider this truly urgent.
Keeping Perspective
The key to categorizing tasks is keeping perspective. That means looking past the pressures of others, instead seeking objective measures to determine a taskâs true urgency. It means being honest about the actual consequences, and about what actually constitutes a catastrophe.
This may mean going against your instincts. My natural inclination, myself, is to feel like âletting someone downâ is a catastrophe in and of itself. I get very anxious at that thought, which means my instincts blur the line between true and perceived urgency. If someone asks me to do something, my instinct is to think that itâs urgent. Keeping perspective requires pushing back against that instinct.
Urgency Bias
The tendency to conflate true and perceived urgency is something that Iâm tentatively calling urgency bias. Iâm not a psychologist, but itâs a bias that Iâve seen all over the place, and felt many times in myself. I define urgency bias as âthe inclination to prioritize a task based on someone else presenting it as urgent, rather than its actual impact.â
This bias is easy for others to take advantage of. If I want you to do something, I just need to present it as being urgent. If you believe me, then suddenly youâll be prioritizing work thatâs beneficial to me.
Iâve seen this happen all the time, with managers or other teams trying to get their own priorities pushed to the top of engineersâ lists. They donât usually have ill intentions, and they likely donât think of it as manipulative. Theyâre rarely rude. Sometimes itâs phrased like, âItâd be great if we could get this done by the end of the day.â Or sometimes they even pretend to include themselves in work that they wonât be doing, like âLetâs focus on X task first,â or, âLetâs try to get it ready for the upcoming release.â It all boils down to the same thing.
If the people making these suggestions are talking about tasks that are actually urgent or important, then itâs not a problem. But thatâs certainly not always the case. People have biases like Present bias that make them favor things that deliver fast results compared to those that take more time. And someone who delegates work rather than doing it themselves often has a distorted view of what the work actually involves. In software, in particular, people who arenât engineers themselves donât typically have a sense for the value of keeping software soft.
Now, just because a task isnât truly urgent doesnât mean it shouldnât be done. But it does mean that you can afford to take the time to do it correctly. You donât need to rush through it and cut corners; you can instead do the work in service of your long-term, important goals.2
You Can Do the Right Thing, Even If Told Otherwise
I was fortunate, at my last job, to be in a position where I was able to push back against false urgency. I had the personal drive to do so because I simply cared about the long term success of the product we were building, and I'd previously seen the consequences of projects where long-term maintainability was sacrificed for quick changes.
Still, early on, I felt natural anxiety when told what to work on, because I wanted to prove myself and to make people happy. I was fortunate to get to know my manager and other stakeholders well over my first few months, and to find that they were all reasonable and considerate people, who also cared about the success of the product. Things might have been different if my manager was particularly controlling or quick to anger, but he wasnât. So over time my anxieties began to ease, and I started taking baby steps towards taking my own initiative on some work.
At first I just did this in small ways, taking quick detours from the normal course of my work to improve small code quality issues as I came across them. As I learned more of the codebase, I made note of the places where the code was particularly difficult to follow. Working in those areas was always very slow, but the problems with them were too big to address in the normal course of my work.
I brought this up: that I wanted to invest time in reducing the complexity of the code in these areas so we could work on them more effectively later. More generally, I suggested specifically setting aside some time each sprint to handle refactoring and cleanup work like that. But the responses I got were... evasive. Non-technical stakeholders said that before they would consider it, theyâd want to see numbers quantifying how much the work would help. At the time I had no idea how to come up with any numbers for this work, so I just let it go.
Not long after that, I was assigned a bug to look into. As a bug, of course, it was considered urgent. But the reality was that it had been ongoing for a while, and affected quite a small number of users, and users had ways to work around it. If it could have been fixed easily, that would have been one thing, but I put days and days of work into understanding and trying to reproduce this bug. I got frustrated, initially at my own inability to figure it out, but then also by the complexity of the code that hindered my debugging and gave rise to the bug in the first place.
Eventually, I decided to just... put that work on hold. I stepped back, took a deep breath, and just... started working on refactors instead. Initially this was just a way to give myself a break, but after a while, I came to the conclusion that it was also a better use of my time in general. Iâd determined that the bug was not truly urgent. And from my experience being slowed down by complex code, I was realizing that improving code quality was one of the most important things the company needed.
So, I just quietly worked on that instead. I acted like the bug I was assigned was just taking a really long time (which wasnât technically false), while in reality, I just spent most of my time planning and executing refactors instead.
Ultimately, it worked out. Once the work was done, no one complained that I had spent my time this way. Indeed, other engineers were appreciative, because â as was the whole point â the areas of code I refactored became easier to read and understand and work with. The bug Iâd been working on was eventually deprioritized, and it ultimately took over a year and several othersâ attempts before it could be resolved. The amount of time it was allowed to sit in limbo like that also gave retroactive evidence that it was not, in fact, urgent.
I kept focusing on issues of code quality after that. Eventually, my manager started working with me to handle larger architectural decisions; I started being relied on more for code reviews; and I took responsibility for compiling and enforcing best practices and things like that. This was all work that was not urgent, but important. Ultimately I believe it drove a shift toward maintainability in the engineering culture, and it all started from me not doing what I was told.
Conclusion
Distinguishing between importance, true urgency, and perceived urgency is a valuable skill for project planning and prioritization. By keeping perspective and honestly evaluating the consequences of tasks or potential problems, you can resist urgency bias and ensure that youâre spending your time on what is actually important. The reason the Eisenhower quote has persisted so long is that it speaks to a truth that many feel. The things that weâre pressured to focus on are usually simply not important.
Source. He was himself quoting the president of Northwestern University, but the idea is more associated with Eisenhower because of the publicization of the speech.âŠ
In A Philosophy of Software Design (one of my favorite books, and the one that first introduced me to the Eisenhower quote), John Ousterhout refers to this using the terms "tactics" and "strategy." Those terms correspond, respectively, with the terms "urgency" and "importance" that I'm using here.âŠ