Why all the push to get kids started with coding and design earlier? Shouldn’t they be more focused on essentials, like math and grammar? Shouldn’t they be getting physical exercise instead? I don’t want my kid to be a couch potato! And what about the arts—I want my kid to be doing creative things, or learning another language, not turning into a robot. Not to mention social-emotional development. Isn’t putting them in front of a screen just stifling their ability to interact with other humans?
I’m glad you asked these questions. Here are my hot takes:
First, I firmly believe that teaching kids coding—solving problems and creating solutions using a programmatic framework—is of immense general benefit. It develops multiple skills in parallel, within a safe, controlled environment:
- understanding of basic logic and logical operations
- breaking down big problems into smaller, manageable ones (sometimes unironically referred to as decomposition)
- reinforcement of powerful working habits, like reflection and revision, self-documentation, independence, and persistence
These habits will strengthen their thinking and cognitive development generally. So while I would stop short of asserting that coding is “the new literacy,” or that every child needs to learn how to code to survive in the 21st century, I would argue that teaching students coding, if done effectively, can in fact be a fundamental educational activity. I’m not talking so much about memorizing syntax, keywords, or obscure or esoteric commands. Those things are important, especially in the professional world. But for young learners the real value is higher-level: solving problems given a context, constraints, and resources.
A cool aspect to coding is that it really lends itself well to differentiation, allowing for each student to address challenges elastically. Students can be given projects with a nearly infinite amount of extensibility and range of difficulties. They can scale the problem, and solve for it, at the level of complexity and detail with which they’re comfortable. Students can work in their own way, in their own style, and at their own pace.
Do kids need exercise too? Of course. Countless peer-reviewed studies show that physical exercise and proper diet enhances brain development. This should not be a choice. You just have to find the right balance.
The view that programming—or more broadly, engineering—is a robotic, soulless, or non-creative pursuit is an uninformed one. Of course there is rote memorization involved in coding. There is rote memorization involved in all intellectual activity: math, history, reading, writing. Memory is a fundamental component of proper brain functioning. But once you have a handle on your framework and some basic tools, you can start to improvise and create. And the bigger your toolbox, the more creative you can get.
The Zen of Python claims, somewhat audaciously, that “there should be one obvious way to do it.” But the obvious way is not the only way to do things! Also, I read that maxim to be directed at a pretty micro level. At the macro level, there are countless decisions involved in every coding endeavor—for example, tradeoffs between things like speed, portability, extensibility, resource management, etc. There may be one obvious way to traverse a list in Python, or C++, but there are millions of ways to design an RPG.
Sharing and Collaboration
One of the neatest things I’ve seen through years of teaching young kids to program is the amount of voluntary sharing they do. There’s such a joy in being able to create your own interactive mini-world—whether it’s an animation, a game, a tutorial, an application—that they often take great pride in their creations, and want others to share in the appreciation. Many times their peers’ feedback inspires them to go back and refine their designs…just like things are supposed to happen in the real world!
Furthermore, projects can be designed to be collaborative. For instance, in producing an animation, one student can do the bulk of the coding, while another one does character design. Or in a role-playing game, one player models the player classes, while another designs the reward classes. These kids of efforts require interpersonal cooperation and collaboration. In these ways, coding can actually serve as a catalyst for social interaction.