A few years ago I discovered something strange: "Mental image" is a far more literal phrase than I had ever believed. It turns out that the majority of people really can "see" things that aren't in front of them. I cannot. It's a condition known as Aphantasia, and — although little is known about it — there are many people who have recently come to the same discovery.
Fortunately, people with Aphantasia seem to be faring pretty well. Ed Catmull, for example, was president of Pixar despite having Aphantasia. In fact, I would argue that limitations like Aphantasia can be beneficial in certain fields.
Imagine this...
Imagine, if you can, blindness of the eyeballs, not just the mind. A blind person must, necessarily, become a talented sightless navigator. Years of practice accumulate until a blind person can navigate nearly as well as a sighted one. They'll never be quite as quick at getting around, of course, but they can come pretty close.
But if you took a blind person and a sighted person and put them both in blindfolds, the tables would turn. The blind person — with years of practice — would be able to navigate quite well. But the usually-sighted person would struggle with even the most basic skills.
What Does it Mean for Me?
Aphantasia, I believe, is similar to the blindfold analogy. In the general case, I (and other aphants) will underperform in mental tasks. My reading comprehension of fiction, for example, is atrocious. But in certain cases everyone's mind is blinded, and my intense practice helps me in those areas.
I believe programming is one such occasion. Programming, as far as I can discern, is not a skill which is particularly aided by visual imagery. Almost everyone who is writing code needs to think in data, which can be a challenge for many. As a person with Aphantasia, I — like the blind in a blindfold — feel no less comfortable writing code than I do thinking about anything else.
The general principle, it seems, is that challenges and limitations can result in surprising benefits. I, for one, will be capitalizing on the good parts.
Top comments (1)
I have a very visual thinking style, and I just recently discovered that not everyone does. It also seems to be a scale.
Now I look at my fellow programmers, their ways of explaining, thinking, writing the code, constructing the architecture, and it seems to me people with more conceptual and verbal thinking sometimes have it easier with programming and software engineering.
I find it hard to grasp any complicated logical structure if I can't visualise it, and not everything in SE is easy to put in pictures. I don't really understand concepts when they are explained in words. When I read about "programming patterns" it's like there are some words on a page without any meaning. Same with, say, closure in javascript - I don't understand it when I read about it but a good visual diagram made it somewhat comprehensible, I now have that schema it my head as a reference for everyday coding.
If the code has services, models, objects, functions, etc as ecapsulated entities, I'm doing fine, but more often the code I'm working with is a mess, so usually no, not so fine. Functional programming is hard unless I can picture the functions as some mechanisms or characters.
Instead it seems to be easier for me to interact with UX and product teams, and understand users. I can play scenarios in my head as if I was watching a video. Which is helpful when you are a frontend dev.