Voyageur Technologique

The Value of Thinking Programmatically

Another Apology

[epistemic status: an explainer for why people are excited about kids learning programming for people who don’t know programming. Probably written about elsewhere more eloquently.]

Sometimes listen to podcasts when I’m doing boring programming. The other day I was listening to a podcast of people describing their first computer experiences. They talked about having a room at school full of Macintoshes with Hypercard loaded on them, but those computers being rarely used and then carted away before being replace by some other machine without an interface for a usable introduction to thinking programmatically.

It made me realize that for the last 25 years, we’ve had computer capable of teaching kids to program cool things and yet we’ve hardly ever used them. This made me really sad.

Then I remembered that I had recently visited my old High School where I literally ended up begging the computer science teacher to let me design a curriculum for him. The students were progressing through CSS and HTML (alright, that’s an okay to leave the world of What You See Is What You Get), onto Visual Basic (What) and Java (WHAT). They could learn JavaScript! There was Chrome installed on those computers! Those are basically IDEs for JavaScript! There’s tons of websites for live-coding with JavaScript! THEY WOULD NEVER HAVE TO HIT COMPILE. THEY ALREADY KNEW HTML AND CSS. Remembering this made me even sadder.

And then I thought about how this probably wasn’t an isolated case. Hell, I recently wrote an “Introduction to Twitter” manual for teachers, even though Twitter is literally just public email with a character limit. There’s no way anyone had bothered to show them Google’s (flawed, but ambitious) “CS First” and they thought anything but “Computers are scary”. That brought me to the edge of tears at the feeling of helplessness in the face of 25 years of wasted money and time.

It was at this point that I went for a walk to calm myself down.

The reason I’m so obsessed with and excessively emotional about teaching kids to think programmatically, is that before I knew how to program, I literally did not understand math. I passed math and physics courses by memorizing the solution steps required and regurgitating them onto a page.

Once I was taught to program in my first year of university, I understood that algorithms are just a description of the steps you used to solve a problem. These steps involved math, because math is how you describe relations between things. Math describing shapes was called geometry. Math describing relations between shapes, so you could manipulate them, was called vectorial algebra. Math describing relations between physical objects in the real world was called mechanical physics. Sums were just for-loops, functions were just ways of wrapping a series of one or more operations and plots were just tools to help you see what your math was doing. I had found the Ladder of Abstraction along with the method of Divide and Conquer and it was beautiful.

When I had revisited my old High School, I did a horribly thought-out presentation on my research. At one point I showed a displayed showing how neurons computed functions. A student exclaimed in horror: “NOT PLOTS. I HATE PLOTS. I CAN’T DO THEM.”

Their statement stopped me in my tracks. I had forgotten what it was like to think you had to “do” plots. That they weren’t just something that you used to gain insight into the world around me. I had forgotten what it was to “hate” the things you couldn’t understand instead of looking for different approaches to them.

The worst part is, this is the fault of me and my kin. The electrical engineers and computer scientists who built computing ecosystems so hostile they became feared and created walled gardens that killed chances at creativity like Hypercard.

As for the way out of this grave we’ve dug ourselves, I don’t have the arrogance of some my brethren to claim to know the solution to the extremely contentious topic of education. All I wish to claim is that resources are being wasted. If you are a teacher and you want to use computers better in your classroom, please reach out to me. If I cannot help you, I will at least point you towards someone who can.