Ruby4Kids
blog.ruby4kids.com
blog.ruby4kids.com
I love that the kids are having fun with this. Sometimes, in the argument of whether NoSQL is better than RDBMS or if Backbone.js is too little for too much, it seems like we collectively forget the joy that it is to program :)
Congratulations on a really neat project, if there is one thing I love doing it's teaching kids about computers and programming, and this inspired me to go and do some more of that.
I think programmatically controlling hardware (like robots and Lego) can be very attractive to kids, too.
That's a pretty powerful tool to master. The only other languages that I can think of that are that accessible to children are Logo, Basic and SmallTalk and none of those is as well established as a starting language for kids to use and as powerful at the same time.
The lego robotics kits are nice and well thought out but there is no stepping stone between there and say making a website or some other non lego-related program.
Robots and turtles are cool in that they allow control of real-world objects from a programming environment.
1. Start small
Don't start with Java. Find something simple as hell, like QBASIC[1], or easy as hell (to begin with) like Ruby or Python. Play. I repeat: Play. Play. Play. Play with the language. Let it be fun. Let yourself be childlike about it. Focus on messing around and seeing what you can do. At some point, you'll realize that you're six layers of "I wonder if..." deep, and at this point, I officially declare you to be a Programmer.
2. Start big
Find a problem you want to solve. Here are some examples:
- "I can't believe there isn't an iPhone app for tracking what kind of burgers you eat." - "I hate how I never know when a Hacker News post involving Tim Ferriss has been submitted." - "Wouldn't it be great if I never had to e-mail myself a file again?"
Footnotes
[1] - Renowned computer scientist Edsger Dijkstra would opine that any programmer whose first language was in the BASIC family tree is forever warped in the most vital parts of their brain. I cannot confirm nor deny this, but my potentially-warped brain has served me quite well.
Many of these types of problems already have answers, like the third one (the answer is Dropbox). But the practice of researching them and finding existing answers is just as much a part of programming as is the writing of code.
Edit: FWIW: I was introduced to code at age 10, but I honestly believe that there is no "best" age. As kids, we have the inbuilt zen-like child mind that lets us delve into the vicissitudes of even the most simple toy; a programming language is even more fascinating. It is the nature of adults to lose instant accessibility to that mindset, but it is by no means unachievable. Conversely, discovering code as an adult has its own advantages beyond general experience and improved cultural context: The adult mind possesses a vast array of existing systems, analogies and frameworks to aid in the understanding of higher-level concepts.
I guess what I'm saying is, it's easier for kids to motivate themselves to learn programming, but it's easier for adults to learn programming. I'm sure there are fine arguments to the contrary on both points, but there is undeniably something interesting going on there.
About a year into it now, I can say it's been one of the best decisions of my adult life. Learning the rudiments of even just a markup language was a real struggle, but the benefit to my 'left brain' has been tremendous. The greatest benefit however has been gaining a sense of hope from becoming even minimally skilled in a growing, relevant and potentially lucrative field.
However, I'll find it amusingly ironic if this catches on, even though Zed's book contains no profanity and is just fine for the kids.
If there's anything that I can do help with this via Hackety, let me know.