Software developers: the 5 minutes habit that will boost your workday

Do you ever get distracted at work? Yes, me too…

The problem

We get distracted. By someone, a live issue, a meeting, a colleague asking a quick question, a broken build pipeline, and so on. Reasons are plenty.

We forget “where we were”.

My solution

Every workday, I write an ordered list of tasks I will do at the start of the next workday.

My implementation

Just before logging off, I set aside 5 minutes.

This is useful to do this every workday. Don’t skip it. Particularly, don’t skip it on Friday at 5.30pm. I know you want to get out of the building, but stay 5 more minutes, you will thank yourself for it on Monday morning.

Identifying communication tasks

I scan all my communication channels. Did I ask someone a question I am waiting on? Have I been asked something?

I scan all my tickets and code reviews. Am I waiting on someone to review a PR? Is someone waiting on me? Have I updated all tickets with the latest info and progress?

Identifying next ticket to work on

When I’ve just finished, or will finish very soon, a ticket, I decide which ticket to choose next.

If I can do that, then I think about the coding tasks for it as described in section below.

If I can’t, then I think about what information I need to decide and I write a decision tree.

As a recent example, I noticed some UI tests were flaky when sharding them, creating a few random failed builds. The last build has failed and I have just relaunched one. My choice is between picking up that UI tests flakiness ticket, or picking up the next ticket in the current epic I am working on. I made a decision tree such as “Was new build successful?” If yes, then work on next ticket in epic; if no, then work on UI tests flakiness ticket.

When the outcome of my decision tree is no more than 2 possible tickets, then I think about coding tasks for each ticket as described in section below.

This example is a simple decision tree, but it might be more complicated. Make sure you dig as far as you can, to give yourself a clear plan for the next day.

Identifying next coding tasks

I look at the last piece of code I was writing, or a ticket I am going to work on next. What is the next thing I can do? And after? And after? And after? And after?

Be as detailed as possible. The idea is to make the start of my day easy. Eg “create a new method to call API getItems() in ApiDefinitions.kt” is better than “implement new API call”.

I generally take 2 or 3 minutes to think about the next few steps. I like to have at least 2, though I generally aim for 5.

Putting it all together

I then take a pen, my work notepad (you have one of those, don’t you?), and I write a list of things I need to do the next day.

I start with the communication tasks. It’s best to remind people early in the day if you need their feedback. And, by reciprocity, I don’t like to knowingly keep people waiting.

Then, I add the tasks in decision trees, if I have any.

And finally, are the actual code tasks. If I have a decision tree with 2 possible tickets as a result, then I list the tasks I have identified for each ticket.

Sometimes, when I come to the end, I realise the list I wrote isn’t ordered properly, because I thought about another task while writing it. No sweat. In that case, I just write numbers in front of each item to reorder.

 

 

 

What next?

Easy start of the next day. Easy to get back on track when disrupted. My work day feels a little bit more productive ­čÖé

Mobile native app developer. 9 years experience with the Android SDK, 2 years with Flutter. Past apps range from start ups to large tech (Google) and non tech (British Airways) companies. LinkedIn natalie ( at ) cogitas (dot) net

Author: Natalie Masse Hooper

Mobile native app developer. 9 years experience with the Android SDK, 2 years with Flutter. Past apps range from start ups to large tech (Google) and non tech (British Airways) companies. LinkedIn natalie ( at ) cogitas (dot) net

Leave a Reply

Your email address will not be published. Required fields are marked *