Productivity and improvement

Software engineering is a lot of work. Between all the emails, sprint tasks, mentoring, meetings, ad-hoc discussions, and research, it can all start to feel quite overwhelming. You may also be asking yourself (as I have many times) “when did my plate suddenly get so full?”. The answer is similar to the slow-boiling-frog, in that there isn’t usually a particular point in time that you can single-out - rather, as you gain experience in your role, you organically gain more expertise and responsibility, and with that an increase in demand for your time. I reached a point where I just couldn’t hold onto everything. The good news is that I made some very deliberate changes, and with that, my days no longer feel overwhelming - but structured, under control, and with the added bonus that I can actually “switch off” at the end of the day.

I am going to do my best in this post to walk you through my “system”. The one thing to keep in mind is that there isn’t a one-size-fits-all that is going to work for everyone, we all have our unique ways of working. You may find yourself trying some of what I talk about, adapting other parts to fit your workflow, and chucking the rest - that is exactly what I expect and it is OK! The single most important lesson I have learnt is to be flexible and adapt your own system as you need - sticking to a process for the sake of the process alone will do more harm than good.

The road strokes

My system comprises of the following high-level steps:

  1. Triage

  2. Consolidate

  3. Prioritize (and do!)

  4. Review

Let’s dig into these:

Process.png

Triaging

Triaging your potential work items is an important step, and it is often the one that is most overlooked. What do I mean by triaging? I am referring to the process of taking a first pass over any incoming work and making an explicit decision on whether there is something to do there or not. If it is going to take more than a minute or so to decide then by definition there is something to do, so add it to your to-do list. This type of triaging is most commonly required with your e-mail, so I will go into some detail on how I deal with my e-mail:

I triage email very similarly as described in the book Getting Things Done (by David Allen) and maintaining a zero inbox. Before now, I would often scroll through hundreds if not thousands of email (both read and unread), looking for something I remember seeing that I had to action. It was overwhelming. Keeping your inbox under control can be done by looking at each email and making one of the following choices:

  1. Delete it - if it requires no action, and has no value for future reference.

  2. Action it immediately, then delete it or archive it - if taking action is straightforward and would take less than 5 minutes.

  3. Archive it in another folder - if it contains non-actionable but potentially useful content for future reference.

  4. Mark it for future action (move it to a dedicated folder) - if the email requires a bit more work.

  5. Mark it as waiting on someone else (another folder) - if you need someone else to do something first.

Resist the urge to skip over an email - it will just continue to clutter your inbox, potentially making you miss something important.

Consolidating your work

As I get work in, whether it be an action item from a meeting, an e-mail that has been marked for future action, or some project task - I add it to my to-do list application. I use OmniFocus for work, and Todoist for my life outside of work. Adding to-do items should be as easy as possible so I make use of both of these applications’ respective inbox folders for adding tasks. I also create items that require nothing but waiting for follow-up as well - so those email that you are waiting on someone else for - I create tasks for them as well.

Prioritize - The power of daily habits

The next thing I usually do with a piece of work is figure out what priority it needs. Given this can be a mentally exhausting task, I don’t do this ad-hoc as I receive or triage work, but rather I do this every morning with a re-occurring project that I call my “startup routine” (inspired by this amazing blog post). This set of tasks is what I start every work-day with. While it slowly changes over time as I refine my process, these are the things I currently have:

  • Triage e-mail

  • Review calendar for today and tomorrow

  • Triage and prioritize any newly added tasks - I try and use the Eisenhower Matrix to help me here

  • Put some time aside for the most important task for the day - if possible, block some calendar time for this.

I then feel ready to tackle the day ahead, marking items off my to-do list. At the end of the day, I have another re-occurring project - the “shutdown routine” (inspired by the same blog post). This routine helps me switch my mind away from work mode. Here I usually do the following:

  • Triage e-mail again

  • Review incomplete tasks I wanted to get done today but didn’t, and schedule them for another day

The shutdown routine is the single best thing that helps me “switch off” for the day - this has become especially important since I have been working from home for the past 18 months.

Review

The last step is to review and inspect your process. For years I neglected this step and only after I started doing this did my process actually start working. Reviewing how things are going on a regular basis (I do this weekly), allows you to make small and deliberate adjustments to your process. I recently wrote a Twitter thread on this exact topic as well. So what do I review? Every week, I open my digital notebook and answer the following questions:

  1. What went well this week?

  2. What could have gone better?

  3. What 1 action should I take to improve things?

The first two questions usually inform the action. Either I will want to double-down on something that went really well, or put a mechanism in place to fix something that went badly. For example, I was getting really bad at not splitting-up sprint tasks when there was scope creep. After a week where I closed off a task that rightly should have been 3 or 4 separate tasks, I decided to add an item to my daily start-up routine: “Is there any opportunity to split-up any of my in-progress sprint items?”. With that, I now set better expectations to the rest of my team on what technical work I am busy with and, more importantly, the scope of that work.

I cannot overstate how valuable the review process is. It is the singular thing that will keep your process working with the ever-changing environment that you work in.

And that is my process. I am certain that it will continue evolving. If you have thoughts or comments, feel free to drop those on Twitter. Good luck, and happy triaging!

Previous
Previous

Don’t teach in the void

Next
Next

A new blog?