Coding is a pretty rare skill. As a parent you can usually draw upon your own experience to teach kids things like reading and math. But how do you get your kids to learn programming without your own coding background?
#1 - Picking a Language
If you hit the internet, you will find hundreds of online coding courses. There are so many options it’s hard to know where to start. Often the decision is made to start with something simple- a stripped down and simplified language designed for kids. But you and your child are going to realize pretty quickly that you are dealing with the computer equivalent of a toy xylophone. It’s something like the real thing, but simplicity itself is usually the downfall of kid’s languages.
Kid’s languages were around 35 years ago in the golden age of interest in programming, just like they are today. But it has always been tough to see how these languages lead to creating a real app or game. When both you and your child can see that you are on a pretty limited and dead end, it’s hard to stay motivated. The danger is that this is de-motivating enough to prevent the child from advancing. Going back to the music analogy, when we try to teach children to play an instrument we usually put the real thing in their hands as soon as possible.
Tip– Use a real programming language rather than something designed exclusively for kids. It will pay off in the long term. We use Ruby on the Linux OS.
We teach a professional software language on a real server OS. There’s no question that this is the real deal. It’s a little harder to get started but the difference is the coding equivalent of winding up playing a real instrument versus winding up playing a toy kazoo.
#2 - Keeping Them Interested
Once you pick a relevant language and find an online or self-learning course, beware that online courses and books have a lot of limitations. Kids get bored with ‘type this, do that’ instructions pretty easily and online learning tends to stifle creativity and exploration. Most kids lose their enthusiasm and won’t stick with it. When the child has to learn on their own, with projects that limit creativity and no one to share and interact with, it’s easy for learning projects to fizzle.
Tip – Motivation is a big part of the challenge. Get your son or daughter working on a project of their own creation versus ‘following the dotted lines’ in an online course. Games are usually good.
We use games as a motivator because most kids are really interested in them. We give kids the goal of creating their own projects based on their own imagination and their own self-learning based on looking at game projects we provide or that are widely available online.
As they conquer initial projects, further motivation comes from successful outcomes and the ability to take pride in their accomplishments. Ongoing motivation can also come from the fun and challenge of entering game programming competitions that are also common and frequent online.
#3 - Don’t let your child try to go it alone
Again with the music analogy, it’s certainly possible for kids to learn an instrument from self study courses and online courses, or even YouTube videos. For the most part though, when people want kids to learn music for example, they put them in a music class. The class provides not instruction but also other students, guidance and encouragement to do things like practise. The reason people do this for music is that it’s far more likely that they are going to have a successful outcome than with the self-study approach. Programming is no different.
Tip- Trying to go it alone will lead most likely to failure. Find a mentor of some type for your child and a study partner. Even if you communicate online it’s better than going it alone and relying entirely on books and courses.
Our classes have other kids that are also interested in coding and this gives reassurance in showing that other students are facing the same struggles. We also get kids to work in pairs (see our other articles for why we do this).
We try to instill a problem sharing and solution sharing culture in the kids. This is part of programming culture and for a lot issues they can get help from other students in the class. The ability to communicate problems and share solutions effectively is an extremely valuable skill in coding and a lot of other fields of study as well.
#4 - Make a plan for how you are going to get ‘Unstuck’
Eventually your student is going to face problems with programming projects that he or she can’t solve on their own and won’t find in a course. Your child’s technical challenges are going to be unique to their project and that’s part of the nature of programming.
No online course will provide this- it’s impossible. The student is going to have to work out their own solution. This can be very frustrating to try to do as a young person learning on your own.
In fact, solving unique problems is one of the foundations of programming. A key reason that has been cited for many students dropping out of computing is that for real world problems, programming is not very formulaic and this is discouraging. Much of programming is a ‘learning by doing’ experience for each project and many students are uncomfortable with the uncertainty of not being taught step by step beforehand, and not knowing if their potential solutions are ‘right’ or ‘good enough’.
The danger is that your child can decide that programming isn’t for him or her because they think it’s too hard or they aren’t good at it. The reality is that even good programmers face challenges every day and most of the skill of programming is not the ability to use pre-existing knowledge but rather the ability to work though new and unique problems. The danger is that kids simply lose interest when things get a little more difficult.
Tip – Your child needs someone with the technical skills in the language you have chosen to answer their technical questions. Without it, there’s a huge risk of giving up. Find a friend, programmer or instructor that can work through technical challenges with your child. These can be in person on online.
At Nimble Programmer we provide knowledgeable instructors, including working programmers, that are experienced in working through complex issues and discovering solutions that will work. When students do come to a difficult problem, the instructor can guide them through possible solutions and the merits of the different approaches.
Start with a real programming language instead of a kid centric one. Don’t rely on pre-made course content - let your child pick their own projects to work on, usually a game. Find friends and mentors for your child to work with- the self teaching approach frustrates a lot of would be programmers. Make a plan and find a resource to solve tough technical problems that are going to show up.
This is our basic approach. The details are going to vary based on the resources available to you and individual preferences. We hope this helps you in giving your child a programming education.