Months ago, I deviated from my usual math and physics themes and wrote about the benefits of learning to write computer programs. The emphasis there was on the social benefit of understanding a major force that is shaping how we live and on the corresponding employment opportunities.
This blog post from KQED is more about how learning to code has benefits that are transferable to other academic subjects. The authors break them down into categories, including systems thinking and collaboration. Having spent the majority of my adult life as a software developer, I can thoroughly endorse their conclusions.
When I tutor students they sometimes mention their computer courses at school. The classes sound as frightfully boring to me as they do to them. Learning to format an MS Word document is almost one of the practical necessities of modern life but it does not get young people excited about entering the work force. Teaching children how to stay alert during marathon PowerPoint presentations is something they would eventually appreciate but it might be hard to convince them of its relevance to the adult world. There would also be the practical difficulty of finding someone qualified to teach such a rare skill (the staying awake part).
Programming, by contrast, has the potential to be vastly more engaging. Knowing how to code empowers a person to actually build things that work. The skill lets a person rapidly iterate through cycles of theory, prediction, design, testing, observation, analysis, conclusion, and publication. Programming lets a student exercise the scientific method much more rapidly and with much less supervision and special equipment than physics, chemistry, or biology. One thing that can happen when young people learn to code is that some of them will “get it” so rapidly that they soon outpace their teachers. This makes some people uncomfortable but, to me, it is something to be celebrated.