The past week I've been using a tally counter alongside my TAPs. The trigger was a very general notice confusion, and the only action was paying attention and clicking the tally counter. This has helped be break down and separate different concepts that I’d been lumping together into the monolithic bundle of “confusion”.
Here are some sliders that a given “confusion experience” can have
Surprise: The experience of realizing that what you would have predicted is not how things turned out.
Update: In the face of surprise, what changes within your mind.
Confusion: The experience of some internal consistency checker setting off an alarm.
With those three sliders in mind, here are some recurring types of “confusion experience” that I’ve noticed.
Oh shit, of course!
Strong surprise, strong update, no confusion.
Ex. “What? I was sure that would compile! Oh shit, I fucked up some for loop variables.”
Nothing special to say about these. Ideally everything would be like this.
Faint surprise, wimpy update, faint confusion.
Ex. “Hmmm, it’s weird that they have a tutoring appointment planned for the friday of spring break. I guess that’s just how they role.” (I read the schedule wrong, and there was no tutoring over spring break)
These are the super sneaky one’s that I’m trying to get better at handling. Most times when I screw up by being wrong, I can remember the feeling of “Hmmmm, weird…” and never acting on it.
Am I being followed?
No surprise, no update, faint to strong confusion.
Ex. “I’ve got a sinking feeling that there’s something deeply broken about this code, but I’m not sure what.”
Because there’s nothing actively surprising, there are no obvious leads on where to look. It seems like following up on these involves overcoming the pressure to go, “Everything is fine and there’s nothing to worry about.” Often, if I sit with this confusion and slowly ask it questions, I can figure out where the problem is.
Why are the gods punishing me?
Strong surprise, no update, faint/no confusion
Ex. “The debugger keeps telling me that there is no tag field, but that can’t be true, so I’ve got no idea why this isn’t working.”
“Hmmm, Mike says he doesn’t understand what I’m saying, but that can’t possibly be true, so maybe if I just explain it again…”
This one is harder to describe. Some new data creates surprise and indicates that something is wrong, but no possible explanations come to mind that can reconcile the new information. Despite the very clear evidence that the thing isn’t working, no update is made, not even the update of “My code is incorrect” or “My explanation is not sufficient for Mike to understand”. There is an implicit conclusion of “the gods are fucking with me”, and a common response is to try “pressing the button again” until the gods decide they like you again.