Professionals who talk about this stuff never mention that learning computer science is a lot like learning a foreign language. The people who learn something in their early years tend to have an easier time learning new computer skills as they age. I wish more parents knew this.
I learned programming & CS at age 18 and I'm on par with people I met who learned it at say 11.
I learned English starting at age 5 (I read as almost fluently in English as in my mother tongue, Russian); I learned Hebrew starting at age 10 (I have a hideous accent and prefer to read in other languages); and I tried French in university at age 20 (it was the only time I had to take private lessons to pass the exam).
I'm not sure CS/programming are that much like foreign languages.
I said its a lot like learning a foreign language. So learning a foreign language when young would likely help you learn to program when older. Your case only helps to prove my point.
> I learned programming & CS at age 18 and I'm on par with people I met who learned it at say 11.
These people have 7 whole years of experience more than you have and the advantage to have gained most of it during a time where their brains have been most able to learn and embrace new ways of thinking.
Even though you are making an unlikely statement, it might be true in your case. But I'd bet a litecoin it doesn't hold true if you average it out over a bigger sample set.
Im similar to the person you're responding to. I think what really matters is if you've had exposure to critical thinking and logic in your life. For people who may not have much exposure to math or logic, it is probably much harder to learn CS at an older age.
Programming and graphic design perhaps (personally, I've yet to meet someone who programmed as a child who was better than a good programmer who learned later), but I really doubt there is much of an advantage to teaching your child Depth-First Search.
I don't really think CS is like learning a foreign language at all. The advantage for languages supposedly comes from the fact that we are hard-wired to acquire language at a specific age range ("Critical period hypothesis"). The biggest advantage is for infants, which steadily tapers off until puberty. I doubt we're hard-wired to acquire CS the same way - programming or theory.
> but I really doubt there is much of an advantage to teaching your child Depth-First Search
There is a huge advantage if you can teach it to him in a way that he can understand it, not just memorize the algorithm, like the unfortunate way kids learn to divide and multiply without understanding wtf they are actually doing, which is a big IF. It's a basic reasoning skill, even more basic than "basic logic" or arithmetic and if you can wire it into a very young mind you've changed that mind for ever. He will understand much better anything from philosophy to the theory of evolution, because you will have primed the mind for algorithms and logic. It doesn't matter if he ends up an investment bank manager or a politician, he will have learned how to understand algorithmic thinking.
90% of the population are, imho, what I call "mud-minds", they are incapable of deep understanding of logic and algorithmic knowledge, they can just learn instructions and apply them, sometimes to great results, but they don't "grok" them. And when it comes to truly abstract concepts that have no direct equivalent in the real world, they can only recite definitions from books, they have no "intuitive vision" of abstractions. And I think they are like this because their parents and teachers fed them a strict diet of 100% practical knowledge and scientific facts and never exposed them to abstract algorithms, patterns and processes. (As a different line of thinking, I think "separating the mind from reality" also helps young minds get a better grip of abstraction, like "running" an algorithm or visualizing a pattern as pieces of a fantasy world or advice of an imaginary companion, though child psychologists would obviously not be happy of such ideas of education...)
By teaching your kid something like depth-first-search (A* search on a game maze map would be even more awesome if you can grab a kid's attention though...), you give him a chance of not becoming such a "mud mind".
True, if a kid is technically oriented, you'll probably have more luck teaching him/her general programming before a bunch of algorithms. But the algorithms are the stuff that really "sharpens the mind" and you don't even need programming to get them, they can be explained in more mathematical or more graphical terms. And you don't even need a computer to teach a kid depth-first-search and you don't even have to tell him how it's called or what it is, just try and imprint a deep intuitive understanding of the process and algorithm on his mind.
> personally, I've yet to meet someone who programmed as a child who was better than a good programmer who learned later
True, but then you're already filtering out all the ones that are worse because you preselect for 'good programmers who learned later'. You should compare those who programmed as a child as one group versus those that learned how to program later.
The 'critical period' hypothesis is not the only theory and I don't believe its a useful one.
I think you're misinformed if you think brain development can be said to taper off in any way over 18 years. There is pretty clear evidence that it happens in distinct stages.
I think the real mechanism is that learning symbolic logic early causes a type of confidence that adults without find hard to acquire. Of course, my opinion doesn't really count here since my Karma is negative one now.