Hacker News new | ask | show | jobs
by JohnFen 284 days ago
> But the overall synesthesia? I have no idea. I assume that most people have some form of it? As unfounded as that is.

I don't get the physical reactions that the author describes, but when I'm in the zone, I literally stop seeing or being aware of the screen, keyboard, etc. and start "seeing" groups of geometric shapes that interact with each other in my mind.

The nature of that doesn't change according to the language I happen to be using, but the language choice can absolutely affect how easy it is to get in the zone. Some languages are better suited to certain kinds of tasks than others, and if I'm using one that isn't well-suited then entering the zone is simply impossible. Instead, I just feel like I'm fighting the language.

4 comments

Fascinating! Is the mental picture a side effect, or do you feel like it helps you reason about/manipulate the shape of the code?
It helps in my case. Bash is all about text so you just see text being output and manipulated. Something like lisp is about lists and eval, so you mostly see those and equivalent expressions. With something like React, there’s this tree representation of state that is always on your mind.

It’s a more abstract representation than code. Not as fixed, but helps greatly with designing the next steps.

It seems to be a side effect. It doesn't help me in any obvious way. However, when it's happening then I've also ceased to be conscious of writing code. It just flows of its own volition.

I mean, I know I'm writing code, but I'm not consciously seeing, analyzing, formulating, or typing in code.

Edited to add: On reflection, the geometric vision does actually help me sometimes. When there's something wrong with the code I've written (be it a syntax or logical error), then the shapes react in a way that I'll call "dissonant". I pay attention to that signal and more consciously analyze what I've just done, to find the error.

The reason I ask: there's a story about a physicist who was so kinaesthetic in his thinking that somebody walked into his office to find him rolling around on the floor, trying to embody rotations from the point of view of a particular system or something...

I can't say that my own subjective feelings while coding are so useful! But I like to imagine that they're a meaningful contributor to my "taste" of what good/bad looks like

(Wish I could track down the reference)

I certainly don't get as deep as that physicist, but I do think I understand. When I'm working out a difficult logical/data/programmatic problem, then I use my hands in a similar way. I'll form hand shapes that in my mind represent geometric shapes and physically use my hands to "arrange" them in various ways until something "clicks" in my head. That "click" isn't the win of finding a solution, but more like a feeling that I have now grasped the true essence of the problem.
Essence of the problem is the right word. If we go with F. Brooks’ words, it’s like all the accidental complexity fade away and all that’s left is the idealistic view of how things should work. Then all that left is making it happens with code
Which languages do you code in? Because for me the available mental structures I can use to think are radically different when I code in golang as compared to elixir, just because they have radically different paradigms for approaching data transformation.
Elixir is spectacular for visualizing, it’s all just changing the shape of your data all the way down, and all the standard modules have exactly the right tools for doing whatever step needs to come next. It’s so easy to find yourself zoned in. Go has the rhythm of error handling everything, it feels like you’re steadily plodding along with these mini checkpoints.
Yeah, if not for these checkpoints I think I'd have a much more fluid experience with golang, but I respect the fact they didn't choose to implicitly send errors through the callstack, I just never managed to find a good solution for making these callstacks clear.

Take this function I contributed not long ago to the project I work on: https://gitlab.com/nunet/device-management-service/-/blob/aa...

In it for each step in the procedure of saving the config file I need to check whether it's successful, otherwise send back the callstack. I often find it confusing to navigate back when I have an error and to maintain code that has many such steps.

I am competent or better in about 10 languages (a couple in each of the major programming paradigms), but in my current position I primarily use C, C++, and Python. I don't know golang or elixir.
I've dealt with C in college and nothing more, so for me It's just a bunch of macros on top of assembly. C++ was the language we used in OOP class, I know it's a beast of many faces, but we used it mostly like you'd approach using java. Python is very expressive but I think it's closer to C when compared to elixir because it lacks advanced pattern matching. I think the four main domains are procedural, object oriented, functional and visual (programming in excel for instance). Navigating those realms unlocks different ways of thinking and different mental structures. None is better than the other, they just lend themselves better to different classes of problems, and choosing the one that fits best your experience and the target domain will make it more likely to get in the zone when using these technologies.
I get synaesthesia in some languages (smalltalk, sclang, forth, lisp, occasionally perl) but not in any others. But I don't know if that has to do with the language or with the kind of projects I do in them, and I'd love to figure out a way to determine that. Maybe I should try writing a generic "not-in-domain" project in one of those and see.
I do the same, but I don't recall if I ever do it at the editor. I do the "shapes" thing when thinking about code design problems. (And not because I'm thinking in XML.)
Yes, I start visualising the machinery too.

Similarly to reading a novel. At one point the text becomes background and I start seeing the scenes in my mind.

Oh, that's an excellent analogy. I think I'll steal that!