The evolution of task management
When you start your career as a software engineer, task and time management is pretty straightforward. Either your boss or your team agile board tells you exactly what to work on. There are some distractions like Slack and email that you have to contend with but for the most part, it’s not too bad. You enjoy coding, your tasks are fun, you easily keep them in your mental to-do list, check them off, and feel pretty accomplished at the end of the day.
You are good at what you do! Before long, you are asked to stretch yourself beyond just the items on your team agile board. You start helping with design and breaking down epics, you are asked to present in company events, you volunteer to help another team to integrate with your team’s service, you find yourself spending more time answering questions in Slack that require your expertise. Your work is becoming more ambiguous, more complex and more unbounded. You find yourself procrastinating. You feel more overwhelmed. But you think to yourself, “that’s what success should feel like!” and decide that with hard work, you surely will be on top of all the spinning plates – just stash more things on your mental to-do list, you got this! And if you forget to do something, it’s not a big deal, someone will surely remind you.
Your work is becoming more ambiguous, more complex and more unbounded, and you find yourself procrastinating.
A bit more time passes, you are promoted yet again. Now you find yourself working less and less on items from the team agile board, and your days are spent in what feels like endless meetings, reviewing designs, domain models, architecture specs, researching new technologies, leading efforts, and writing even more documents, all under a constant barrage of questions and pings in Slack and email. Less of your work seems “fun”. When you look back on your day, you realize that you spent most of it in between meetings and answering a myriad of questions in Slack. You forgot or didn’t have time to make any progress on important stuff, a few of your spinning plates are now resting on the floor, untouched, with you actively resisting to find time for them and no one there to remind you about all of the things that are getting dropped. Some days, you are not really sure if you’ve accomplished anything…
Ambiguity up, productivity down
Does this sound familiar? If so, congratulations! You’ve been successful in your engineering career and you are working for an organization that is pushing you to grow! In my career, I definitely got to the point where I could no longer rely on simple streams of tasks that worked for me up until that point: those simple times when I could just pick something up from my team agile board or answer a manageable number of requests in Slack and get back that coveted :thankyou: emoji. It eventually became unreasonable for me to expect all of my work to be “fun” to naturally motivate me. And I had to reconcile the conflict between having to do more ambiguous, complex tasks that have very long cycles while still feeling good about my day (it’s easy to see something you coded getting deployed to production and feel accomplished, it’s much harder to look at a pile of documents you’ve read or created, or Slack threads you participated in, and feel the same).
Growing in your engineering career and taking on a leadership role requires a new approach to productivity.
I’ve always been interested in productivity. After reading many books and articles on the topic and trying various techniques, I eventually figured out that productivity is not about doing more. The question that kept popping up again and again on my quest to “being more productive” was very simple and had little to do with the number of things I’d done or how busy I’d been. Instead it was simply, “What have I accomplished today?”.
The question that kept popping up again and again was, “What have I accomplished today?”
Using advice from numerous productivity resources (Productivity Project, Zen To Done, Bullet Journal, Getting Things Done and many others) I developed a sustainable system that worked for me, that could allow me to keep track of all the spinning plates without getting overwhelmed and that would help me feel like I accomplished something useful at the end of the day.
Productivity when engineering work gets ambiguous
1. Choose my focus
The first step was to become deliberate about what I work on. As engineers we can work on many different things, some of them are purely enjoyable, some make our product better, some enable our teammates, some help other teams or our company. How do we choose what to focus on any given day?
To help me decide I listed out all of the possible focus areas that I could put my energy towards: learning, coding features, making architectural improvements, mentoring/coaching, improving team or organization processes, growing engineering influence, etc. Each month (or quarter) I pick only 3 focus areas where I am going to put most of my energy. To help me decide, I answer the following questions for each of the focus areas:
- Do I enjoy this?
- Does this help me/my career?
- Does this help my team right now?
- Does this help my company right now?
My answers might change month to month. For example, improving team processes might actually not help my team right now if there are other folks on my team who are already doing that. I try to have a combination of things that I enjoy as well as things that I might resist but which help me, my team, or my company. I begrudgingly recognize that discomfort very frequently means growth, so I force myself to try some of the areas that feel “hard” or ”not fun”. At the same time I know that these challenging areas will require significantly more energy, so choosing 3 “hard” areas at once most likely will result in me resisting to make progress in any of them. Sustainable discomfort (or growth) is the key!
Discomfort very frequently means growth.
Once I have my areas of focus chosen I will use them as the filter throughout the month or quarter for any work that is coming my way. I’ll also seek out opportunities and originate work that fall within my top 3 focus areas. This allows me to initiate interesting streams of work that no one specifically asked me to do. Having this filter doesn’t necessarily mean that I will not do any work outside of these areas (good luck telling your boss you are refusing to do something because it doesn’t align with your focus for this month). But, if I have a choice, I’ll choose tasks that align and punt on tasks that don’t.
2. Get things done
The second step was to become deliberate in how I make progress in the areas I chose (or how I work). Zen To Done (ZTD) talks about choosing big rocks for your week and choosing MITs (most important tasks) for your day. The idea is that if you don’t prioritize your “big rocks”, tiny pebbles will fill your day and you won’t accomplish very much. I found that once I had my direction set I could deliberately plan my week by choosing top 2-3 projects or tasks (aka big rocks) that I’d like to make progress on this week. And then each day I could deliberately choose top 2-3 tasks that I’d like to accomplish and that would help to move my weekly big rocks forward. As you probably noticed it’s “choose top 3” all the way down!
if you don’t prioritize your “big rocks”, tiny pebbles will fill your day and you won’t accomplish very much.
For any plan to work it needs to be realistic and achievable. Before the start of each week I look at my schedule to see what meetings I have that week. Do I need to prepare for any of them? If so, prep can become one of my MITs some day before the meeting. Are there any meetings related to projects in my focus areas? If so, I can choose those projects as my big rocks for that week. Looking ahead also helps me judge how much time and energy I’ll actually have next week. If I have too many context switches throughout the week, it’s unlikely I’ll have a ton of energy left to work on anything challenging. I also try to find chunks of meeting-free time in my schedule and intentionally block them off for focused work.
Before the start of each day I do more tactical planning for that day: are there any tasks still remaining to accomplish my weekly big rocks? Do I need to course correct and do something that came up during the week? Is it more important than what I had planned to do? I also try to split my day into “reactive” and “focused” parts. During reactive time I let myself “wander around” and simply react to things that show up, reply to questions or requests in Slack, check email, attend meetings. But during my focus time I try my best to disconnect, shut down or at least minimize Slack, close email and other sources of notifications and actually work on what I planned to do that day. For any new task or request that pops up I simply write it down to follow up later. Writing it down (as opposed to keeping it in my brain space) gives me a peace of mind that I won’t forget to do it later but it also allows me to keep focusing on my planned work and resist the temptation of switching context. It’s quite odd just how much our brains love the idea of multitasking and getting distracted given how ineffective we actually are at doing more than one thing at a time.
3. Analyze and iterate
Planning and, more importantly, sticking to the plan is an essential part of my weekly and daily ritual. It allows me to focus on things that actually matter to me and it forces me to break down large ambiguous projects into smaller achievable tasks. Being deliberate and spending time planning has another interesting side effect: I can look back on my week or my day, review and celebrate things I’ve accomplished (a nice motivation boost!), and I can also analyze tasks that I resisted. We tend to procrastinate on things that are too hard or too boring. Analyzing what caused me to resist a task can often help me to overcome that natural tendency. I spend a bit of time during my weekly planning thinking about “why”s for my big rocks: why should I do this project or this task? Just answering that question often motivates me enough to push through some of the harder or less “fun” items on my list. All of a sudden something that was boring becomes much more motivating. And if something is too hard or ambiguous I try to answer a simple question: what is the very next tiny step I can take to make some forward progress? Often it doesn’t need to be a very ambitious first step, sometimes just scheduling a meeting to brainstorm some ideas with someone else is enough. And once you make that first step, you can figure out the next step to take.
By answering “why,” all of a sudden something that was boring becomes much more motivating.
Planning and being deliberate really helped me realize that you can make significant progress on large projects by taking tiny steps forward. When we train running a long distance we naturally understand this concept: if all I think about is the finish line it’s very easy for me to get discouraged as soon as I get tired: I have still too far to go, I should just stop now. But if I focus on running till that tree that is just a mile ahead and once I get there I will celebrate that small win and decide if I want to stop or if I should pick my next target, all of a sudden the path becomes manageable.
Too often we don’t realize how important celebrating these small wins is to keep us going. This is especially important when working on large, complex, ambiguous and unbounded projects. We set our eyes on the end goal and refuse to enjoy the ride until the entire project is “finished”. But as you grow, your finish lines move farther and farther away. It might take months or even longer for some of your initiatives to have a visible impact (if any), and very often when it actually comes to fruition so many different folks and teams have contributed to its success that it’ll be very hard for you to look back and feel accomplished. How much did you actually matter?
Focusing on simply making progress towards things that matter and enjoying the journey is what will make you resilient, tenacious and help you reach your desired destination and choose a meaningful path along the way.
An example from my planner
I actually applied everything I’ve explained above to how I wrote this blog post.
My first tiny step: ping our awesome content manager about my random blog idea. She suggested we have a quick meeting to brainstorm.
Second tiny step: schedule said meeting. One day before the meeting, do a brain dump of what I might cover in the blog.
During the meeting she asked how long would it take to get a first draft. I threw out “two weeks” (not too ambitious but not so long that it will give me time to change my mind or lose interest).
For the next two weeks, “Blog” was one of my big rocks, and each day I saw if it could become one of my MITs for that day. I didn’t set out to write the whole thing on any given day – instead I set a goal to just make some forward progress. Dump ideas one day, refine and edit on another day, then realize I have a few more ideas to add, write some more, edit some more. Some days I planned to work on my blog but I didn’t and it was OK. I know that my daily and weekly planning and splitting things up into tiny steps would make it possible for me to keep going and to make progress. I got a few good writing sessions in both weeks and had the draft ready with 2 days to spare. Success!