Fractal Tasks and the Journey through the Forest of the Infinite.

Creative and open-ended tasks, new features to a product, and research tasks seem like they should be simple. You think of a goal, you start your work, and with a lot of effort, you will be eventually be done. But something awaits.

Image for post
Image for post

The reality is that an invisible and sinister force lies in wait to distract and dissuade even the brightest from their journey: The Forest of the Infinite.

Image for post
Image for post

Even though it may seem such a small distance between these two points, there is a simple and deceptive reason why you can get lost in this forest — fractal tasks. A task can cascade into endless variations of possible directions and subtasks to worry about. If you get too far drawn into a fractal task, then you may never leave the Forest.

Image for post
Image for post
Tasks can create endless variations of possible directions and subtasks to worry about.

As a professor for over 1000 students and mentor for dozens of researchers, I’ve seen how easy it is for anyone, even me to fall into this trap. To explain, I want to give a simple example of a recent programming task I set for myself and the traps within.

Image for post
Image for post
Docable Notebook tool.

We have a simple tool for creating executable notebooks for running instructions in code blocks. My goal was simple: create a dropdown that would allow a user to select whether the runtime was or , which were runtimes we already support in the tool.

This task fit comfortably within my level of programming experience; however, even for such as simple task, my journey took me into the Forest of the Infinite.

Image for post
Image for post
Fractal tasks for the dropdown feature.

Should I support virtual machines, remote virtual machines, and other connectors we also already support in the dropdown? What happens if docker isn’t supported on the system, should the dropdown be dynamically populated? Should I add a page for configuring and setting up environment preferences? This code now exposes that some features, such as streaming output, are broken in different runtimes. What about a busy indicator for while the environment is being set up? My dear, I’ve made a mess. This code is passing around too many parameters and probably should be in a library. What happens if…

I could have stayed in that Forest for a very long time. It is never easy leaving the Forest. One can rationalize a speedy run towards the end because this feature will never be used or we might go in a different direction. However, to ignore the gnawing doubt, to cast aside the excitement from endless possibilities — is never easy. Today, I survived my journey through the Forest of the Infinite. Although I have reached the end, what I have left behind are endless things to do and what I have made is endlessly broken. However, maybe next time, the path will seem more familiar and the way forward more clear.

Image for post
Image for post
Reaching the end, a runtime dropdown.

Fractal tasks and other productivity traps

How does fractal tasks relate to other productivity traps? With yak shaving, we need to overcome unforeseen, or tangential work, to make progress on the task. With bike-shedding, we intentionally work on tangential and low-impact work.

Bike-shedding is tied to procrastination, and yak shaving with poorly structured tasks or messy technology. A fractal task is rooted in the anxiety of processing and navigating the possible task space.

Written by

Assistant Professor in Computer Science

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store