Many of us have heard sayings like "coding is the new literacy," or "prepare our children for the future." Besides learning to listen attentively to adults, to sit still in a classroom, to count, to know the alphabet, to read, to add, to subtract... kids in the 21st century have yet one more thing on their do-to list, and that is to learn how to code.
Computer science has been incorporated into school curriculum in many places around the world, and toys and apps that purpose to teach kids computational thinking or coding skills have become immensely popular. With coding classes and commercial products being marketed to kids younger and younger, many parents have probably asked themselves, "Should I teach coding to my kid? If yes how and when?"
There is not one correct answer, but here are some answers to some questions. Will my kid fail to find a job in the future economy if they don't learn how to code? - Probably not. Will knowing how to code guarantee my kid a better future? - Probably not. So we all need to relax a bit. Knowing how to code doesn't make you future-proof, and not knowing how to code will not fail you automatically. It's a nice skill to have, but definitely not as essential as literacy, basic reasoning skills, or interpersonal skills. So should we teach computer science to kids? It depends.
Just like learning to ride a bike or a second language, learning computer science, when done correctly, is likely not going to do them harm. The many educational toys and softwares on the market have made coding fun and digestible for the kids. Kids generally code the physical toys, like Bee Bot and Cubetto, by giving them directions or the number of steps they need to move. For example BeeBot is incorporate into QI SCHOOL's curriculum to facilitate computational thinking as well as learning other topics such as alphabets and life cycles of animals. Children need to recall what they've learned in class, to plan the routes for the robot and tell the robot where to go in its language.
Kids' coding softwares like Scratch and Scratch Jr use block-like codes that are made to combine easily. Kids can combine codes to make characters move or interact with characters. Teaching kids code through toys or apps can be a fun and rewarding experience. It usually takes kids some time to understand how things work, and when they get the results they want, they feel accomplished. Just like learning a new language, children's executive function skills are practiced and strengthened in these tasks. These exercises can be beneficial, but they are just a very small portion of the trainings a good coder needs to go through.
Learning the language for coding, the syntax, is the just very first step, and it is the relatively easy step. Just like how we spend the first ten years or so learning to read, but spend our whole life developing reasoning and critical thinking skills while reading more difficult and diverse materials, kids go through a long development to sharpen their problem-solving skills before they can successfully control computers and systems.
Coding with educational toys and apps is just a tiny subset of experiences that build children's problem-solving skills and related skills such as persevering and collaborating. Kids' lives are filled with problems to solve, and they range from putting on a jacket to negotiating with another kids on who gets the toy. Many future jobs will involve coding, but more fundamentally they require the ability to solve problems, and to keep finding better solutions.
When a child faces a problem, we have a few options. We can solve the problem for them, we can teach them a way to solve the problem, or we can guide them through the process of coming up with a solution. Of course we need to use all three options in different occasions, but the last one is especially worth mentioning. Practicing coming up with solutions from early on can benefit our children in the long run. Coming up with a good solution involves trying something first, see how it works, try a slightly different thing, and test again... The cycle may repeat many times. Children might not have the best solution or a solution at all at the beginning, and they might struggle at a seemingly easy problem. But they are quick to adapt their old strategies and pick up new strategies.
They learn from successful experiences, unsuccessful experiences, watching others do, and reflecting on their experiences. Through trials and errors, children develop better, more efficient strategies. A child may find that simply asking another child to give up her toy doesn't work, so she might try adding the word "please", and if that still doesn't work, she might suggest trading toys. During the process it's important for adults to give children the space to solve problems on their own as it allows kids to see for themselves what works and what doesn't work, but it's also important to be there for them and nudge them towards the effective and mutually beneficial solutions.
It's also worth mentioning that even when kids have discovered a new and better solution, they don't simply stick to it. They go back and forth between the old, not so efficient strategies and the new, more efficient ones. The adoption of new ways of thinking is a slow and gradual process, and we need to be patient. Children and adults alike, often think about a problem in multiple ways at any given time, and this variability in thinking is shown to benefit our subsequent learning. Making mistakes and taking the longer routes can help us become more creative problem solvers and come up with solutions to many different types of problems. This switching among different strategies might actually be more beneficial in the long run than simply adopting the "best" strategy every time. So don't be alarmed if your child seems to have forgotten how to solve a problem they used to be able to. They are testing out different strategies for themselves, and this is the process through which they practice problem-solving.
Learning to code can be fun and rewarding, but it doesn't give you magical powers. It might be cool to try out when your child is at an appropriate age. For example Scratch Jr is made for kids 5-7 years old, and they have free tutorials on their website. Our life is a complex system itself, and there's so much coding-related skills our children can gain just from daily experiences. And as teachers and parents, there is a lot we can do to help our children learn from those experiences.