I worked with a guy who is a very good programmer, who told me that from about age 11, he would come home from school and program his TRS-80 until 1 AM or so <i>every day</i>. "And I did that," he said, "for about seven years." I was shocked: did your parents know? "Oh yes." And they didn't mind? "No, why would they?" Well, didn't they think you needed to go outside or something? "No, I guess not."<p>He's a very sweet, quiet and introverted guy whom some people think of as a little, uh, inaccessible. But as someone else commented, there's no way of determining cause and effect here. I'm inclined to believe he's just the way he is, and programming had little to do with it.<p>A story from the same project: we were designing something at a whiteboard and I said, about a sort of messaging sequence: It's like a game of frozen tag... when this thingy gets a message, it has to wait until another thingy comes along and starts it again. He said, "Frozen what?" Frozen tag. You know frozen tag? "No, what's that?" Well, you know what tag is, right? The kids' game called tag? "No. What's tag?"<p>I had to explain what "tag" was.
I started programming when I was about 11.<p>I don't remember which one of us found out about it first, but a friend of mine and I came to the realization that the Apple IIe computer in our school classroom had this thing called a BASIC Interpreter on it, and we could write files of instructions to tell the computer what to do.<p>We loved playing the Infocom text adventure games, and we figured out that we could use BASIC to do text input and output, and put in IF lines to direct the computer to print out this line or that line based on what the user typed in. So we started writing our own text adventure games. Very simple, of course, but we loved it.<p>Variably, one or two other people would hang out at the computer with us, offering suggestions and trying out some lines of BASIC. We decided that programming the computer was more fun than going outside to play at recess, so we began to stay inside when the other kids went out. At first there was no problem, but eventually our teacher became concerned that we needed more social time outside with the other kids, but agreed to let us stay inside to program every other day.<p>A kid who spends time programming probably isn't on the path to being a social butterfly, but very likely wasn't on that path in the first place anyway. Programming is not inherintly "anti-social" or (completely) "solitary", but it may be harder at a young age to happen upon peers who are interested in it as well.
Reading is another activity done in sedentary solitude. A seven-year old shouldn't spend all day reading or coding, and most wouldn't want to.<p>I wouldn't fret about how young to introduce programming to a kid. I learned to program when my dad worked from home one day and I asked him what he was doing.
Pair programming. Teamwork, tolerance, communication, patience. Not bad for children.<p>What bothers me is that computers are a lot less accessible today than in the 80s. I almost feel jealous that I didn't have an 8bit computer when I was a preteen :-).<p>I used to spend a big chunk of my free time then reading books in the library along with a couple of girls. We would then discuss with the other kids what cool books we had found. Reading and discussing texts is extraordinarily fun and it sparked my interest in reading. Programming can also be popularized the same way.
I started programming when I was about 9.<p>I was at a friends place and he was showing me this new Vic20 his parents had bought him. I don't recall ever having anything to do with computers before, but he spent a while showing me how you can programme it. That was it. I was hooked.<p>I still have my Vic20 User Guide sitting on the bookshelf here. It's well worn, the back cover fell off years ago, but there's no way I'm getting rid of it.
Did anyone else start programming on TI calculators? I was 11 when I got a TI-83, which is essentially a portable editor and compiler. Not only could you write TI-Basic and z80 assembly, you could write pseudo-assembly with the Basic commands due to bad syntax checking - and you could do it anywhere! Oh the nostalgia. I lament the day my 83 died.<p>But was this to the detriment of my personality? I say no. Not only did it encourage relationships with like-minded peers, it also helped me understand the social attitudes through design (products for people's needs). I would like to think that I came out alright - socially-competent in respects. In fact, I'm not even the type that you would peg as a programmer.
My boy will either start with Haskell or nothing at all. None of this imperative side-effect BS. Go functional or go home will be the word around my house!!! ;)
I started programming when I was 7 years old. I used this goofy thing called TrueBASIC, which was the result of the guys from Dartmouth who did the original BASIC trying to go back and modernize it. Then I moved onto HyperCard and a bunch of other languages like that.<p>It gave me a headstart in my field, but not proportional to the time spent.<p>What I did learn from these experiences making games and little apps with other kids online was that it's perfectly natural to put a ton of effort into something that no one else is expecting you to do. That you can actually have fun working and learning. That having real pride in your work is a motivator like no other.<p>This seems pretty common to us HN folks, but I know so many people who are afraid to do anything outside of school/work because the either the concept of intrinsic motivation is alien or because they're afraid to invest effort into something "unsanctioned" that they could fail at.
It's important to note that starting early does not necessarily make you a good programmer as an adult.<p>I do not remember ever not programming. My first programming memories were at 6 but I have no memories before then anyway. I have pictures and my parents say I started with simple BASIC programs at about age 4. I started 6502 assembler at about 7, and C at 9. I was pretty good at C by 11, then went to Pascal, and so on and so forth.<p>Now? I'm formally a mediocre programmer at <i>best</i> - despite doing it for some 23 years now on and off. In this sense, I think programming early is no different to "drawing" or "writing" early.. just because you start early doesn't mean you'll be a top artist or author one day. If drawing and writing are appropriate for a seven year old, then why not programming?
I think I wrote my first programs at the age of five, on a ZX81 my uncle had put together.<p>Despite this exposure to BASIC, my programming abilities seem to have survived. So I would say - if they can hack it, GO!
I would have done anything to program at seven. I knew that computer games were made by people (and sometimes, by a single person), and I was determined to do it, but nobody around knew how to get me started.<p>It wasn't till I was ten or eleven that a friend announced to me that he had found a program on his computer that would allow us to make video games (qbasic).<p>I think the thing I missed out on most is having a few more years of wildly creative programming without being encumbered by any ideas about the <i>right</i> way to program.
I think it's appropriate, but you have to start small. Get him or her a set of Lego Mindstorm. That's a bit over the kids head, but I'm sure you won't mind having to spend time playing with Legos to help the kid understand.<p>Robotics is great for teaching programming. Alternatively, get the kid a copy of the board game "Robo Rally."
You don't want your child programming in six years.<p>You want her PLAYING...
And she can PLAY with:
Logo,
Lego weDO,
Lego MindStorms
MIT Scratch,
CMU Alice
SmallTalk Etoys
and OpenCorquet..<p>pretty entertaining, and educative...
but most of all FUN
I think the whole post is needlessly inflammatory.<p><i>Sex</i> isn't appropriate for a 7-year-old.<p>Programming? Whatever.<p>(Not to mention he assumes that any interest in programming comes from the parent leading the kid to do it. I discovered programming on my own at 6, thanks.)