One little productivity trick I use is to select tasks or work with a random number. The simplest form is numbering a list of things you could do, then selecting one randomly.

This can be applied to various things you might want to work on:

• Items on a todo list.
• Chapters or pages in a textbook.
• Tickets in a work-tracking system.
• A list of projects, with sub-lists of work items.
• Options in a decision you’re stalling on.

The random number generator on random.org is quite nice for this.

It’s helpful for a few reasons:

• It lets you just start getting things done without stalling (this is the biggest benefit in my view).
• It avoids wasting time on meta-work (over-planning and managing the things to be done is a common form of procrastination).
• It reduces the feeling of being overwhelmed by a big list of tasks.
• It builds a sense of trust that items will get looked at if you add them to the list.
• It lets you use different chunks of time by quickly finding a useful task that fits the time.
• It can produce a greater sense of achievement to complete a random sample of e.g. a textbook than to feel you got stuck on the second chapter. In other words it can unblock tasks.

The idea is also summed up by this AJATT tweet:

If you have the list of tasks as a text file (e.g. todo.txt), then you can get a random task with shuf:

shuf -n 1 todo.txt


I use Todoist (referral link) to stay sane with all the various tasks I accumulate. I apply the “random task” approach to it with this Python script:

import todoist
import os
import random

api = todoist.TodoistAPI(os.environ['TODOIST_TOKEN'])
api.sync()

item = random.choice([i for i in api.state['items'] if i['date_completed'] is None])
print(item)


You can alias and run it as a one liner in bash:

alias randomtodo="python -c 'import todoist;import os;import random;api=todoist.TodoistAPI(os.environ[\"TODOIST_TOKEN\"]);api.sync();print(random.choice([i for i in api.state[\"items\"] if i[\"date_completed\"] is None]));'";


Then you can fill any bit of time with something useful by running randomtodo a few times until you get something doable in the time you have. You also keep your list fresh by regularly reviewing a random sample.