At exactly this time last year, I wrote up my takeaways from what I was calling a personal "firebreak sprint", in which I wasn't actively designing new software:
In the context of Agile 'sprint' methodology, it's a break from the focus on deliverables (such as features) and instead a call to attack the problems that slow down development in the abstract.
In this case, since it was code written in my spare time, and required sustained periods of work, it was constrained to the weekends (hence a sprint duration was only 2 days).
The funky name was an existing metaphor of fire prevention, “like breakfast but for burnout”.
At the time, GitHub Projects was freshly 'GA' (General Availability, i.e. out of beta testing). A year on, they've relaunched it with roadmaps (i.e. Gantt chart views), thanks to support for date fields and the addition of an infinitely scrolling horizontal time axis.
My 2022 post series was a thought experiment and an excuse to ponder GitHub Projects, and it didn't stick (I stopped using GHP shortly after, and focused on ZenHub). Since then I've worked with Linear, and on paper using The Time Block Planner.
Task sequencing: the two schools
One of my hesitations with kanban (TODO lists, etc.) is that they are a call to consciously express the work environment in words, shutting off any non-verbal processing.
The unconscious brain is able to deal with a lot of info non-verbally, without expressing it in this way (undeniably less admin, and with no risk of ornamental busywork).
Consider a high-end restaurant chef juggling various complex dishes, made to order.
The chef's working memory is constantly tested, holding multiple tasks in mind. This is more than operations but also their relative timing.
The degree of potential cognitive burden increases with the complexity of the tasks, and machinery/automation relieves it.
Contrast this with the fast-food setting, which is a more intensely mechanised system, designed to minimise operator cognitive load, maximise repetition, and optimise speed and consistency.
The fast food joint's task sequencing is guided by environmental cues like beeps or lights, and the operator's main task is loading and unloading. More subtly, there's relatively little expectation that workers in the fast food kitchen will verify their product by tasting it: in software terms akin to having no 'runtime validation logic'.
The quality of the end product is, as far as possible, ensured by 'shifting right', responsibility is taken off the kitchen floor and onto the factory floor: as ingesting data models with known structure/types guarantees quality (or shifts responsibility) upstream.
The tight spatiotemporal locus of control of qualities in a high-end kitchen (like artisanal choices of flavours, ingredients, presentation) is notably predetermined in the fast food kitchen, and in fact even in the supplying factories, whose engineers receive preset configurations and parts lists that were designed in labs (likewise the supermarket ready meal). The locus of control for the qualia of an assembly line food product lies in a chemical engineer's design blueprint, a designer's CAD model, or a bureaucrat's spreadsheet.
First person human factors engineering
I gave GitHub Projects zero thought this year until one day mid-August in a brief log jam of multi-WIP overwhelm, I had the peculiar sensation of an inability to 'task sequence' (i.e. to look at the tasks and logically order them).
The sensation was quite bizarre: like I was suddenly unable to read, but specifically for reading between the lines of a work tickets to find the point to resume from.
In this case, I was acutely aware of my inability to read between the lines. At the same time, I knew that, logically there was a way to structure my tasks, and that any ambiguity was only due to insufficient structure.
I've been thinking about structured outputs (the use of Pydantic models to guide LLM generation, as in outlines from Normal Computing or Function Calls from OpenAI).
I consulted resident scholar GPT-4 for relevant research, which mentioned task switching, cognitive load, intuition, and some interesting connections bang out of the blue:
-
Cognitive Task Analysis (CTA): studying how people use their expertise to make decisions to perform complex tasks proficiently (e.g. to design interfaces).
- Understanding and representing the cognitive processes, knowledge structures, and decision-making strategies that users employ when performing those tasks.
- I've previously encountered this domain via 'Think Aloud Protocols', in which users are encouraged to verbalise their thought processes. Other methods include structured interviews, concept mapping, and prompting.
- Relevant to designing systems to be intuitive, supportive, and aligned with the user's mental model.
- Paper: Applied cognitive task analysis (ACTA): a practitioner's toolkit for understanding cognitive task demands in Ergonomics (1998).
-
Hierarchical Task Analysis (HTA): analysing the sequence and structure of tasks, breaking sub-tasks out hierarchically, giving clarity on the order of operations and dependencies.
- Repeated recursively until reaching a sufficient level of detail to describe the task.
- Relevant to creating systems that help users complete all necessary sub-tasks (i.e. well aligned with user needs).
-
Situation Awareness (SA): a concept from human factors and ergonomics research, meaning understanding what's happening in the environment to make effective decisions.
- A person's ability to "read between the lines" of task lists and discern an order is a reflection of their level of SA.
- Often discussed in high-stakes environments like aviation, military operations, and emergency response.
- Techniques for studying SA include the freeze-probe technique and self-assessment measures.
- Paper: Towards a Theory of Situation Awareness in Dynamic Systems in Human Factors (1995).
This post is part of Supporting and structuring personal development and open source contributions with GitHub Projects, a series covering how I began using the GitHub Projects tool for tracking my personal development and shipping outside of work. Read on for part 1, discussing how to define your personal development goals