At What Age is it Easier to Learn?
Maria D asks: "At what age do people learn faster? Suppose you want to learn to write code at a certain level. What age ranges will absorb the lessons the best? There is surprisingly little research on post-early-childhood development. A language won't be quite native if you start learning it after five or so, but what about adult differences? From informal observations in graduate schools, I've concluded that older people learn faster because of their experience in learning techniques, which seems so counterintuitive!"
FP
Age 3 and lower...
I'm hardly the person to ask on this, but I think I may be able to provide some insight. Language acquisition seems to be fundamentally different from learning the solutions to other types of problems. Computer code is a very additive learning process - it can be taught most easily (I think) by teaching it as a combination of pre-existing skills. It heavily involves mathematics, logic, "common sense", and breaking down a complex problem into many component parts.
Linguistics appears to be totally opposite. Though there are animals that can learn very basic linguistic abilities, though they are able to do many things that *look* like language, no chimpanzee, gorilla, or other (dolphins, etc) has ever been shown to actually use language. Likewise, no matter how much fundamental knowledge of grammar you possess, translating that knowledge into easily learning another language as a fluent language is extrodinarily difficult or even impossible (I'm learning two dead languages, Latin and Greek, so I feel confident to make this sort of statement).
Children aren't good at doing all of the componentry involved in learning computer code. It's impossible to explain memory allocation to someone who doesn't yet possess the ability to understand basic math (it's hard to teach it to someone who DOES understand basic math!).
I think the best age, personally, is someplace in upper middle school - around grade 7 or 8. Once you've got algebra, functions and expressions make logical sense. Proofs - geometry and others - make a great corrolary to code. You're given a set of known commands and asked to solve a larger problem.
So, anyway. Right before geometry, and continuing through it, probably would be the best time.
I've got a couple of small children. The 4.5 year old can get around pretty well, knows some programs work in windows and some in linux and can boot into whichever one she wants. She can also recognize the icons and start whatever game or explore the system menu and bring up other games and applications. What she can't do is read.
Sure, she's learning. She enjoys sounding out various words and spelling them. But she's gonna have a pretty difficult time writing programs and debugging code until she can read and understand various error messages. I think about the earliest you can expect learning to code to be productive is around 7 years old.
Looking for a computer support specialist for your small business? Check out
IANAL (I am not a linguist) but I'd say it would make sense that people learn differently at different times in their life. Perhaps in the early stage of life, thre is not much information to base learning on, so it is simply absorbed and retained in a certain way. On the other hand, later in life people can learn by methods since they have a ton of information to base their experiences on and also have had practice with different learning techniques.
I'm past 40 and whenever it's about what interests me the most, I have no problem learning new stuff.
I think it's more fair to ask at what ages are we more easily trained. We learn skills, repetitive routines, and hopefully creative ways to apply those routines when we're younger. The notion of routine and application aren't quite so tedious then because it's all new. As we get older we start to generate interests past the simple routines and our horizons broaden. As a chemist, I'm wonderfully interested in the application of programming and "what can I do?" but I'm no longer so interested in programming that I have the patience to go back and learn the formal syntax and the basic routines necessary to familiarize myself with achieving those ends within the context of, say, C programming.
Basic math is a great example. Throughout grade school we found ourselves doing 50-60 of the same problems over and over. Into high school sets were down to 10-20. By the time we get to differential equations we're solving only a handful of each type of problem because the method is so much more complex. Essentially, however, we're conducting millions (or approaching infinite) numbers of the basic calculatins we did by the dozens in earlier years.
As we get older we tend to eschew formal training in favor of more abstract pursuits. It can be said that we're less apt to learn. That holds true if learning is only defined to be an interest in extremely fundamental concepts that don't have easily perceived real world impacts.
fast as fast can be. you'll never catch me.
I don't have research data or any such thing, but I'm not so sure this is age-group specific. There seems to be a cluster of people who cannot learn even the most simple, intuitive things on a computer. Obviously, no matter their age, computing is beyond them. Others seem to have a natural grasp for the basic concepts - the logic and mathematics and structure - that makes it easier to learn a new computer language. Being older may make it harder to shift to a completely different style of programming language - say from DOS to LISP. But, given a certain level of skills and inherent talent, any age group could learn a new programming language.
The more important factors are desire and motivation. Learning a new language just because some management-level hack thinks it will be the next great thing(tm) could make any age-group lag behind. Learning a new language because it resolves a lot of the issues and difficulties encountered in an already known language or because it is necessary for the project one wishes to work on makes age irrelevant.
I was taking one day at a time, but then several days got together and ambushed me. (from a Rhymes with Orange comic)
Basically adults have more places to fit new knowledge into. Children have to learn everything from scratch, which is a bit harder. However children haven't already learnt a particular way to move their mouth, throat and tongue; so they learn accent very well. Adults have already learnt a different way to move them, and relearning this is harder.
-WolfWithoutAClause
"Gravity is only a theory, not a fact!"Since those factors and their importance to various skills differ wildly there is no real way to say the "best" age to learn.
There is surprisingly little research on post-early-childhood development.
Really? I'm sure that nobody has studied "the best time to learn a computer language", but if you've done a real survey of the literature, I'm sure you can synthesize your own answer superior to pretty much anything you can read here.
My own conjecture is that "developer ability" (the ability to construct your own abstractions, and use others effectively) as opposed to mere "coder abilitity" (the ability to make code "do this" and "do that") is probably almost directly correlated to mathematical ability, both in the K-12 and upper-level-college senses of the term. In fact I suspect there would be an almost direct parallel between the "numerical manipulation" skills that constitutes most math in a K-12 education, and the ability to do math at a Mathematician's level. To use the somewhat-out-of-date-but-still-useful Piaget naming, "concrete operational" vs. "formal operational".
I'm not saying the two are identical, just that the cognitive skillsets are so similar that the development literature for math is likely to apply quite directly to coding. Trying to teach an average six-year-old "Object Orientation" is probably too much abstraction for them; they may learn to manipulate pre-existing objects but I'd bet that until they become "formal operational" they will have a hard time creating good objects of their own.
OO here is just an example; functional, for instance, I'd expect to be even harder to really grasp in the general case. You could teach simple map and filter, but they aren't going to get the full richness. Again, on average.
So this is a meta-answer: I don't know the answer to your question, and 99 out of 100 people posting won't either. But I can refer you to the literature on learning math and guess that it is as likely to apply as anything, with the mapping I've given you here. I can't be sure, but it's a good guess. And I'm pretty there's been a lot of study on that topic.
(People rushing to reply to this are encouraged to be sure they understand the meaning of "concrete" and "formal operational", and the meaning of the word "average". If so, fire away, but I'm sick of people mentally editing qualifiers like "average" or "most" out of my messages and then firing with all cannons as if they weren't there, and if you don't know those Piaget terms you don't really know what I said here.)
(And while I've defined the terminology, I'm going to point out a lot of people who think they are "developers" are in fact "coders", at least as evidenced by the source code I've seen both in closed and open source projects. Few people seem capable of creating decent abstractions.)
Now where did they put that Submit button....
"Eve of Destruction", it's not just for old hippies anymore...
Before I saw my 13th birthday I recieved a full education in military history, mathematics, and the practical application of militar hadware and tactics. I applied my education in the effort to totaly blow the crap out of an alien race that we were currently at war with. Take it from me it's never to early to start. PS: If you haven't read the book ENGERS GAME don't mod me down, you're just not in on the joke.
Blessed are the pessimists, for they have made backups. -- 0 1 My two bits
So, if you must find the fastest person to learn how to program your computer to say "Hello, world"... You will pick a two year old?
Do you think it is the development that gets involved here, or/and experience? To take another example, it is hard to learn philosophy before you reach certain level of thought abstraction, AND experience certain life situations.
:-) What then happens to speed of learning vs. age?
Suppose we pick tasks that are not beyond people's development levels, such as riding a skateboard, or programming a goto operation
As somebody who regularly does algebra with four year olds, I can only agree! Kids can learn advanced mathematics on concrete materials. However, the question of speed remains. At what age do people learn it faster?
I began Actionscript in 6th grade, and mastered most of it during the summer. I learned that you really didn't need much math for it. But, for things that I'm doing now, like Php and C++, you need to have things like Algebra understood.
I learned basic programming back in the mid 80's. I learned Pascal in the early 90's in college. I learned Java 3 years ago when going back for my master's degree. I'm also a teacher who has had lots of classes in human development. I believe any kid can learn basic programming. Any kid who really gets into it could really make some great programs. It isn't until an adolescent develops more abstract thinking that they fully understand all the nuances of programming. I'm sure I'll get blasted by all those who could do all kinds of programming at an early age. Being a mathematician, I just don't see how anyone can be a decent programmer without the capacity to do upper level math.
I barely passed high school, now, 14 years later, I am a junior in college, with a 4.0 GPA.
...
I 'learned' basic when I was 9, I 'learned' pascal when I was 14, and I started learning C/C++ when I was 21. The problem is: I wasn't ready to do anything meaningful with that knowledge. To me it was like a game: Take a class. Get an A. Rinse. Repeat. Somewhere between 23 and 25, I started to *really* understand programming. Now I'm a month shy of 30, and I can rightfully claim to be an expert programmer.
With all that said, I think kids are ready to learn how to program once they've mastered long division (taught in 3rd grade when I was going to school), but they won't truly understand programming until they're out of college.
Personally I started learning HTML in about 5th or 6th grade. I could do some BASIC coding as well. But even at the top of my classes in math and science, I'll admit learning C structure at 10 was much more difficult than when I tried again at around 14 with algebra and geometry under my belt. Anything I suppose could be taught to anyone. But do you all remember struggling with Times tables in 3rd grade? It's challenging to do rudimentary programming without at least addition, subtraction and multiplication memorized pretty good.
It all depends on what you want to learn. If it's basic logical structure, then elementary kids can learn them easily. If you have to design using more complex abstraction, then you need to have mature understanding of abstraction and modeling (most probably middle school and up). If it involves other knowledge besides logic and math, then of course you need some experience (high school and up).
It's just like higher degrees. BS degrees are good for programming with known solutions. MS is good for solving solutions that are not easily found but can be devised using existing solutions. PhDs are for problems nobody knows have a solution and try to find one (or prove that a feasible one doesn't exist.)
It all depends on the level of knowledge you want the kid to learn.
I heard that kids under 12 are fast learners in auditory (accent) and visual memory (pictograph), and kids over 12 have that ability lessened, and instead gain more abstract thinking and generalization ability.
This should explain why younger kids learn new syntax fast, but older kids learn stuff easily that are similar to previous learning.
I wouldn't want my kid to memorize C syntax early on, and have it stuck in her brain. I'd rather she learns other thinking skills before tackling programming design.
>From informal observations in graduate schools, I've concluded that older people learn faster because of their experience in learning techniques, which seems so counterintuitive!
Aiming for a PhD after a score of years in corporate environment, I agree. It is somewhat easier to learn when you have real life experience to which you can attach the book knowledge.
But let's also not forget a major factor: MOTIVATION. Teens and even college kids don't necessarily have a clear motivation to learn, older people are usually learning for a specific purpose. It really helps to focus energy for doing the right things.
I'm fifteen, and desperately want to be able to program and speak French. It's frustrating now, though. BEHBEH
French people will forget the French language pretty quick living in Québec... :-)
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
Clearly you drill down to a different question entirely. The question of what age is it easiest to learn changes dramatically whether you are talking social etiquette, computer code or hide-and-[go-]seek.
... as I am now learning!
;0)>
I imagine it varies [for computer coding] according to the specific persons development. Also are you talking about coding effectively in a commercial environment (where social skills are vital) or lone-coding in your bedroom/study. Vastly different environments
For me, I peaked at about 17 for learning purposes (best A-level results in my town) and then went on to a 2:2 at Uni. My angle on life changed, mainly because I did philosophy at Uni and became a Christian. Maturity makes learning a different experience too as knowledge appears more valuable at certain ages. I do find my memory has degenerated vastly (I'm 28, or 29, something like that
FWIW, I'm sure there was a point around here somewhere!
I think the more you know it is easier to learn more. What you already know gives you a foundation to build on. If you don't have that foundation, you have to build it before learning more.
Don't blame me, I voted for Kodos
I don't see how this could be properly studied. I find it much more difficult to remember and learn things as I've aged. I suspect it could be from age, but it could just as easily be from the fact that I'm not focused on learning now that I am out of school.
I learned Russian at the age of 40+, having many years earlier wrongly concluded that I had no talent for language learning. What changed? Nothing much, I just developed an interest after visiting the country, which resulted in a higher level of motivation. Motivation is everything.
Music is another example. I plateaued my piano learning at the age of about 12, then gave up altogether (bad teacher too, but my own lack of motivation was a huge part). Then, at the age of 42, I discovered the violin. I've been learning at a great pace ever since. What changed? I heard a performance of the Beethoven violin concerto by Corey Cerovsek, and it got me interested in the instrument. Once again, interest and motivation were the deciding factor, not age.
As for technical knowledge, I learned relatively little in college (EE degree), but have learned a huge amount since leaving school. I learned more when I had a concrete reason to want to learn, rather than the abstract motivations that I had at a younger age.
So for me, the equation for ability to learn is simple... age is irellevant, motivation is everything. (Don't know if I'm typical, though. YMMV.)
... when you remember the phrase "Yes, dear." ... I'm here all week! try the meatloaf!
It's easier to remember when you are young.
It's easier to learn when you are older.
There are certain aspects of programming that programmers of ALL age simply do not get.
Use of Exceptions in C++ as they were intended is the biggest. I've yet to meet anyone except the guys who write the books, who uses them properly. Even many web sites and tutorials that explain exceptions do it wrongly.
This is next followed by the use of virtual functions correctly, as laid out in the C++ FAQs book. Programmers I run into tinker with virtual functions without really making the jump to basing their code around the entire idea of reusable, replaceable components.
This is followed next by OOP in general. I've yet to see a C++ programmer who abstracts his problem domain into objects FIRST and then proceeds to code.
I've been maddened and made curious by this inability or darnright refusal to make the jump to warp speed in ones programming. I try to patiently explain the benefits of these things and I get met with blank stares and chit chat behind my back about "controversial techniques" and my "using stupid Microsoft stuff".
Quoting the site http://www.infoaging.org/b-neuro-1-what.html , whose findings agree with other material I have read:
"Most studies show that, in general, cognitive abilities are the greatest when people are in their 30s and 40s. Cognitive abilities stay about the same until the late 50s or early 60s, at which point they begin to decline, but to only a small degree. The effects of cognitive changes are usually not noticed until the 70s and beyond."