Today's coders fall into two categories. Some started to learn how to code when they were kids, and others learned how to code as adults. But in recent years we've seen more and more children start to learn how to code as there's been a push to raise awareness of coding and why kids' coding is important.
So, how early should kids start learning how to code? In this blog post, I'll make the case that:
There is a clear benefit for kids to start to learn how to code early, as long as they learn real coding.
Starting too early, however, may be counterproductive.
Starting early doesn't mean rushing through the topics. Things should be learned at the right time and the right pace.
Let's start to have a look at why starting to learn to code early can be very advantageous.
Proficiency Needs Time and Starting Early = More Time
One of the most common mistakes beginners make when learning how to code is to think that coding is about learning commands. We often hear students who have done a bit of coding tell us "yes, I know how to use the for loop". What they mean to say is that they know how to write the line of code that makes a for loop. This is very different from knowing how to use this tool.
The only way to become proficient in coding is to practice and write lots of code in many different projects. There is no short cut.
And this is one reason why starting to learn to code early is beneficial. It gives kids lots of time to practise as they grow older so that by the time they're young adults they have plenty of coding hours under their belts.
Learning to code has similarities with learning a musical instrument. Great lessons with an excellent teacher are important, but so is the hours of practice that are required to become proficient.
As there are so many hours in a day, and our kids have other things to do as well, then starting at a young age is a great way of getting lots of hours of practice.
But Starting Too Early Can Be Counterproductive
We have established that starting to learn how to code early is good. But how early should kids start?
Let's start with one barrier that prevents very young children from getting started. Real coding uses text-based coding languages and therefore there is always some typing involved. Kids, therefore, need to be able to write and even though there are tools that can be used to help with spelling (a bit like spell-checkers when writing in English), if kids are not at the stage where they can write reasonably well then coding is just too hard. Kids will get frustrated because their writing and typing lets them down.
Coding is also an abstract subject with concepts that the very young may find too difficult to comprehend. Even some of the most basic concepts require some maturity and four and five-year-olds for example are simply too young to be able to start coding.
Now, you may have heard of tools that are specifically meant for the very young to start to learn 'coding'. These are platforms designed specifically for kids. Unfortunately, there is very little resemblance between these kid-specific platforms and real coding, so there is very limited benefit in using them. They may even end up being counterproductive as they give kids the wrong impression of what coding is, potentially making it harder for them once they move to real coding using a language such as Python.
At codetoday, we choose to only teach real coding using Python and we keep clear of the children-specific platforms. These may have their place in schools where the expertise to teach coding is missing so teaching Scratch is "better than nothing", but there is no point in teaching Scratch or similar platforms if the aim is to teach coding. We also choose to start teaching kids from the age of 7, starting with projects that are designed specifically for the younger students.
Learn The Right Topics At the Right Time
And as with every other subject, coding has some simpler topics and some harder topics. Learning the basics, and learning them well, is very important. Just as important is now to jump the gun and move to harder topics too quickly.
This is particularly problematic as students may look up a tutorial on the internet or in a book and copy the code and run it. Students may think they are doing advanced coding when in fact they are merely copying and running code.
Mastering the fundamental topics is important before students can move forward to advanced material. Another common error that overly-keen students may do is to start playing with more complex code that they find online without having a solid understanding of the basics.
So starting to learn how to code early is great, but it doesn't mean a student should rush to the more advanced material too quickly. Gaining proficiency with the basics is a lot more important.
Learning to code is important because it teaches kids how to think
Kids Don't Need to "Unlearn" How To Think Like a Human
Coding is a mindset, a different way of thinking that is closer to how computers "think" than to how we humans think. Computers are not clever, so we need to communicate with them using clear and unambiguous ways, following one step after another logically and systematically.
As human beings, as we grow up we learn how to use the context of a particular situation and how it's important when we communicate with other human beings. A parent asking their spouse to "get the kids ready" before going out, or asking them to "get the tomatoes ready" while preparing dinner is using context to use two sentences that are very similar but that have very different meanings. The tomatoes need to be washed in the sink and chopped finely. The kids need to put their shoes and coats on, on the other hand, to be ready.
These are things we learn as we grow up. Kids find it harder to understand the context of a situation and how this affects how they communicate with other people.
In coding, we have to very clear on what instructions we give to the computer. The computer does not understand the context of the problem we're trying to solve in our code. If we have name = "Fred" in our code, a human being will readily recognise this as the name of a person, or perhaps a pet, but for the computer, these are just four characters. If won't treat this any differently from name = "e%2q".
What's this got to do with learning to code at an early age? Since kids haven't yet learned how to think like adult human beings, they can find the logic of how to write code easier than adults who start to learn how to code. An adult needs to 'unlearn' how to think like a human and learn how to think like a computer when coding. Kids have less to 'unlearn'.
And by extension, the older kids are, the more unlearning they will need to do.
Coding Helps With Learning Overall
Coding is the ultimate problem-solving subject. It requires you to think clearly, logically and break down a problem into small steps. These critical thinking skills are useful assets for children to have beyond just coding. They help them later on in life but they also help them while learning other subjects.
Learning coding from a young age helps kids become better at thinking. As Steve Jobs once said, "Everybody should learn to program a computer because it teaches you how to think".
To understand why kids' coding is important we need to look beyond just getting them ready to become professional coders in the future–most of them won't.
Learning to code is important because it teaches kids how to think.