Recently, there has been a surge of interest in learning to code, focusing especially on career opportunities. It is easy to understand why: the number of jobs for programmers and computer scientists is growing rapidly, with demand far outpacing supply.
But I see much deeper and broader reasons for learning to code. In the process of learning to code, people learn many other things. They are not just learning to code, they are coding to learn. In addition to learning mathematical and computational ideas (such as variables and conditionals), they are also learning strategies for solving problems, designing projects, and communicating ideas. These skills useful not just for computer scientists but for everyone, regardless of age, interests, or occupation.
It has become commonplace to refer to young people as “digital natives”, because of their apparent fluency with digital technologies. And, indeed, many young people are very comfortable sending text messages, playing online games, and browsing the web. But does that really make them fluent with new technologies? Although young people interact with digital media all of the time, few of them can create their own games, animations, or simulations. It’s as if they can “read” but not “write”.