Computer Science
What it actually means to learn programming — and why the standard reactions to that question both miss the point.
“In my vision, the child programs the computer and, in doing so, both acquires a sense of mastery over a piece of the most modern and powerful technology and establishes an intimate contact with some of the deepest ideas from science, from mathematics, and from the art of intellectual model building.”
— Seymour Papert, Mindstorms
Two reactions tend to greet any mention of learning to program.
The first is intimidation: I could never do that. Too hard, wouldn’t know where to start. The second is mystification: computers are treated as essentially magical — systems so complex and alien that understanding them is reserved for a special kind of mind.
Both are wrong, and in similar ways. They mistake the unfamiliar for the incomprehensible.
Computers are not magical. They are governed by deterministic rules and principles — principles that can be studied, understood, and then put to use in novel ways. Learning the basics of programming doesn’t make computers less impressive. It makes their impressiveness intelligible. The awe survives; the mysticism doesn’t.
The intimidation is equally misplaced. Programming is learnable by almost anyone who is curious and willing to sit with difficulty. What makes it hard is not the inherent complexity but the habit of thinking it demands — a new kind of precision, a new tolerance for ambiguity resolving into clarity. That takes time. It doesn’t take special talent.
What Papert understood, and what tends to get lost in debates about who should learn to code, is that the value is not primarily vocational. The value is that programming puts you in intimate contact with ideas: how information is structured, how problems decompose, how rules combine to produce behaviour no single rule anticipated. These are not just programming ideas. They are thinking ideas.
There is also something to be said for Feynman’s observation that you don’t really understand something until you can explain it. Writing about what you’re learning — teaching it, even imperfectly — forces you to locate the gaps in your own understanding. The act of explanation is not a way of sharing knowledge you already have. It is a way of completing the acquisition of it.
The goal here is not to turn you into a software engineer. It is to take the mysticism out of computers while preserving what Papert called “intimate contact with some of the deepest ideas.” Those ideas are available to anyone willing to look.