Do you ever get distracted at work? Yes, me too…
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”.
Every workday, I write an ordered list of tasks I will do at the start of the next workday.
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.
Easy start of the next day. Easy to get back on track when disrupted. My work day feels a little bit more productive 🙂
Mobile app developer with 12 years experience. Started with the Android SDK in 2010 and switched to Flutter in 2017. Past apps range from start ups to large tech (Google) and non tech (British Airways) companies, in various sectors (transport, commercial operations, e-commerce).