top | item 45196163

The subjective experience of coding in different programming languages (2023)

47 points| solarwindy | 5 months ago |interconnected.org

56 comments

order

JohnFen|5 months 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.

genmon|5 months ago

Fascinating! Is the mental picture a side effect, or do you feel like it helps you reason about/manipulate the shape of the code?

gchamonlive|5 months ago

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.

AnimalMuppet|5 months ago

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.)

k__|5 months ago

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.

cosmos0072|5 months ago

For me it's more about "feeling" badly written code, as if it stinks and is unpleasant to look at, and conversely enjoying nicely written one, and seeing its elegance and beauty.

Especially when I have to familiarize with code written by someone else, I usually start by "cleaning" it - small refactorings such as splitting overlong functions and simplifying expressions, that are trivial to prove as correct even without a deep knowledge of the code purpose.

Only when the code looks sufficiently clean and familiar, I start adding the requested new features

gibsonsmog|5 months ago

This is also how I have traditionally looked at new codebases. I don't necessarily actually clean it up (I dislike changing someones style unless it is completely necessary) but I build up a mental model similar to what you're outlining. It's been really interesting with these LLM coding tools. I may not disagree with the implementation in terms of logic (it just does what I've prompted it to do after all) but something about it will 'stink'. Amusingly this feeling is the true 'vibe' of 'vibe coding' to me.

I sometimes wonder if this is the result of experience/education (I'm not a compsci major) or if it's just a naturally different way to think about systems.

bqmjjx0kac|5 months ago

I also do this sort of restless refactoring. I find interacting with a new codebase is a kind of brain hack that (subjectively) helps me get up to speed faster.

genmon|5 months ago

(blog author here)

If you're interested in the multiplayer cursors + cursor chat, my philosophy is that every web page deserves to be a place, and pages should feel busy if lots of people are there

plus you can grab the code. here's the write-up:

https://interconnected.org/home/2024/09/05/cursor-party

airza|5 months ago

I think that’s a very cool philosophy but unfortunately it makes your website unusable for me on mobile. It feels like ants are crawling all over my screen.

GuB-42|5 months ago

First time I saw this, I didn't realize these were other people cursors, I really though the point was to be an annoyance (some people actually do this!). I thought the movement was random, and that it was a way to make it harder for people to see their actual cursor.

The country flags make it much more clear. Still an annoyance, but now I get it, and I am more than amused than annoyed now.

Anyways, it doesn't work for me on Firefox 128.11.0esr, Debian 11 (yes, outdated, I know, but still in LTS), I had to use Chrome/ium for the cursors to show.

crazygringo|5 months ago

It's very cool, but the motion is also incredibly distracting while reading. It literally makes it physically difficult to read.

Might I suggest quickly fading the cursors out entirely as soon as the user starts to scroll, maybe? Then you could have the effect at the start, but be less distracting while reading.

Or just a floating counter in the corner to say how many people are currently viewing it, maybe with the two most popular flags and your own flag and a fourth "other". Because it's one thing to know it's busy (cool, it's popular, I'm participating in something!), but it's another thing to feel busy, distracted, claustrophobic.

I assume you want to prioritize people reading your actual content over the feeling of busyness.

big_toast|5 months ago

This is such a cool effect but I'm afraid its novelty is conflicting with its affordances.

Have you seen cases where people are using it in a more familiar manner? Like, they've moved on from the newness but there's still a bunch of people? Feels like being in a subway station where everyone is bumping into each other right now instead of just sharing the space as needed.

chamomeal|5 months ago

I absolutely love it

danielvaughn|5 months ago

I'd have to think more about the synesthetic experience, but I'll never forget that my fingers hurt when I wrote Objective-C. I could never locate what the source was; I could have been pressing harder on the keyboard, or I could have been holding tension in my hands. But the language quite literally felt different in a very real, physical way.

edit: it could also have just been me typing with more frustration due to XCode :p

Cthulhu_|5 months ago

I loved working in XCode at the time, it just "felt" better, it made obj-c "feel" good even though it's a very old language; the navigation, the colour scheme (I think I used the midnight theme), using gestures to do a swipe history back, the integrated tools, side-by-side views, etc, nothing like it.

I tried it again last year or so though, trying out the newer tools like SwiftUI and its live preview, and didn't enjoy it; the stability and performance was just all over the place.

genmon|5 months ago

Great observation. Definitely something about those square brackets which puts my right hand in tension

johnisgood|5 months ago

I am curious about people's experiences who are really good and use the following languages regularly: C, OCaml / Haskell (although Haskell feels way different to me), Common Lisp (or any Lisp), Erlang / Elixir, and Forth / Factor. To me, these languages seem to be significantly different.

Edit (before I will not be able to do so): thank you for everyone's replies (in advance, too)!

foxygen|5 months ago

I've been working with functional programming languages for the most part of my career now. Mostly Elixir and Clojure, but some OCaml/Haskell too. I believe after FP "clicks", there is no going back. Everything else feels just so unnecessarily complex.

My favorite is still Clojure by miles ahead, besides it being a functional language, its data-oriented approach to writing programs is completely different from anything else I've ever seen. I currently work with Elixir, and there isn't a day that goes by without me thinking "gosh, this would be so much simpler to solve in Clojure".

Insanity|5 months ago

I'm not sure if I would consider myself 'really good', but in a previous life I have used Haskell professionally, albeit only for small-scale applications (alongside a Scala codebase).

For what it's worth, I actually really enjoyed using Haskell. It did force me to think differently about problems and I feel that this has carried over to writing cleaner code in non-functional languages like Go/Java. I liked it so much so that I wrote a book about writing functional code in Go along with a supporting OSS library.

Would I recommend it for really large-scale applications? Maybe not, because you'd want a mature ecosystem with a lot of support, and the secondary issue is that you want to have a large candidate pool when hiring people.

Small disclaimer though, the last time I used Haskell professionally was in 2018-2019, so it's not 'recent' experience.

wry_discontent|5 months ago

I use Clojure a lot at home and Typescript at work. The experience is dramatically different. Clojure makes me feel free. It feels easy to experiment and the whole world feels open to me.

Typescript on the other hand feels like being confined to a small room. There's not much flexibility. Not much is open to me. It's very regimented and I can sense better solutions, but they're off limits to me either because of the required type gymnastics or the language primitives.

jebarker|5 months ago

For others that found the website design made it difficult to read the post: there's a "quiet mode" button at the top right.

genmon|5 months ago

(blog post author here) I added Quiet Mode because of the feedback last time one of my posts hit HN, it was chaos haha

(btw you can hit / to enter cursor chat, it's fun if a bit distracting)

Insanity|5 months ago

Thank you for this! The website is insanely distracting, but at the same time kinda fun. Reminds me a bit of the chaos of the early 2000's internet I was used to :)

bitwize|5 months ago

I seem to recall reading an interview with William Gibson in which he said "someday we might have little squishy things that can read any form of physical media you wrap them around". That's what working in Lisp feels like to me. It's something squishy, and you can wrap it around any sort of problem and solve it fairly quickly. Smooth it out enough and it might even be an efficient or elegant solution. I've compared Emacs to a beanbag chair because it too is squishy, comfortable, and once in it it's difficult to leave, nor do you particularly want to.

Languages with nice type systems, like Standard ML or Ada, have the feel of Buckminster Fuller's tensegrity constructs: rigid yet flexible.

mjtlittle|5 months ago

I fully agree with everything mentioned.

I think this synesthesia idea bumps into the concepts of comfort and understanding. In that I feel it also extends to the environment im in and the tools im using. Like if I switch to a different type of keyboard or the monitors are positioned weirdly; or especially if im not using a certain IDE or developing without a language server.

Being immersed in software development, and the different ways we do it, can be a visceral and emotional experience.

hiccuphippo|5 months ago

> It’s a relief to close the braces.

I always type the closing bracket right after opening one then go back one character to start typing inside. Same with parentheses and quotes. It's a hassle when the IDE does it for me because then I have to delete one of them.

stronglikedan|5 months ago

you will submit to the will of the IDE...

ge96|5 months ago

I don't like not really knowing a language

I can barely do Swift for ex. where I come from JS/PHP/Python but I was able to get by working on an iPhone/watch app

Not vibe-coding either, just watching YouTube/reading tutorials

HPsquared|5 months ago

For some reason Java always makes me feel ill. C# is okay though, weirdly.

john-tells-all|5 months ago

I had the identical reactions, and like you it doesn't make a lot of sense.

Java: "stiff", awkward, verbose. Gets the job done but ugh.

C#: "soft", flexible, has possibilities

Although to be fair I programming in Java a long time ago, and haven't done much with C#. C# I see as a "corporate Python", vs Java I see as a language designed by committee and not for use by humans.

I've heard Java is way, way better now.

Cthulhu_|5 months ago

Java made me think in pure object-oriented, GoF Design Patterns systems; tight types, defensive programming, detailed documentation, the works.

But then I got bored with it. I like meticulousness sometimes, but it started to feel like Java was just excessive and impractical.

C# is an evolution of Java, and unlike Java didn't have a 8-year pause or however long it was before they finally started moving again (the period between Java 6 and 7 I think).

jolt42|5 months ago

That is odd, cursory looks at C# sure the hell looks like Java, certainly largely a blatant rip-off. Methinks you have feeling for Microsoft.

errkkk|5 months ago

i feel like when i copy something to the clipboard, its in my (little) finger, near the left ctrl key. it kinda tense till i can paste it and don't have to remember what's there anymore

Feathercrown|5 months ago

I get the same feelings when I edit code in different languages.

study_n += 1