I was talking to a younger cousin and he expressed a desire to start programming. I was unsure what to tell him, as I started when I was very young on a BASIC computer.

He's over 18, and I always feel that people who are meant to program start young or have an interest from a very early age. I told him so, but I am not sure if I dissuaded someone who has great potential.

What do you think?

+24  A: 

Age does not matter that much ; I know good programmers who started programming when they were more than 30 years old ^^
(Mostly because they changed job and were doing something totally different before)

Even when programming is seen as a passion, and not as a job, there is no "ideal age" to begin ; even if many of us started when we were quite young...

Maybe we are more capable of learning new stuff when younger, though... But it doesn't prevent people a bit older from learning too !
And that's a good thing :-D If we were becoming stupid or stopped learning when we reach 20... ergh !

And, I think, it's probably more a question of "ability" than age : I mean, there are people who will never become good developpers (like for any other activity/job), and there are people who will immediatly get to whatever programming-related stuff you throw at them.

Really? To be honest I don't think I've met anyone who I'd consider really good who didn't start as a kid. No offense intended to any late starters. I just haven't met any.
None taken.
Yes, really ; Maybe not "uber-famous developper", but above average, at least ; while I've seen quite a couple of people who started arround 18-20 being not so good ; and lots of people who started younger being very good -- some about passion, I believe : many people who started arround 18-20 did this to get a job, whereas people who started at "uncommon" ages started programming as a passion... and people are generally better when it's more than just a job ;-)
The programmers that I know that started early tend to know a lot about programming but relatively little about other subjects, and this has consequences when it comes to doing non-standard programming things and thinking "outside the box". As an example, I've done a lot of work with genetic programming and neural networks, and I continue to be surprised at how little progress has been made in these areas. One reason for this is that most programmers know next to nothing about Biology.
Ouch, I'm one of those programmers who started not too old... And I almost don't know anything about biology :-D
I heartily recommend The Blind Watchmaker by Richard Dawkins. It's what got me started, and it even has a program in it!
Also, my earlier comments were @cletus. I agree with your answer and comment.
@MusiGenesis: Most people know next to nothing about biology, no reason to single out programmers.
@FogleBird: my point was that just because a person spends their early years learning about non-programming-related subjects does not mean they can't be a good programmer, and in fact it means they can often become a better programmer than someone that just learns programming. You can think of it as cross-training for the mind. A runner who also swims will not only be a better all-around athlete than someone who just runs, he will also be a better runner.
Am I missing something? 18 IS YOUNG. 20 IS YOUNG, 25 IS YOUNG.
I'm with you, JL.
@MusiGenesis I disagree that a runner who also swims will be a better runner than a runner who only runs. They'll be a *different* runner. There are benefits to both approaches.
@NoMoreZealots: sorry, the statement "you learn by culling neuron's [sic]" is simply not accurate. You're (presumably) describing the process which mostly takes place in the early years of life, whereby dendritic connections between neurons are culled (aka die off) from relative lack of use, not the neurons themselves. And at best, this process represents only one type of "learning". I would have ignored your comment, but you're using a factually inaccurate statement to support an easily refuted assertion (that learning doesn't happen or rarely happens after age 20).
@MusiGenesis: Developmentally 20 is not young, the brain's growth is primarily in the first 10 years. Most people's like's and dislikes are set for life by the time they are 20. (Studies have shown this true.) There might be things they never knew they liked, but wiring is already layed. If someone has a matmatical and logical background, then progamming might come naturally to them. But the earlier they start, the better the odds they will develop a logical and mathmatical thought process. While this is not the only type of learning, it affects the things you can easily learn at a later age.
@MusiGenesis: A study used music as a primary example. They concluded that "likes" and are locked in your early 20's. Disco era folk, generally think Rap is noise because it came out after thier neural development had settle down. (They aren't the only ones, but as a general rule they definitely don't like it.) When it comes to learning to use a computer, if people aren't interested in that type of activity to start with, they aren't going to learn it. I've never met a person who couldn't use a computer and "Liked" computers, liking something has a big impact on learning
+1 for ability than age. I think that's true. simply pointing them should help if the kid is passionate about programming.
+1  A: 

It really depends on the person. While it is true that many "super programmers" start young there are plenty of examples of famous programmers who didn't start till their 20's.

You can't come up with a better example than the underscore king?
@MusiGenesis: 'underscore king'? O.o
David Thomas
@ricebowl: Let's just say I think there are a lot of accomplishments in the computer science field that are more impressive than RoR. If DHH weren't such a self-promoting douchebag, I would have kept this opinion to myself.
Sorry, I meant "self_promoting_douchebag".
self_promoting_douchbaggery aside, I think the point is still clear: you can start programming later in life (as in not_as_a_kid) and still do well
+1  A: 

I don't feel that you have to start at a young age to become a good programmer. To become a great programmer, one that really makes a mark on the computing world, then maybe, but decent enough to make a living out of it, hardly.

It all comes down to having good logical skills and be able to interpret and dissect abstract problems. A structured approach coupled with patience and a desire to always strive to become better and testing your limits also helps.

I didn't start to program much until my CS degree. After that I do a lot more programming. Just because someone starts to program young doesn't make him a good programmer. He can still write bad code or code that no one else will be able to maintain. I also find that self-taught programmers often lack the will to document their program and approach, but this is a wild generalization.

+1  A: 

It may have been true, when you started programming, but today you can start very late and become good anyway. Expectations to a software developer are different today than it was back in the old days, and they will further change in future.

My impression is, the expectations and knowledge required is generally lower due to better development tools and different project setups. Someone who didn't show any intentions in logic and mathematics before 18 will very likely not become a kernel developer or programming sientific software. But there are very few such people required, and he might become good and useful in SAP or something similar.

+2  A: 

It really has little to do with age. I mean, if you are already familiar with some concepts of programming it makes it obviously easier to progress. The problem with learning things at a young age is that they are more difficult to understand (you might quit too early) and you are more likely to have gaps in logic.

Nevertheless, 18 is not that old. I am 20 now and even though I have been programming since a young age (12 or so), the majority of what I have learned about programming has been in the last two years since I have been able to comprehend concepts easier and have more motivation.

+3  A: 

I'm 45, and there wasn't even a computer in the highschool where I graduated. Plenty of programmers my age or older had to have learned later than childhood. So it's certainly possible. And in the case of younger folks, with regard to interest or not as a child - depends on what you get exposed to, which you have little control over at that point in life.

Editing to add these examples:

In "Stiff asks, great programmers answer," to the "How did you learn programming?" question, the following gave answers indicating they learned in college:

Dave Thomas (author: Pragmmatic Programmer, Programming Ruby)

Guido Van Rossum (Python)

Bjarne Stroustrup (C++)

Tim Bray (XML and Atom)


Editing again to add one more, a quote from Brian Kernighan (the K in K&R):

"It's true that I started working with computers probably in the mid to late sixties, when things were fairly early on, and it was entirely by accident. I think I saw my first computer in 1963; it was an old IBM 650. I didn't do any serious programming until in 1964 when I was in my last year of college."


I'd consider college to be "learning while still a child". :)
+3  A: 

18 is close to be too old for starting ;) I'm kidding a little. But many of my developpers friends and I started at 10 or so. I also met people in their 50's really motivated and interested by the concept. And they did wonders.

But as for anything, children learn faster than adults. In any subject.

I started (professionally) at 27, whippersnapper.
Whippersnapper ? Could I know why you are being insulting ? Perhaps you didn't understand what I wrote. You should read it again : I'm not saying anything bad about people starting at a more mature age.
It was just a joke. "Whippersnapper" is a phrase only crotchety old people use, like "you kids get off my lawn!" I assumed it was so self-evidently silly that I didn't need to add a :)
I see why you took offense, given this definition of the word: "an unimportant but offensively presumptuous person, esp. a young one." I apologize again. In the real world, I would only use this phrase to refer to David Heinemeier Hansson. :)
Hope you enjoyed your drive-by. :)
Hehehe. Yeah i read the same definition. ;) No harm done.
+4  A: 

You never know until you try, and he probably won't kill anybody (although I once had an experience with a programmable baseball-throwing machine and a little-league field that suggests the chance of that isn't 0%).

+1  A: 

I started programming when I was around 16 yrs old and I could probably have started a lot earlier (since I was 4 yrs when I started playing computer games). One of my colleagues started when he was 7 and he did some programming on a Commodore 64.

You're never too young or old to start learning programming. It's all a matter of aptitude instead.

+1  A: 

I started at a very, very young age (my grandfather was something of a pioneer, I guess). The one thing I think it did for me was help make me unafraid to experiment.

+1  A: 


Don't let age limit yourself. I've met lots of great programmers who didn't get into programming until later. As well as having to endure those with vastly elevated opinions of themselves based on the fact that "they've been coding in their bedroom since they were 11".

It's more a question of mindset rather than age as to whether you should start coding.

As Declan, a colleague, would say, "reality trumps documentation!" (-:

There are lots of good books out there about starting to code in various languages, currently in favour, so don't limit yourself to VB which will, in all likelihood, stifle future possibilities.

One excellent book is "Learn to Program" by Chris Pine (sanitised Amaozon link) which throws you into coding in Ruby.

There's also an excellent book about learning to code using Python called "Practical Programming: An Introduction to Computer Science Using Python" (sanitised Amazon link)

I'd tend to steer someone away from VB and get them started using a language that can scale to their ambitions.

BTW Though thes books are both from "The PragProgs", I'm not associated with them in any way. I just enjoy many of their books, but pity about the prices though.

I can understand new books being charged at a premium, but still charging $40.95 for their "The Pragmatic Programmer" book after nine years, without any form of update?!?!

If they want to get their very important message out, and it's a great and timeless set of messages in fact, I would've thought that they would:

  • update the book, or
  • reduce the price to make it more available to spread the word.

Jees, "Code Complete", my other "go back to read every bits now and then" reference book, has been updated by Steve McConnell. And! It is still cheaper than the 1999 Pragmatic Programmers book!

Naturally IMHO.



Rob Wells
+5  A: 

As with most things, the more time you spend developing a skill and the earlier you start developing it the better you will be. However, the human body and brain are capable of amazing things, even into old age. I think individual passion and commitment has A LOT more to do with it then age.

Mark Hammonds
+7  A: 

Age has nothing to do with science!

Good answer. I had a reader of one of my articles write to me, and during the exchange he revealed that he had started in his late sixties. He was well-versed in basic and assembly language, perhaps others.
Don Branson
yup, like all respectable men.
+2  A: 

I first started to learn OPL programming (like BASIC) on the Psion when I was about 10. I have only been programming seriously since I was about 14/15, and to begin with, that was PHP. I have since dabbled in Ruby, Python and C#, and now I am up to my neck in C++.

I don't think you need to start coding while young, but it helps. Trying lots of different languages has given me a large understanding of different techniques and syntaxes. I am also very happy to learn something new if it might be a better choice. If you learn to program as an adult, I think you may end up starting with one language and wanting to stick with it rather than giving alternatives equal consideration.

Tom Savage
Jack Webb-Heller
+2  A: 
Norman Ramsey
Yes, and compared with physics or maths, programming is relatively easy.
@ChrisW, yeah, but without knowing the other things, what will you program for?

As a programmer you are pretty much finished for original tight high quality code by 35 years of age. High School, college dont matter to a real programmer, just manuals, specs, and such.

He or she must have access to material to learn to read and write techincally, but beside that a programmer needs nothing till they are richer than heaps and over 35. Then they can retire, hire a wife, get fat and perhaps buy a friend or two.

A programmer makes a great father or mother since they hate tv and computers and love nearly everything wonderful in the world.

My advice, no age is too young. Tie them up and make them code at age 3, let them out when they can afford to pay you off fo being their parent with a home and lifetime anuity.

Dont let them get fat. Fat programmers only get fatter and fatter since they never move. One thing you can do them a solid on. Dont feed them anything unhealthy and only once or twice a week.

Henry San Diego
+1  A: 

I read somewhere (And Wikipedia concurs, so it must be true!) that it takes 10 years to really master a new skill, any skill. So, people who start at a young age, and apply themselves to mastering that skill, will be an expert at a young age.

I don't think 18 is too young to start programming. But your cousin should be aware that it will take 10 years of dedication for him to become a great programmer :).

If I might also suggest a place to start: Chris Pine's Learn to Program is truly excellent. I've used it in a programming course for beginners that I taught at work, and it worked really well.

+2  A: 

Edit: E. Dijkstra started out with Theoretical Physics, but decided he liked computer science better. I'd say there's always hope, to even be a well known programmer. Still the earlier the better.

18 is certainly not too early to learn and if he has a genuine interest not too late either. The way the computer world is today computer programming almost always requires an effort be made by the person wishing to learn. It's not like the old days where the default interface was the "Ready" prompt, so I wouldn't hold it against him not learning before now. In the 80's kids used the computer's more than the parents. Now the parents are often afraid to let the kids "play" on the computer because the OS is so fragile that an uninformed user can do real damage. (That's not assuming the parents aren't uninformed, but paranoid regardless.)

The younger they learn the better. I think of it like math, you wouldn't wait till college to teach a kid addition and subtraction if he was going for a math degree. But that's what we do with computer science due to the fact that the education system is ill equiped to introduce kids to computer programming because it's yet another discipline for the already overburdened educators to learn. The result is at the same time you're learning Calculus in math, you're learning your basics in computer science.

What we lack today is a ubiquitous language on a unbreakable OS. We went from an industry in the 80's where you turned it on and it just worked, to an industry today where just using a computer normally can "break" your OS. (i.e. Internet based spyware, viruses, worms, trojans and general crap-ware.) We need to take a more "consumer electronic" approach to computers today. They need to "Just work" without require regular tech support.

+1  A: 

I started at the age of about 14 and a half (I'm not entirely sure when exactly), but I think, that you can start at any age. Programming is like any other thing, if you can learn it, and develop a feeling for specific things, why shouldn't an 18 year old or for the matter 30+ year old start programming? I don't see a difference, except for maybe that the earlier starter has a better intuition of some things, but that shouldn't be a problem either. Programming is a profession which also needs evaluation of others in my oppinion.

If he can get a feeling for it, why not? If he doesn't like it, he will stop doing it on his on anyways.

+1  A: 

How young is young to begin programming?

I'd like to refer the Light-Bot as an example.
This is an excellent game that can be used
right after children understand basic strategy and
can drag-and-drop with the mouse.

  1. Start with such games as early as you can
    Use them to identify when to move to the next stage
  2. Then, work with educational languages for real programming education.
    (that superuser question reference has another Light-bot admirer, and another here).
  3. Let the person learn programming on their own after that
    Beyond a point, you cannot teach, only mentor (those who listen).
    This could very well mean the person will leave mainstream programming and
    choose some other discipline. Which is fine.

A like-minded blog post describes,

Light-Bot is a good pre-introduction to imperical programming, and it does of good job of teaching people how to use Functions, and it also demonstrates why Functions are useful. It doesn't use conditionals, control loops, variables, or parameters, but one could imagine an advanced version of the game that did. Light Bot is a successful casual game by Coolio-Niato, sponsored by Armor Games. It probably didn't set out to have much educational value. My guess is that the creator just realized that programming a robot would make a fun game, and learning some basic programming concepts was a side effect. Our challenge as educational game designers is to get the same outcome, but from the other side. You know what you want to teach, but how to you make that fun?

Another local reference:
Best ways to teach a beginner to program?

I am currently engaged in teaching my brother to program. He is a total beginner, but very smart.


In general I'm in favor of starting young because it helps children develop critical thinking and logic skills which they often don't get elsewhere.

Does it actually make them better programmers in the long run? Maybe or maybe not.

Do you need to start young to be good? Definitely not.

I think the answer has changed drastically in the last 10 years, though. For folks in their 40s now, starting to program when they were kids would've been nearly impossible given the technical difficulty and cost. For someone who's in their teens now, they've had the opportunity to use computers since before they could read. Oh what a world we live in!

Gabriel Hurley
+1  A: 

Age isn't what matters, what matters is number of years experience and the quality of that experience. I have been involved in interviewing and hiring developers for a dozen years and it has not been the case that someone with 10 years experience at age 30 is less effective then someone with 10 years experience at age 25.


I think that those who find an interest in this from a young age should start, and see where it leads them.

I have a personal experience in this matter, because I am currently 12, and am very interested in C#, as well as some other languages. I feel that children who are exposed to and feel the wonders that exist in programming will be motivated to learn it at a young age, as I was when my father taught me basic VB6 when I was 7. There are multiple ways to interest kids in this, such as with programming games like Robocode (for Java), or one of the multiple programs that Microsoft has to get children interested.

I think that you should encourage your cousin to try programming, beginning with some simple but fun activities or games that involve this.

Maxim Zaslavsky
Go, Maximz2005!
Haha, thank you!
Maxim Zaslavsky

I've read in the preface of one of his books that John Robbins (Bio) was a Green Beret before he started programming. So even if you come from a completely different background you can become a very successful developer if you're smart enough.


Regarding your specific situation, age isn't important. Here's what matters: If you tell him not to do it, and he ignores you and does it anyway, he'll be just fine. If you tell him to do it and he does it on your advice rather than for himself, he'll fail. The best favor you can do is encourage him to give it a try and make up his own mind.

In the more general case, I think it's useful to be exposed to programming at a young age (I was) but far from critical. I've known a number of great programmers that didn't start until their 20's (e.g. in grad school). When you get into the upper college CS courses, a lot of the material requires a fairly well-developed analytical mind, at which point "programming" is a means to an end, a tool you apply to solve complex problems.

Rob McAfee
+1  A: 

Rule of 10,000. It takes 10,000 hours of doing just about anything to be truly proficient at it. If you start younger, it's easier to get to the 10,000 hour mark.

But, 18 is not old by any stretch of the imagination. If you've got a passion for programming, you can clearly become a world-class developer no matter what age you start.

What's going to matter most is how much you want to do it. If you love software development, and do it in your free time, above and beyond class requirements, you will do well. If you do the minimum possible, and cribs SO for homework solutions, you will fail.

I think the real advantage of starting young is free time - without a family or job to deal with, it's much easier to put in the requisite hours to get something truly burned into your brain. But, on the other hand, look at people whose time in-game on MMOs is literally measured in terms of years - a single year, 365 * 24, is nearly 10,000 hours by itself.

That's really grasping at straws. I don't think this so called rule of 10 000 can be taken seriously in any field of work. Especially not in programming. I don't see programmers walking around with log books, do you? Neither have I ever met a programmer who's said, heh I finally got 10 000 hours of development time. I'm proficient now. Btw, one field that does take hours into account is the aviation industry, and guess what? 10 hours to get a students license, 30 to get a privates license, and around 200 to get a commercial license. Most airline pilots have around 4000 hours on average.
Also just to prove your thinking is wrong, you've calculated a gamer can play 24 hours a day, you've given no leeway for sleep in that year of yours.
Many MMOs have a /played command or something similar. This command will show the amount of time that the player has actually been logged in, and in some cases this can get into the range of years (which obviously will take more than 1 real-time year to do). I was in the MMO business, I can *guarantee* that there are people that have spent a year of time in-game. And, the rule of 10,000 wasn't invented by me, here's the book that it came from:

Tell him to stay clear of programming, it's a dead end. Select a career where you become more valuable as you gain experience, not less valuable.