Why you need to learn to program

Why you need to learn to program

Thinking

A generation ago, a balanced liberal arts education was measured by a student's ability to read and write. The next generation of students will be measured by digital literacy, fluency in 'coding' languages, and their ability to uncover patterns in data and communicate their findings.


A generation ago, a balanced liberal arts education was measured by a student's ability to read and write, and their knowledge of the natural sciences, social science, arts, and humanities. Communication shifted in my generation with the rapid adoption of personal computing, and so we were judged in our ability to give PowerPoint presentations and add rows in Excel (=SUM()!). Software continues to 'eat the world,' and data are more ubiquitous than ever. The next generation of students will be measured by digital literacy, fluency in 'coding' languages, and their ability to uncover patterns in data and communicate their findings. Everyone will learn to program. And you should too.

Computers are everywhere. But they have been for a generation. What's changing, though, is that data are everywhere. Every discipline, company, hobby, profession is collecting data and using it. Like reading? Goodreads and Amazon have recommender systems to make suggestions. Same for Spotify, Netflix, and beyond. Literature? Natural language processing analyzes text to determine if Shakespeare really wrote Shakespeare. Selling? Customer data is gold. But also A/B test to measure the more clickable ad and switch mid-campaign. Running? Track your mileage, heart rate variability, and everything between to achieve peak performance. Art? StyleGANs or generative art make it; NFTs sell it. Indeed, computation and data are changing the world. And while not everyone needs to be a computer scientist. Everyone needs to learn to program.

The difference between coding and programming is an important distinction. Coding is writing instructions for a computer to understand. Programming is creating software to do things. Similarly, you write a book (the output) in several different languages; you program a computer to do something (the output) in several different languages.

But computer software has several outputs. You can tell it to make art, play a game, take measurements, and so on. Likewise, computer programming can be done in several coding languages, depending on what you want to do. The instructions for making a website will be different than those for building an operating system.

Coding is how you program. I've often said, "it doesn't matter which programming language you use to code," which is mostly true. If you can generate your desired output using a rarely used language, then go for it! In the book writing example: if you want to write a book, and don't speak English, write your book in your native tongue. When you say, "I'm an author" does anyone ask, "in which language(s)?"

I wrote mostly true above because there are times when the programming language you use to code matters. For example, when collaborating with other programmers (it's helpful to "speak" the same language), when leveraging open source software (can't use it if you don't understand it), or when specialized functions or frameworks are required (technical limitations). And indeed, you cannot program without coding. Even no-code is a type of coding, but instead of speaking in words, you're speaking in pictures. But this point is not to learn to code; the point is to learn to program.

Not being able to program is a significant disadvantage; this is here today, not just in the future. You don't need to be a computer scientist to program — to be able to build a website, whip up an app for prototyping, automate repetitive tasks, find patterns in data. Just like you don't need to be an architect to fix your house; you don't need to be a doctor to stay healthy.

Like any learning project, you need to find the right motivation. Many start by solving a single problem or getting the answer to a question they want to know. And then, little by little, you learn more, go deeper, and your knowledge compounds.

Fortunately, anyone with internet access can mine the world's knowledge and learn to program. Moreover, learning resources and programming tools are easier and more accessible than ever before, in large part by dedicated open-access software developers.

"Everybody in this country should learn how to program a computer…because it teaches you how to think" — Steve Jobs

Beyond the tangible benefits of programming, learning to program teaches computational thinking. Learning programming has several second-order effects, including breaking down problems and solving those problems. We certainly need solvers for humanity's most significant problems (energy, climate, food/water, conflict, disparities, human disease, education, human rights, and more). Learning to program will empower the next generation of entrepreneurs, educators, and policymakers; and you too.