A couple of weeks ago I was asked to teach programming to a 12 year old. At the beginning I was surprised by this request, but then I thought it would be a very interesting challenge so I decided to accept it. I was kind of lost about the best way to start teaching a pre-teen, but then I found some good starting points:
Then I came across a tool that is without a doubt, the best way to start. It’s called Kids Ruby. It’s a pretty simple IDE that has a split screen, with a Ruby code editor on the left and a console on the right, where all the results of the execution are going to be printed.
I decided to choose this kind of tool, where the user is able to type the code rather than other applications where you drag and drop elements from a toolbar to build programs. The reason I chose this option is that for a 12 year old, I could teach him far more using a tool that lets him type real code and do some math exercises.
So far, I've enjoyed teaching a child programming. Here are some tips and suggestions that I would like to share:
- Try to understand how kids understand the world. That way you can explain new ideas and concepts using their own words.
- Use flowcharts. I found it very useful to explain complex methods and it’s also a good way to improve logical thinking skills.
- Let them crash! Never EVER interrupt them before they finish an activity, write code, read a code line, etc. If there is a mistake, explain it to them and ask to repeat the activity again.
- Never skip over an error code. Always try to explain any error on the screen, whatever it is.
- Let them read and explain the code to you. This helps us check if the child really understands whatever we are teaching or if there is something that they misunderstood.
Finally, I want to share something that I found that’s really amazing. Did you ever imagine that a kid can start to learn programming for fun? I’m not talking about games... I’m talking about LEGO Mindstorm. I think this is a great way to start teaching kids programming. You can build your own robot and make it do whatever you want instead of using a game, which is limited. But you don’t need to take my word for it. A video is worth a thousand words: