Hacker News new | ask | show | jobs
by ible 2325 days ago
I don't know what 'cortical representations' are exactly, but it seems generally true that experts in a domain build up gradually higher level pattern recognition in their area of expertise. Whether it is driving a car, playing a sport or game, or writing software.

As a beginning programmer I had to consciously think about fundamental concepts all the time, or grapple with my limited knowledge of a programming language, instead of thinking about the problem.

As an experienced programmer I think in higher level concepts and abstractions, and the fine code details happen without me consciously thinking about them particularly.

This actually makes learning a new programming language or IDE more painful now than it was when I was new. It probably takes me less time to get to an equal level of skill in language X than a beginner, but getting to the level of fluency where the low level details don't require conscious thought takes time and practice. Being slowed down so much while getting to that point is deeply frustrating.

4 comments

For me I've noticed that over time I've stopped worrying about the code and now mostly care about the data. How it's stored, how it's transformed etc. The code comes from how the data is managed.

As a new programmer, you certainly spend more time thinking about the details and minutae of the code itself.

Changing languages within the same group tends to come pretty easy, a C-like is mostly similar to other C-likes, flipping from python to ruby isn't all the terrible (or vice versa).

Moving between language groups is harder though, still struggling to wrap my head around lisp and haskell for example. Probably due to my skewed upbringing, BASIC to 6502 to 68k to C to python.

> Moving between language groups is harder though, still struggling to wrap my head around lisp and haskell for example

I played around with CL and Scheme before coming to Clojure. I did not have much success with the first two but with Clojure it finallly clicked because at least on a superficial level Clojure seems to have more syntax than the other lisps (because of vector and hash-map literals). And eventually I understood why "code is data" in lisp. But I think that the visual distinction for the different collection types really helped me understand the concepts behind lisp better.

FYI: I haven't used Racket yet (if that should be relevant).

Took the words right out of my mouth! I feel a little guilty when I'm reminded that "the language is just a tool," meanwhile I am loathe to switch unless truly necessary. Honestly, I don't think I have the memory space to be deeply fluent in more than a few languages, and so when presented with the option of learning/using a new one, I weigh that against proficiency lost in other areas. I know it's not zero-sum, but context switches have a cost. Especially in industry, languages are often so similar that it's hard to justify. I used to feel differently, and be more enthusiastically polyglot (I've got production code currently running somewhere in the world in about 8 languages). It wasn't until I found a language that clicked with me that I even had the motivation to become really fluent.
What is that language clicked with you ? Can you please share ?
well, "cortical representations" is just a fancy way of describing modern day phrenology. I.e. you stick a programmer in the fMRI scanner, the signal gives more blobbiness in the brain cortex (i.e. the outer layer of noodles) in a certain pattern vs. an aged match nonprogrammer control.

If you actually get inside the skull and attach electrodes, you then can maybe measure the oscillatory dynamics and properties of say a bunch of neurons in a specific part of the cortex and claim there's tuning because some paramater - phase coupling, firing frequency, etc etc etc appears different than a group of aged matched controls. But I'm sure no programmer voluntarily agreed to non-medically necessary brain surgery...

I called this building consciousness. If you are pouring lot of code daily and moving between many projects, you will start writing comments automatically. Once you build enough consciousness about anything, learning become very second nature. And this is the reason 10000 hours rule work imo.

On side note, the biggest mistake people do is they can't think straight. If you want to learn coding, start coding first. Don't read theory or watch youtube videos. If you want to learn public speaking, start giving speeches. Don't read motivation books. This is how child learn. Fail and improve. Sadly many kids want to become hacker by watching hollywood movies and youtube videos.