views:

1099

answers:

23

I've got a ten year old brother who desperately needs a constructive hobby and I am convinced he has the proper sort of wiring to become an adept coder. However, what he has in raw intelligence he lacks in patience and willingness to try new things. His overpowering interests are Legos and video games so my inclination is to find a way for him to build games, but he quickly loses interest when he realizes that he can not create something that looks good and acts well in a relatively short time-frame. I can hardly blame him as that routinely frustrates me as well. I've heard good things said in the abstract about frameworks like Alice and Scratch, but not much in the way of real-world testimonials. Is there a simplified framework out there that will:

  1. Teach him the basics of programming and further develop his interests.
  2. Provide him immediate feedback that he is accomplishing something.
  3. Look good enough that he doesn't feel like he is doing something childish.

Has anyone had any success with teaching someone is his age-bracket to program and if so which tools were most useful to you? Is he simply not mature enough? I don't want to settle for him idling toying with something and deciding its frivolous. I want him to be able to feel the same sort of freedom that I felt when I finally moved from the Pinball Construction Set to writing loops in BASIC.

-----EDIT-----

There are several similar topics already regarding this, which might give you a few more answers:

+19  A: 

Lego + Computer = Mindstorm.

My oldest is 8, and also the right wiring. I only need to convince my wife that we need to invest in lego robotics.

But you need to find something that gets his attention. Start with simple thing to keep the frustration level low. You can even think of starting with web work (HTML/CSS) and slowly introduce javascript, server site programming and databases. The advantage is that he can create something he can show to his friends. (No its not myspace, it is MY space).

Gamecat
I would also need to convince my wife I would let the children use it from time to time as well ;)
iAn
;-). We understand eachother.
Gamecat
Judging by the number of votes here and the responses on the other pages it sounds like Mindstorms are the way to go, although the expense is a barrier.
bouvard
+1  A: 

The obvious choise - http://mindstorms.lego.com/eng/Dubai_dest/Default.aspx">Lego mindstorm

shoosh
+5  A: 

Have you thought about trying something like Lego Mindstorms. You get a very intuitive visual user interface that allows users to create fundamental programming structures without writing a line of code (ie loops, conditionals etc).

Of course the feedback is in the form of working machines/robots. This would certainly reinforce the programming concepts used very well and is certainly something I would expect kids consider cool.

Ash
+1  A: 

Go for it. I started when I was nine with Commodore 64 and BASIC. Only got a few pointers and a book. These days you have more options. For kids, programming is playing, having fun. Do not worry too much about it consuming it too much of their time or becoming asocial.

Milan Babuškov
Those where the days.
Gamecat
A whole 64k, posh git ;) I had a ZX81 with a miserly 1K. The only problem now is that programming has to compete with PlayStation, WII etc... so as you say it really has to be fun.
Shane MacLaughlin
A: 

I believe Logo and (a restricted dialect of) Smalltalk were successfully taught to kindergarteners = age 5. Scratch should hold a 10-year-old's attention, but if he's inclined to non-visual problem-solving there's no reason not to teach him any language

Steven A. Lowe
+4  A: 

Try encouraging him to look into the modding community for his favorite games. A lot of the commercial video game software that's out there is extensively modifiable, and it eliminates the discouragement of not being to make something that looks cool - the art assets, sounds, and animation are already there.

Mark Bessey
A: 

A less expensive way may be flash/actionscript. There was a book about this: http://www.pragprog.com/titles/fr_ltp/learn-to-program. Supposed to help you teach people how to code. About the age. I think maybe 12 years is some minimum. But please don't force anything on the kid. I had an aversion to programming until I was about 17.

Vasil
A: 

Also, take a look into Second Life. There's a fairly sophisticated (albeit arcane/buggy) scripting language built in, and the social aspect might appeal.

Mark Bessey
Isn't that game full of profanity? I personally wouldn't want my child playing a game watching... well.. use your imagination.
RodgerB
Theres a Teen grid, but 10 is still too young for that grid.
Sekhat
I guess it would depend on the maturity of the kid in question. I would have been fine at that age, in that environment.
Mark Bessey
A: 

I learned on the C64 when I was 8, and remember it all began when I started typing in Games from Magazines. At that moment of revelation I realized games were something you could program and began tinkering with them.

Robert Gould
A: 

Get him hooked onto Lego NXT mindstorm. Let him do some simple programming on the RCX ( i think that comes with NXT).. Once he is comfortable with that, try teasing him by using Python/C/C++/Java to write a complicated routine for the NXT .. If he's meant to be a programmer, he'll get hooked :)

Sridhar Iyer
A: 

If you're after drag-and-drop code, to learn the basic fundamentals of branching, looping etc - and he's into RPG's there's always RPG Maker.

I used RM2K a lot as a young teenager, drag/drop code, and a MS-Paint like level designer makes this one a pretty easy choice.

Haven't tried any of the newer versions.

My first exposure to programming, however, was that little turtle you could program to walk around in circles using LOGO. That was back in primary school, I don't know where you can get a hold of that nowadays.

Dean
A: 

Mindrover seems like a good way to teach a kid some basic programming.
Also, check out this coding horror article. You can also just google for "robot programming games", you'll get lots of results for games that teach kids basic programming skills. Have fun!

Sandman
+2  A: 

First of all, why programming? It's not right for everyone and requires a lot of patience and a willingness to learn it. Without a specific interest in wanting to learn to program I would argue that it's probably not for him. Try getting him a musical instrument, leaving him with a few tutorials and some beginner tabs on Ultimate Guitar and I'm sure he'll enjoy how easy it is to play some good songs and keep constructive.

However, if you do believe that coding is the right direction to go in how about getting him involved in the modding community for games and scripts. At the age of 15 I was writing mods for vBulletin and enjoyed how easy it was compared to writing full-blown PHP scripts.

At the age of 10 I enjoyed computers and things of that sort, but I was too busy playing football and tennis to really put a lot of time into it. Perhaps getting him involved in some sort of team would be beneficial?

EnderMB
I knew that someone would ask this question and a lot of people have. The why programming is to fold: 1) He hasn't expressed interest in anything else (music) and programming is something I can productively help him engage in. 2) I believe programming its something everyone should learn to a point.
bouvard
I was with you until you claimed that everyone should learn to program, something that I strongly disagree with. Just like with any job/hobby programming isn't for everyone, and neither is music or sports. I'd suggest giving it all a try, just to provide some variety in his day-to-day activity.
EnderMB
+1  A: 

Another interesting project beside Squeak that target children learning programming is Hackety Hack by why the lucky stiff?. Check it out, it is a built-in learning environment with some simple but fun lesson for kids.

DJ
+1  A: 

When I was 6... yes, 6. My uncle procured for me a Sinclair ZX81 with a 16k Memory expansion and some programming books. I would laboriously and inaccurately code in block programs with names like "Sink the Bismarck" (A simple angle and velocity game where you take potshots at a small black blob representing "the Bismarck" by altering your pitch and firepower. The results would arc in a series of black squares across the screen and either sink into oblivion or hit the ship blob.) or "BrickBat" (Black blobs fall from the sky, you have a Breakout style bat which "absorbs" the blobs. If you don't make it then the blobs accumulate in piles at the bottom of the screen until eventually they hem you in and you die.) it would take me frustrating hours of seeing "Syntax error at Line x" to find a semicolon three lines previously that I had missed.

I also connected a tape recorder to the unit via a cable and tried to load preprogrammed games like "Chicken Man" which would invariably bork after 20 mins of wailing and screeching through the wires leaving me frustrated that another black blob fest was denied to me. I used to get upset, angry, frustrated, feel stupid and useless and have tantrums because I just couldn't get the thing to work.

For years after this experience I believed computers were not for me and I pursued my interests in creative writing and drama. Then I got a "day job" for a telco and was given my own work PC. I was the only guy on the floor who actually went and found out how digital telephony switches worked, I understood online status readouts, and quickly became proficient in using a PC. This to a degree where one of the company programmers asked me why the hell I wasn't pursuing a career in tech.

Now, ten years later I am. I didn't believe at 6 I had learned anything from my ZX81 experience. Actually I had learned everything that is now the basis of my career and I'm as surprised as anyone.

So, in summary, anytime if someone has an aptitude for it any experience is good. If they don't then it won't matter how long you leave it they still won't.

A: 

At the Swiss University of Zurich they do some research on teaching the concepts of programming. The result is Kara, a "toy environment" where you program cute little bugs to perform tasks as finite state machines. The age bracket should be about right, though obviously it doesn't compete with the visual appeal of current games. When you dig deeper, you can extend into Java code, address Lego Mindstorms, Python, Ruby and more. Get the recent version here, pick karas-x to have all variants

pklausner
+3  A: 

If you 'make' someone do anything, chances are they aren't going to enjoy it. If you introduce someone to something, that is completely different. In my opinion, don't go running around for him unless he explicitly asks you for something.

He'll probably figure out soon enough that his life is actually worth investing in, thus developing Google Search skills and programming skills if he is interested enough in pursuing it.

The important thing is to start small, teaching only the very basics. Game Maker for me was a very motivating and rapid learning experience for me (hey, I eventuated here in a year's time), so I strongly suggest this to any beginner wanting to program games as a hobby.

It's not 3D rendered, uber crazy immersive crysis like games, but it is a great fundamental step with fast results.

RodgerB
+1  A: 

When I was 12, I got a C64 - my first computer! With it came a book of programs (mainly simple games) that you could type in and run.

A bit laborious perhaps, but worth the wait. OK, the games were crap (even then) but I created them (in my own eyes) and so there was a sense of achievement. I moved from there to modding them to acheive slightly different effects.

Then I got a raise in pocket money so I quit and started buying games! But that is another story.

I'm not sure if similar resources are available - there probably are. But the idea that your brother copy someone else's code (learning along the way) before starting to mod and tweak the code is a sound way of starting. It would be better if you sat alongside him, a bit of company and a encouraging hand would go a long way.

There a number of free flash development resources available; perhaps a code place to start. Or if you think he can hack it, there are other environments like DarkBasic that might be of interest.

The bottom line is you need a vehicle that will get (& keep) him interested while starting to introduce his mind to the idea of creating programs (not necessarily hardcore coding - that can come later).

CJM
+3  A: 

Kids must be directed, not taught.

If he lacks patience to learn programming, try teaching him something else. Chess for example. If he likes that, challenge him to write a chess board, then a program that can beat you :-)

Anonymous
A: 

There are a lot of games where you have to program. A.I. wars comes to mind, you have to program a little robot to kill other robots.

http://sumost.ca/steve/games/ contains a list with programming games.

Personally, I started when I got a Amstrad pc with 64kb memory. When you started it, you could just start programming. At first, I just played some games but I eventually got interested in programming. Noone really pushed me.

Carra
+4  A: 

I second the question "Why Programming?". I am in my 30s and I learnt programming when I was 7 - BASIC on a BBC Micro. But back then, programming was pretty much the only constructive thing you could do on a computer - well, that and play games.

Surely now, the emphasis on having a computer is in combining technology and the arts. Rather then getting their computer to print the numbers 1 to 10 on the screen as I did when I was a kid, kids today should be using their computers to compose and mix music, manipulate digital photographs, edit movies they recorded on their mobile phones, manipulate objects in second life. These activities all stimulate the 'right wiring' for coding but are probably far more interesting and give better instant gratification than coding.

If he gets interested in these activities then, in time, he may want to automate the most repetitive tasks and so try his hand at scripting. He may want to get under the hood and learn to extend the tools he uses. He will learn to program when he has a need to program, and so will be in the right frame of mind to learn.

Vihung
I tried to comment on the "Why Programming" in response to EnderMB's answer, but I also agree that there are other ways he could use his computer if I can get him to engage with it. I tried to get him interested in working with video, but it didn't hooked him, which caught me off guard, thus the Q.
bouvard
A: 
Dave DuPlantis
A: 

I would say just let him go at his own pace. You don't want to push him to hard and have him not liking it. I would encourage you to show him videos from youtube or other sort of tutorials and if he likes it he will continue on the path. Also maybe show him some of the projects you have worked on. I got into programing and computers because of video games (Counter Strike mainly) and slowly I realized there where better things I could be doing like programing and learning instead of sitting around playing games.

I have a 12 your old brother I feel also would be good at programing but he does not seem interested pretty much for the same reason you described, not seeing instant results.

I think the Mindstorm is a great idea but my brother sadly has one and never uses it. On the other hand I find it very awesome and every time I am home I play with it, which does seem to inspire him for a few days after I leave.

Pieces