As a follow up to my previous post on minimum concept count, I wanted to talk a little about the psychology that I see backing up the idea.
When I compare myself to many of my colleagues, I note that I often take longer to grasp a concept in comparison. What I notice is them being able to dive into an unknown area, and effectively reason about it, and pretty quickly. When I try that, I’m commonly met with what I call a fog. It is as if I just don’t know up from down, I feel stupid. If I put in the effort, and persist through the fog, the fog slowly lifts (or sometimes it can lift suddenly) and I now understand. I can now reason about the topic as well as anyone else.
Therefore, when I see colleagues mentioning new technologies, for example, I find myself giving careful consideration as to whether I should invest my limited energy into understanding it: is it worth myself entering into that uncomfortable “fog”, until it lifts? And that understanding comes at two levels: “what is it for” comes first, and then “how would I use it?” comes after that. The first is understanding how the technology fits in with everything else I know about technology, and the second is about how I would actually make use of it. Take a Rubics Cube. For the first, it is a game that I can have fun with, for the second, you turn the sides around repeatedly, while thinking hard, until all the colours match. Learning each of these two things about a Rubics Cube are very different experiences.
The challenge when thinking psychologically about minimum concept count about your own products is the need for empathy. That is, empathy with potential users of your technology. We need this so that we can identify what concepts a user might be expected to already have absorbed. Let’s say the software I’m making is a computer game, do I need to explain to a potential user what a computer is?
Let’s say I’m making a library for string interpolation in Golang. There is little chance of a user being interested in my product if they don’t already know Golang, so that’s safe. String interpolation? There’s a reasonable chance they’ll be familiar with the concept too, as Golang likely isn’t many people’s first programming language (yet). But if our library was around machine learning, then there’s quite a few more steps needed, and assessing the starting point and learning journey of a typical user becomes all the more important.