

Ask HN: programming tools for a 12 year old - joe_bleau

Son of a friend wants to get started with programming.  He has access to an iPad and Windows computers.  Any advice on which way to steer him?
======
AjJi
I heard about <http://www.alice.org> as being good for kids.

<http://scratch.mit.edu/> is good too, I tried it and it seems to have the
basics you need to learn as a kid, you can even use it just like LOGO to draw.

Scratch uses blocks which you can drag and drop to construct your program,
some of the blocks are: if, repeat, forever.

You also have blocks for commands, mainly visual ones, moveto, turn, pen
up/down (to draw).

------
brudgers
Alice [<http://www.alice.org/>] is sophisticated, object oriented, easy to
use, and fun. It would probably be my first choice.

Microsoft Kid's Corner [<http://msdn.microsoft.com/en-
us/beginner/bb308754.aspx>] provides a structured introduction to a lot of
topics.

HTML + CSS would also be a great place to start because it is so highly
interactive and is such a useful skill set to have.

------
anigbrowl
I'd start him out with an interpreted language like Python and then maybe move
towards Pygame. Zgame is also quite good and is available on Windows, that
would give him a framework to develop working programs without getting lost in
reinventing the wheel.

Over the long term I'd say work towards the tablet environment because that's
where the action is going to be, but I don't know how
friendly/accessible/affordable the iOS development tools are for Windows, or
what the 'Hello world' stage is like. If it's great, then by all means start
there. A pet hate of mine are tutorials that start out with the basics of
variables, loops, and so on, and then dump the would-be programmer into the
deep end bereft of any actual algorithms or structural guidance. It's like
showing someone how to hammer nails and use a saw on day one, and then
expecting them to build a house on day two. That's why I suggest Python as an
alternative, because there's lots of high-quality educational material to get
going with.

If the kid is somewhat computer-savvy already and doesn't need much hand-
holding, maybe you could let him loose with the Google coding tools as an
alternative - lots of good stuff on there for everyone from the casual to the
committed programmer, and while it won't perform as well as native iOS stuff
on the iPad, it won't be locked into that platform either.

~~~
mtogo
_Over the long term I'd say work towards the tablet environment because that's
where the action is going to be_

No. Avoid cramming the latest shiny fad down the kid's brain for now.

------
theMentaLMonK
I see no reason to start him with something like Alice. If he wants to learn
to program he should start with Python or Ruby. I'm 14 now and have been doing
some programming since I was around 10. That said, I only seriously started
actually learning programming fundamentals around age 12.

I used Python during that time and I highly recommend Zed Shaw's Learn Python
the Hard Way. The name is deceiving if you aren't familiar with it, it is
definitely for beginners. Having him go through all the exercises and doing
the extra credit in that book should put him in a good position to move onto
using frameworks with Python or moving onto a different language.

Not sure how could PyGame is, but it's probably good enough to get him started
in game programming if that's what he wants to do. spIrr's recommendation
could be good, but personally I have no experience with that book. However,
Python has some amazing resources online so that shouldn't be a problem.

I highly recommend staying away from iPad development as his first venture
into programming, which probably won't be too hard considering he doesn't own
any Apple computer.

------
Cyph0n
I started by learning the basics of C++ when I was around 15 years old. It
stirred my curiosity, gave me a general understanding of what programming is
all about, and taught me how hard it is to build a real game (like everyone
else, I wanted to make games).

I gave up on C++ in the end, and decided that Python is the best way to go. I
do, however, thank C++ for helping me to overcome those first (difficult)
steps.

------
Jeema3000
I'd start with Javascript, because:

a) It's fairly simple.

b) Every computer that has a web browser has it. He would be able to run the
programs with no additional software needed (including on the iPad).

c) You can make simple games with it (that's what I was interested in when I
started programming, anyway :) ).

d) It's relevant.

------
spIrr
Is <http://inventwithpython.com/> any help?

~~~
squidbot
+1 for Invent With Python. I've got my 8 year old daughter doing it and she
loves it. It's the closest thing that I've found to what first started me
programming, David Ahl's Basic Computer Games. I've also done Scratch with
her, which she enjoys because it's so quick to get multimedia integration, but
I found she wasn't keeping hold of fundamentals, like how loop controls work.
Moving to Invent With Python has done the trick, it seems that typing the code
has made the logic stick.

------
namank
A review of the most popular frameworks:
[http://www.readwriteweb.com/archives/4_tools_for_teaching_ki...](http://www.readwriteweb.com/archives/4_tools_for_teaching_kids_to_code.php)

------
tnorthcutt
I've seen <http://www.alice.org/> recommended as an intro to programming for
kids. I can't speak to its value personally.

------
collint
He might like the games factory: <http://www.clickteam.com/website/usa/>

It's not writing code but it actually teaches you a lot about objects, event
handling, conditionals and you can pipe out something really cool/fun in an
hour or two.

( my first game I made when I was 12 was a "death star run" game. I had no
artistic talent, but it was still fun. )

------
theclay
I think you should decide what you hope to accomplish. However, on a window's
machine, there is small basic: <http://smallbasic.com/>

It's windows, it's powerful, it's simple, and it's highly visual.

------
adrusi
Don't start him on a graphical programming environment like Alice. I started
programming Pascal when I was 11, but I wouldn't recommend something so low
level. I would probably recommend python or ruby.

------
joe_bleau
Thanks for all the advice. Passed it along to my friend, and he just told me
that they're a bit overwhelmed now (which is a good thing). Problem solved!

------
them0rtn
22 hours ago, so he must be a pro-programmer :P

he should join this contest <http://hacknow.org/>

