For a while now I've been looking into the best ways for kids to learn to code.
I thought I'd share the journey we've been on in case others are interested to teach kids to code or even just wanting to dabble with programming themselves from the more approachable end of things.
Technology is not always a good thing for young children, but somewhere from age 9-14 I think many kids are probably ready to have a go at programming a computer.
My son is currently 10 years old and it's been great to watch him pick up coding.
Originally I was out to find the perfect language for him to learn.
The Ruby Rogues podcast recently had a great discussion on which languages are best to learn first and why. http://rubyrogues.com/039-rr-programming-language-fundamentals
Their conclusion is that it's actually really useful to play with and try learning a bunch of languages. Im starting to see the wisdom in it.
Here's what we've had a go at so far.
We started with Hackety Hack ("Hackety Hack will teach you the absolute basics of programming from the ground up. No previous programming experience is needed!)".
HacketyHack provides it's own text editor as part of the system, when my son started to hit the edges of hacketyhack, I installed the Sublime text editor on our old windows PC and he had a go at shoes. "Shoes is a cross-platform toolkit for writing graphical apps easily and artfully using Ruby."
We had a go at some Basic HTML with a little CSS but at 9 yo he was finding the CSS bit too abstract to get anywhere beyond basic HTML for the moment.
codecademy.com - We had a go at codecademy, but despite me loving it, he got a bit bored with it. I think what seems to work well for kids is environments where there is a graphical interface. For adults I'd definatley recommend codeacademy as a stop along the way.
MIT Scratch (Visual programming environment)
He actually really enjoyed Scratch, in a way it's like a powerful programming orientated version of microsoft powerpoint. You drag objects onto the screen and then build lego type blocks together to reflect what you want everything to do.
I think as a tool, it's great for kids to find a passion for and immediate success in telling the computer what to do. The results are immediate and visual and something even grandma appreciates when you show her.
I think it's been good to teach him the basics of loops and variables, at 9 years old loops were a little tricky, post some Scratch time he's now back into ruby and knows when he wants a loop but is still getting confient how to write the syntax himself.
I think Scratch is a worthy stopping point along the way but not a long run solution, after a while he started to just browse the games the other kids had made more than make anything and that's when I started to think he's ready for the next challenge.
For a long time now I've heard many people talk about how SmallTalk was this amazing visionary language and bought about many of the innovations we now take for granted in modern programming languages. Languages such as Ruby and ObjectiveC (which is used for programming Mac's and iPhones) draw much from SmallTalk.
When one of the Ruby Rogues made a comment to the effect, 'No language is perfect, except maybe Small Talk', this was enough for me to finally decide to give it a go.
One thing that is interesting about SmallTalk is that it's like installing a mini virtual machine on your computer, it comes with it's own desktop and Graphical Interface and desktop and the programing process is actually quite visual.
Id recommend everyone read this amazing article, 'Design Principles Behind Smalltalk' and check out SmallTalk.
So that's where we are at. We've just found this SmallTalk tutorial to build a graphical game using Test Driven Development! So I'm off to build a game!
It's fun checking out different languages, I encourage you to do the same!
This month Im blogging everyday as part of Steve Hopkins ‘Blog every day in March’ Challenge. I’m currently on my Blogging L Plates and this is my third trip in public.