How do you think?
It’s an odd question.
People think about thinking all of the time but they seldom talk about how ideas come to them. To the extent that I’m aware of my own process, I recognize that there’s a strong visuospatial component to my thinking. In my mind’s eye I see colors and shapes. When someone is talking, the shapes move. I think of the next question to ask. I build a picture — literally — of the problem.
I don’t know how typical this is. I do think in words too. If I hear a phrase another will come to mind — an association based on memory, or maybe just something I construct. But often, for me, words are labels I attach to the pictures.
In groups I use whiteboards a lot. Sometimes, sitting in a group of developers, we talk and we abandon the whiteboard, but I imagine everyone constructing models in their minds. Maybe they aren’t visual; maybe they are. The thing I find interesting, though, is that sometimes conversation stalls and someone realizes that several of us are really talking about two different things. Actually, this happens more often than I’d like to admit. I just know that, for me, it’s a translation process. Words and the stuff of thought are two different things. This becomes most apparent when I am speaking with people who are great developers but the bridge to words does not come easily to them. Sometimes a quick picture works or some pseudo-code. Other times, we talk around the thing until we get there.
The most interesting discussions are design discussions, especially when the structures we are working with are tentative. There’s a little dance that we do.. No one wants to pick a name. Actually settling on a name feels like too much commitment. What if the name is sticky? We’ll be stuck with it forever?
That might not sound possible but it is. I’ve tried a few times to change the names of things in decades-old architecture and discovered just how hard it is. The hardest cases were where multiple teams were involved and some weren’t aware of the issues that led the renaming. Conway’s Law strikes again.
But still.. we should be able to become better at changing names, or at least at using them lightly in design.
As an experiment, I’ve started to insist on discardable names in design discussions. If we draw something on the board I ask “what should we call this right now?” It’s like deciding the names of the variables for a mathematical equation. The names don’t have to be good but sometimes they are. Sometimes we do, literally, use letters of the alphabet as names. The important thing is that they are allowed to be labels with a lifetime no longer than the conversation. Sometimes they go on. They become key domain names. But discardable names and pictures help us grapple with the entities, the things, without confusing them.
I think there’s a lot more we could probably do about model mismatch when we are are having technical conversations. A first step might be to listen in a meta space while having discussions. Notice when they glitch and try to figure out why.