326 comments

[ 2.5 ms ] story [ 337 ms ] thread
(comment deleted)
There's already some pretty good results here, broken down by age: http://news.ycombinator.com/item?id=3662838
they are different - both perspectives are important to understand HN community. At what age or when did you start coding vs how long have you been coding ?
It would be very interesting to cross correlate with age. Some programmers were exposed to code at a very young age. IMO, programming for 10+ yrs by age 20 is far more fascinating of a statistic than say programming for 15+ yrs by age 50.

I ticked 10+, and I am 26. I was designing 'web pages' when I was in middle school, albeit geocities html, but then had my first programming class (C++) when I was 15. Curly braces do not phase me.

I first learned BASIC on a Sinclair ZX81 which I got for my 7th birthday. I'm now 37 so I just scrape into the 20+ range.
oh wait.... 30 years! Now I feel old.
I too am 26 and I ticked 10+. I wrote what I consider to be my first real program -- a program with users -- in 2001.
I'm 40 and I don't know exactly if I started at 9, 10 or 11.
I turn 40 in 2012 and I started on my Commodore 64 with BASIC and 6502 assembly in 1982.

Been in IT professionally since I was 17 in 1990.

19 years (a few months shy of 20) and I'm 23. I started with my dad's Commodore 64 and the BASIC reference manual. Flashing colors on the screen, followed by very simplistic text adventures.
17 Years. This is the source code of the first "game" I wrote in 1997, in QBasic:

http://elbertf.com/qbasic/fruit.bas/

This is the code one never forgets. On which computer did you write this in? I remember to have started coding on a Tandy TR-80... how time flies. http://en.wikipedia.org/wiki/TRS-80
It would have been an i486, this was in the mid-nineties. I was twelve at the time. I kept all of my code, it still runs in DOSBox.
Cool. I wish I'd kept some of the ZX Spectrum programs I wrote. I tried a few times by using my hi-fi as the tape out. But then my mom would clean my room and reset it by accidentally knocking it over.

Almost as traumatic as when she dismantled my Lego Technic car with working gearbox to dust it.

Loading a program on cassette was loud enough to get one banned from using the Spectrum. Plus, there was only one TV in the living room, which you needed for the Spectrum.

Add the two, and scaling meant buying another TV and migrating often between rooms.

Traumatic was when I (think I was the one who) finally burned it by plugging in the wrong power supply, decades later.

Very interesting. For some reason I considered myself a veteran at > 10 years... clearly not!
(comment deleted)
I'm really interested to know what age that PG started programming. Some of the best known hackers started late. I know Julian Assange didn't have a computer before he was 14 but when you have a Commodore 64 you have to program.
Why somethings get downvoted, I don't know.
Well this makes me feel old. 30 years since I learned Basic and 6809 Assembler.
TRS-80 Color Computer? That's what I learned 6809 assembly on around 1981, only to be startled how many little things were harder on the Commodore 64's 6502. The extra memory (64k after bank switching!) made up for it though.

I didn't have a multiprocessing platform until 1988 (4.3BSD at college). I wonder how much better I'd be now if I could have gotten my hands on OS-9 earlier.

Yep! Good ol CoCo. I didn't have edasm+ at first, so I was "hand assembling" to bytecodes. Had a little too much spare time as a kid.

My dad helped me double the ram by piggybacking chips on the existing ones. I used to take the cover off and stare at motherboard along with printed schematics to understand how the thing worked.

I think it's a lot harder for kids to get the kind of basis for things now.

mIRC scripting at the age of 12 in 1995.
6, 8, and 9-year programmers need not apply.
30+ year programmers need to apply thrice.
Calculated 6 years out in my head only to discover this :/

DO I ROUND UP OR DOWN!?

Started when I was 11. C64 basic :)

Now I'm 31. So yeah, I've been doing this for 20 years.

Ditto on both counts!

Started out on an XT (I think) writing Basic. It's been 20 fascinating years.

Truthfully, I never had the interest to learn programming as a kid despite being offered lessons by family and friends. My first year of college I took a ton of random classes, but Intro to Programming was the only class that captured my attention. Thanks to the professor and really interesting assignments I gained an appreciation for programming, and I've been working towards a CS degree from then on. I started when I was 19.
8 years... and it already feels like forever..
I started programming on the BBC model B. You had to number each line by hand. The convention was to write the line numbers in steps of 10. Then as you went back and added lines, you'd run out of gaps to fit your lines in. Then you had to use the RENUMBER command and all the lines would be renumbered in steps of 10 again.

It was a great breakthrough to me when it was realized that line numbers could be derived from the text rather than assigned to the text. I suppose that was only possible when things like the GOTO statement didn't accept a line number.

I must have been about 11 when I started. Happy days!

I remember the "Wow!", when I discovered the AUTO command!
And learning how to use the copy and delete keys to make modifications to existing code without having to retype the whole line.
Yes, didn't that automatically give you a line number each time you started a new line?
Ah, 1969, FORTRAN II on an IBM 1620A. Then BASIC and FORTRAN on a PDP-10 in 1971. Happy times.

And get of my lawn!

33 years, first program I wrote was for a TI-57 programmable calculator.
This is a strange question to ask. I have known _how to program_ since I was in the 7th grade when we were taught ahem gbasic back in 1996. I have learn't C in my undergrad, taught myself a bit of python during the same period. Upto this point programming was recreational trying to solve trivial problems (I learnt python primarily to solve project euler problems).

It wasn't until I started my masters, 5 years ago, that I did any serious projects and 2 years ago that I did professional work.

So when people ask how long have you been programming for, what is it they are looking for ?

After graduating from electrical engineering, I figured out that if I wanted to go into electronics, I would need to spend a lot of money on equipment just so I could practice at home, but I was broke. However, my computer at the time was pretty top notch (486DX 50MHz, 16 MB RAM). I felt that my computer was probably the same caliber as the ones that real programmers were using, so it made more sense to learn how to program.

I basically had no real experience programming until I graduated. I took 2 programming courses in undergrad, one being an assembly language course, and I did a summer internship where I did some Matlab scripting to print out graphs. My 4th year project was using a DSP chip to write an FFT in assembly. So while unemployed I taught myself C++ programming, as well as IT administration and networking. My first job was as an IT guy, but I spent every night after work programming, writing utilities and digital audio filtering utilities using FFTs. Within 2 years, I got a job programming after lying on my interview about my previous job experience and I've been programming ever since.

I find it pretty funny that _after_ you graduated (and according to the hardware you had at the time) you decided to completely change careers :)
I did pretty much the same thing, graduated with a masters in mechanical engineering. Taught myself to code and switched careers. Lots of cross over skill. (and engineering is very boring...) :-)
I did the same thing (ComputerEng, but more of a EE focus), mainly because there wasn't a job market that was interested in me when I graduated. I suspect this is more common with engineering grads than most others.  The barrier to entry for programming is much lower than that for engineering, which requires taking the FE, getting licensed, apprenticeships (in some locales), getting relicensed, and still no guarantee of a job. Knowing that, and needing a real job after years of no interest in "my field," I took the meager programming skills I'd been mostly ignoring since the 80s and made a go of it.
This was also a motivating factor for me. Where I went to school, there wasn't really a lot of hardware jobs, but if I switched to software I could go work at a bank. After about 4 years I packed everything up and moved to Silicon Valley, just in time for the dot com bust :)
You are my kind of guys ! Why aren't there more guys like you in my team ?? I just love patronizing young enthusiastic programmers who just jumped careers and are now feeling insecure and scared of all the things that they might not know. Oh how I love to tell you that "It's more complicated than that" every time you feel like you nailed it. Yes, i'm such a douche, but for you I'm the "team leader".
Heh. :) I had a bit more CompSci than most that make the programming jump, from AP CompSci in high school to roughly two years worth of it to complete my CompEng degree (and a few "electives" such as compiler construction and a low-level intro to AI course). But there were still lots of things that I missed (OO and all the related trappings were completely missing from my schoolwork. STL barely existed.), but most of those had no benefit to what I was doing then. (Just as assembly and being able to design a chip from the sand up has little benefit to what I'm doing now.)

"Team Leaders" are fun to lead into blind alleys and ambush with little known facts and tricks, too. ;)

Started at age 7 on a C64. I learned binary before I could multiply because you needed to understand binary to create multi-colored sprites on the C64. I made a game where you drove a car and avoided things, then another where you drove a spaceship and avoided things, then another where you shot arrows at moving targets. That last game was the first one I wrote where the goal was to hit things, a major departure for me. Those were the days.

Despite the advances in tech, kids today who want to learn to program have it much harder.

> Despite the advances in tech, kids today who want to learn to program have it much harder.

Why is that?

The hypothesis is that the 'stack' is much taller. Back when all you needed was QBasic to "learn to code", "learning to code" meant reproducing other software you used on a daily basis.

Software is generally much more polished now, and it requires much more time and work to get it so polished (assuming it's at all complex).

I'm not saying I agree with this. But the situation is definitely different from 10 years ago by quite a bit.

I don't think that's true. NOTEPAD.EXE and Firefox is all you need to start with HTML and JavaScript, for example. Microsoft gives away Visual Studio for free download, there are all the open source languages (ActiveState does great distros for Windows) etc etc.

It's a cultural shift. Kids these days are consumers, not producers.

But they still need to find the information that there are such super simple options. Google "programming tutorial beginner" and the first thing is about C++. Ask in a forum and you will start a long discussion about which language to learn first. There is an incredible amount of information and tools that would allow to start very easy (and without having to pay anything for tools or books), but without somebody experienced it's difficult to sort that out.
OK, but if you wanted to program a VIC-20, you were literally POKEing 6502 opcodes as hex numbers into memory addresses - the development tool VICMON cost extra, and even then you still had to know the mnemonics. And people of my generation still did it. And kids today have everything handed to them on a plate, they just aren't interested.
Adoption has increased, but the web is also far more interesting than playing another text based adventure game. So, I think the percentage of total people has stayed about the same. It's only the percentage of people with access to a computer who learn to program that's changed. Because, the further back you go the fewer things there where to do with a computer other than learn to program.
Right, but a kid who uses the web and wants to make their own web page, has basically zero barriers to overcome. All they need is the browser they already use, and Notepad. Sure hosting it somewhere is a bit more work, but trivial compared to distributing a program you wrote in the 80s, where you had to physically exchange cassettes or floppy disks with your friends in the school playground (!) or persuade a magazine to distribute your program as a listing or on the coverdisk.
yet there are a lot of concepts they need to digest before they jump into the html/js world. it already means they need to learn two languages (html and js), interaction between them , etc... I'm not even mentioning things like - open notepad, save the file, make sure you get the extension right, fire up the browser, click open (why not in address bar? oh yeah, you can, but tell a kid the file:///<blah> business and see if they remember it after 3-4 days of not doing it) and see what happens. of course it's just a reload away next time.

not as easy as qbasic.exe, then typing in some code in, then hitting 'run' and seeing what happens.

speaking from experience here, i have 8 and 10 yo, and tried this with both of them. my friend tried with his 9 yo. they seem to get the idea of assignments, loops etc, but it just doesn't excite them. can't generalise on a test sample of 3, so just my 2p.

I still maintain that

  - Start -> Run -> notepad
  - <html>Hello, World!</html>, Save As "hello.htm" on desktop
  - double-click it and watch it appear in a browser
Is 1% of 1% of the effort it took to program an 8-bit machine.
The difference is how easy it is to find the information about what to do.

Someone totally new won't know what notepad is, won't know what html is, and won't know how to make the browser show it, and the manual that came with his computer will say nothing about it.

You start a browser, there's no hint what to do. You start searching for "how to make a web page" and you get a bewildering array of information, some of which are totally over-engineered.

On the other hand hooked up a VIC-20 or C-64, opened the manual, and what stared you in the face in the first chapter was your first program.

I remember opening a browser, selecting the "View Source" option, and there was my first web page. I really started to learn how to program when a misconfigured web server spit out the source code to a web app that I enjoyed using.

I think the commonality between us here is that having access to the source itself provides the best learning environment.

You may as well just open up notepad and type "Hello, world!", and leave it at that. HTML is not a programming language; if you want to program on the Web you do have to jump into JavaScript.
Yeah, but the thing with that is, it fucking sucks.

What about 10 print "HELLO" 20 GOTO 10

Or something like that? If I wanted hello world on the screen I'd get a piece of damn paper. The beauty of quick basic was it got you into procedural code, where the computer does stuff. You can get someone going with Python relatively easily but not as easy as QBasic was on a Mac II in the school computer lab.

You can say there's been a cultural shift but every generation's been saying "kids these days", back to at least Socrates. I'd say that not having QBasic be one of 6 icons you can click is a bigger change, it's not the kids.

I would recommend not trying to teach for loops etc... Show them how to tie a function to an image to make it move across the screen as a building block to make a game and they will find it interesting. Maybe start with flash/actionscript so they can see (click image > write code for image > image does stuff)
unfortunately in the selection that I have of 8 (mine), 9 (not mine) and 10 (mine) none are bright enough to grasp the concept of a 'sprite' yet, i'm not even talking about relating code to that sprite. flash/actionscript? ho many steps are there between typing something and actually getting stuff appear on the screen? I've written 2-3 simple swf's, and it caused my head to spin... you think a kid could do it? on their own?...

friend of mine ('owner' of the 9yo), tried some sort of python environment which was supposed to do just that (i think it's this: http://rur-ple.sourceforge.net/en/rur.htm, but not sure), but failed - quite limited in what it does, or get way too complicated if you want to tweak something.

so the whole experiment was a flop really...

I am pretty sure when I was 10, it was normal for a kid to know what a sprite was (indeed the finer points of what and how your computer did sprites was playground argument stuff). Most people had at least had an attempt at creating their own game or demo. Kids these days only want to use computers.
yes, precisely. they want to use it to create other things. drawing, writing, presentations - they find it interesting. programming? not so. why? i don't know. i tend to think it's the tools, or the complexity of it all. on the second though, i think they all got too used to the instant gratification, in other words, the more time it takes to get the result, the less interesting/inspiring it becomes. and it kind of brings us back to the first point - tools are too complicated... :)
Hmm true, I always considered Flash/Actionscript to be dead simple (Drag image to the view => click on it and add code to make it do stuff) However maybe it's because I grew up loading 5.5inch floppys in a computer without a hard drive that only ran DOS. This is actually something I've been thinking about lately since my son is now 4 months old and I'm trying to figure out how I'm going to teach him this stuff, I grew up evolving with the technology so a terminal window does not feel foreign to me. How do you start from scratch in the age of iPads etc.. ?
Web access is pretty scary in that regard. Infinite novelty on tap can be a demotivator to create anything.
On the other hand, lots more people are creating videos (for youtube et al) than ever before.
Plus minecraft constructions. Lots of video games now let you create and share. My son is building automatic doors and creeper traps at the age when I was making sprite data by hand and making it move across the screen using basic
Plus minecraft constructions. Lots of video games now let you create and share. My son is building automatic doors and creeper traps at the age when I was making sprite data by hand and making it move across the screen using basic
If you wanted to program a VIC-20, you opened the manual, read the preface, which starts like this:

"You are about to meet friendly computer! Friendly in price, friendly in size, to use and learn on experience. Most important you don't have to be computer programmer, or even typist, to use it!

If you're first time computerist, this manual will provide an excellent introduction to computing. Unlike most instruction manuals, you don't have to read through this whole book to get to the "good stuff." After reading Chapter (GETTING STARTED), you can go directly to chapter that interests you and start reading. If you're interested in animation turn to Chapter 4. If you like music, try Chapter 5.

The first page of each chapter has sample program to start you off. Just type the program exactly as shown ("Try Typing This Program") and see what happens. The rest of the chapter explains what you did, and shows how to do more. Chapter summarizes some important programming concepts, and explains the techniques used in sample programs."

(The manual was the baby of Michael S. Tomczyk, who wanted to strongly focus on the "user friendly" aspect of the VIC, including for programming)

Then you'd turn to chapter one, and start typing in the first example program:

   1 PRINT "VIC20"
   2 GOTO 1
You then had an approximately 150 additional pages explaining how to use the machine that for the most part assumed that "use" meant "program" - only a tiny fraction of the manual dealt with non-programming related activities. My dad learnt BASIC from that manual, and I learnt BASIC from him and went on to improve my skills with nothing but the Commodore 64 manual when we upgraded. Commodore continued that tradition with the Amiga, up until AmigaOS 2.04 (which came with ARexx, but not AmigaBASIC) but pushed it far less on the Amiga than on its 8-bit machines.

That's a large part of the difference: If you bought most home computers back then, and _especially_ Commodore machines, you got programming showed in your face - User was equated with programmer. And though a lot of people learnt how to load games and didn't bother with programming, the threshold to actually finding something exciting in programming was far lower.

I'm not suggesting we go back to the days where people get a BASIC prompt on starting a machine, but surfacing scripting capabilities for automation more, for example, would make a big difference.

Consider even something as trivial as macro recording that displays what it records and give people an easy way of modifying it, instead of hiding it "behind the scenes".

A lot people are programmers today because the plumbing was out in plain view and some of us found it fascinating and started figuring out what it did. But today the plumbing tends to be hidden and people go "magic. got it."

User was equated with programmer

Exactly. That's what I mean by cultural shift.

Totally agree. You're describing how I started... for a kid wanting to write a web page over 10 years ago you were lucky to have access to lissaexplains.com & w3schools.com. Nowadays you've got stackoverflow, smashing mag network, nettuts etc - not to mention a whole shitload of resources offering free code / designs / icons, ready to roll stuff like wordpress, etc.
LissaExplains... Now there's a site I haven't heard of in a long time. Does anyone know what she's up to these days?
There's something inviting about turning on your computer and being greeted with a BASIC interpreter prompt, the cursor blinking at you expectantly.
I started a 15 year old girl programming yesterday with Processing because she showed an interest in conceptual art for games. I showed her some examples, she downloaded and installed the application on her own as I watched and started entering the tutorial text (not copy/paste either as I might have resorted to). I guided her in what she'll need to get a grip on with her math classes etc, and I heard from her teacher she was still enthralled at the end of the day. I'm not sure how much easier that can get, I was impressed.
Just for curiosity: Did you also have a look at PyGame? If yes, how does it compare to Processing?
Processing is way way cleaner than PyGame. It is nice that people are creating interesting things in PyGame but I think more good would come about if it didn't exist so something better could flourish.

And I say this as a python programmer since 1998.

Why do people continually assume that kids don't have the intellectual capacity to solve problems? The hurdles are only as high as YOU think they are.

Kid wants to make a game, kid programs a game. What's so hard about that? The kid doesn't care about the "barrier to entry" any more than issues like platform, methodology, budget, competition, etc. None of those business decisions are part of their need to make the game.

I'd say the opposite - Kids can cut the crap and stay focused better than most PM's.

I sure thought I was smarter than all the adults when I was 15. I still have no idea if I was right or not.
(comment deleted)
VIC-20, MicroBee, ZX-81, C64, Amiga
An 8K Microbee was the first computer we owned at home, the ability to incorporate machine code with basic was a great feature of these computers, got me my start to really understanding computers.

EDIT: oops seems it must have been a 16K model.

I still remember the first "programs" I wrote in qbasic. I spend days writing a simple tic-tac-toe game using if-statments only. Or computer art by drawing shapes, lines, dots and what not on the screen using different loops. Then I discovered I could make it bleep funny also, ending in whole light shows with simulated lazer beams under a nice beat of beeping.

Later I got more serious and wrote programs to do my math homework for me. I found that I learned more about the math I was learning by writing these programs than by actually doing the homework myself. That's been one of the reasons to get into education to pursue the idea of using programming as a learning tool (as pioneered by, among others, Seymour Papert [logo] and later Andrea diSessa [boxer]).

When I started studying computer science my programming "career" started in earnest. From doing some shady braininess when the internet was young to writing scientific prototypes.

Ever since I started programming it has been part of my daily life. I often find myself automatic tasks in my personal and professional life and I would like everyone to be able to do the same. Time and time again I have been confronted with people that do not (want to) understand computers or their place in our (future) society and keep on serving the machine instead of having their machine serve them.

All and all, I've been programming machines for over 20 years, ever since my early teens.

I did some BASIC when I was quite small, so around 30 years. Professionally, about 15 years.
I started with LOGO in 1989 and BASIC in 1992. So, 20-odd years or so. And still at it!

Though, I've got a lot less time to focus on it now, with all sorts of other worldly responsibilities.