You don't factor in switching costs and opportunity costs.
Human professional development is path dependent. Starting to code earlier means you start to get monetary or psychological utility out of it before you learn other marketable or self-actualizing skills. That creates a positive feedback loop that is not available in most other disciplines for a young person.
As soon as one invests significant effort in becoming a marketer or a banker or a physicist, the opportunity cost of spending time on learning programming is so high, most opt out of it. While in the long term, skill combination might exponentially increase monetary utility, happiness utility growth doesn't have the exponential curve.
So yeah, it's really important to start as early as possible before one is invested in his or her primary field or picking up computer science could be an irrational choice.
While one could certainly learn CS in the later life stages the probability of doing that is quite lower.
If you agree, consider to tell this o parents of young kids you care about.
Agreed. I'd add this thought: code is a human language and like all languages fluency is most easily developed as a child but immersion and repetition can help adults develop it too.
Having said that, I do think that learning programming young is a good idea, but not because it's "easier" for children. Instead, they simply have a much longer time to get used to the "logical way of thinking" (I don't know of a more concrete term for this, but hopefully you know what I mean).
I would not expect someone who started at 10 and is now 20 (10 years experience) to be a better programmer than someone who started at 20 and is now 30, or even someone who started at 50 and is now 60.
Experience is a big factor, but I think there's a limit to the amount of language learning most 50 year olds can undergo, even in a decade. But luckily for us we agree young exposure to code is a good thing :)
I wonder why you think this is true? I have personally never been given any reason to believe that a 50 year old is any less able to learn a language than a 0 year old. In fact, if you took a 50 year old and dumped them alone in a foreign country and gave them one or two dedicated language teachers and left them there for many years (which is the environment in which most children learn a language), I expect they would learn the language just as well as the child, if not better.
It's well documented that the median language-learning speed/ability of younger people is greater than that of older people.
Wittgenstein's philosophy of mathematics might be interesting to you. His description of calculation as a linguistic process should settle the issue if you buy it.
Edit: just found this related item on HN, a math prof examining the nature of a proof: http://profkeithdevlin.org/2014/11/24/what-is-a-proof-really...
By the way, older people who share the characteristics of being only lightly acculturated (i.e. eccentric) share the relevant characteristics with children and may be able to learn things like languages with childlike speed. Hence, I believe, PG's observation that startup founders of any age tend to be weird, quirky, or poorly socialized in various ways.
all cultural, mutable, consensus based concepts are more easily learned as a child
There are many "hobbies" that have a cultural component. It helps to learn these earlier, because it removes cognitive overhead during later studies. But its simply not true that children are better at learning everything. They are hard-wired for language tho. Plenty of other things they are un/der developed for.
I have recently found tools that are mostly used for learning natural languages are also useful for learning programming languages. Computer flash card programs, like Anki, are effective at memorizing a vocabulary efficiently. Just like real flash cards, you put an English word or definition on one side, and the word or phrase on the other side.
So as I've been going through a Coursera on the R programming language, every time the instructor explains a new function or way of doing something, I put it in an Anki flash card. I haven't been doing it for long enough to be certain, but so far I think it's been pretty effective. Because 90% of the work of learning a programming language is just like a natural language; the vocabulary and grammar.
You could also use this to learn mathematical notation, but that's only a small part of it. I have yet to find any use for this system in my other Coursera course on logic.
Computer science skills roughly follow a sigmoidal curve over time with long tails at the top and bottom. You really do not become useful as a programmer until you hit the hockey stick part of that curve. There is no substitute for time in the field to get to the hockey stick part. The primary advantage of learning programming when you are much younger is that you essentially burn down some of that initial time investment before you are really paying attention to how long it actually takes to be an effective programmer. You do not hit the hockey stick faster, it just seems like it to other people because you started down the path to get there earlier.
This is discouraging to people that start in college or later because there really is no shortcut to time spent doing it. The people that become good programmers faster usually just started earlier, it isn't necessarily that they are naturally more skilled. Nonetheless, the time required to become a good programmer is not that onerous in the big picture. The key is sticking with it even when the payoff seems distant.
As an added comment, people that do well at the top of the hockey stick, where there return on additional investment is diminished, do tend to be the people that started much earlier. Again, this is not due to talent per se but the same people sufficiently obsessed with computer science to teach themselves at a young age also have the obsession to learn and master the more esoteric parts after they've become excellent programmers even though the practical utility is much less in practice.