Randomization of tasks and issues

So a while ago I have read Nassim Taleb's Antifragile surprising, given that it is written in English and quite recent [1]. I cannot quite endorse it yet, as I have read it only once, however, one of the ideas [2] I took away is the following: Living things strive on variability and some sort of randomization. For I am a living thing and somewhat organized, I thought about adding a bit of randomness to my own life.

One idea I already had before is that of randomizing training, just to see how I would progress on randomly assigning reps, sets and exercises, so I could compare different training programs to random noise. However, this task is a bit (it is really only a little bit) more involved than flipping a coin for one has to consider some parameter constraints and my training is currently mapped out until September, so that idea has to wait, unless someone wants to play guinea pig for me (if so, contact me).

The next logical step would be just randomizing my todo items, which is then what I did. As in tech, when doing math one usually has a long list of open issues, on each of which one should make progress. Some things can just be done grinding away, other things require deep thought and repeated attacks. So one has to juggle a bit, as you want to make progress on the grind projects, e.g. just texing some integrals or coding some boilerplate code, but you also want to think deeply about the hard problems. And actually it seems to work quite well, as I will explain.

The problem of organizing work

The problem anyone experiences, although most people seem to be unaware, is, that when you do it getting things done style and just grind away, well, you lose days where you are not working hard and think deeply. However, one of the best ways to solve problems is to think hard about a problem, read something related, then sleep over it, rinse repeat. Hence grinding (it is just the best word, as it is actually like grinding mobs in some RPG) costs you several such work-cycles.

On the other hand, only thinking hard does not get shit done. At some point you have to flesh out your notes, get the algorithm in production, figure out the legal works, what have you.

So if you have full control of your schedule, you would simply map out time for one kind of work, then again map out time for the other kind of work. But then again, you usually have more than one task at hand, and you still need to decide on what to do. And do not think that you just need to focus on one thing, because even if you have only one focus or goal, this in turn often requires a plethora of tasks to be done. The single minded focus everyone loves so much just works on another level.

As life is not binary, you also cannot simply attach each task a label like "quick and easy", "easy but tedious", "hard" or, the most dreaded task of all, "tedious and very hard, but still harder than you think it is". Some proofs are easier than even legal works, some proofs consume your life and sometimes you just do not know until you are several hours into it.

So we see something here: It is a complex problem with no apparent easy solution. One can think a lot about it and there are even thousands of books on how to manage your time and decide what to do next, most of which are dull and boring. However, the key point is: Complexity. And complexity likes variability.

A very rough and simple can-do system

So, if you have an issue tracker, you could just implement a "random open issue" function and be done. In my case it is even easier; I have in my home directory a file called .cando, [3] with each task on a line, e.g.:

write post about can-do
update server
improve diet script
moving averages

Then I have a similar file in other folders, e.g. the contents of ~/math/.cando could be:

Schauder estimates region 1
Schauder estimates region 2
Ecker and Huisken's thingy for non-compact maximum principle
tex compact case

Now, in my .bash_common (which is sourced by my .bashrc but synched across my computers) I simply added a function.

function cando () {
              if [ -f .cando ]
              cat $CANDOFILE | sed -e '/^$/d' | sort -R  | head -n 1

The sed command is just to remove empty lines, for I often leave a trailing empty line in files behind. So, whenever I want to do some work, I switch in the corresponding folder, type in cando and then there comes up the next task I will be working on.

There are some improvements one could make, maybe traversing up until one finds a .cando file (similar to git) or even a smart way to traverse down, but for now, it works just fine.

Wrapping it up

So far I am very fond of this little script. I mean no one forces you to do it this way and when you are just inspired to do some task, by no means you should invoke this script and then do something else! However, whenever I get out of a meeting or lecture, I can start working on something without having to figure out what to do, which often amounts to just checking the intarwebz or continuing doing what I did last, which often has diminishing returns. Plus I get to revisit projects which I haven't worked on for weeks, which is fun and helps to keep my mind fresh and sharp.

[1]On one hand, this is just a matter of statistics. Most books written are just crap. On the other hand, English is such a ... pragmatic language. The reason why everyone speaks English is just because it is the lowest common dominator in terms of complexity and hence beauty.
[2]To be more accurate, this is one instance of the main idea, namely that of antifragility, but lets stay specific.
[3]A little bit positive framing. Also I always know what I have to do, but when I start working the question is what can I do now?