Computer Science Education and Humans

Computer Science education is in need of vast improvement. We’re taught low-level details of how software works at an atomic level, but we ignore the human side of software. I’m not talking about user interfaces, I’m talking about ignoring the humans who make software and the humans who use try to get things done with it.

Everybody believes their line of work is an essential part of the world — and they’re completely correct — but our current age is one built precariously on science and technology. Almost all of Western human culture is either derived from or delivered through some kind of digital orifice. This means there is an incredible need put on those who create and build the technology, and because there’s a lack of education, this also puts an incredible strain on those very same people.

In other aspects of culture creation, in trades such as carpentry or graphic design, the education includes learning the constraints of the craft, (like the relationship between the wood and the saw, or how colours render differently between screen and print) and it also includes fundamental principles like aesthetics of form or typography — qualities of the trade which are the result of learning from human experience over the course of centuries.

Computer Science education focuses almost entirely on the former. Students are taught how the computer works, and, beginning at the theoretical ground, learn how software can be represented as fundamental processes (as described by Alan Turing) all the way up to how good object-oriented systems are to be designed. We learn about data structures and algorithms and we learn why some are suitable in some cases but not others. We’re essentially taught the mechanics, but we’re taught nothing of what properties emerge from these mechanics.

Our field is nascent, and although it looks like we’ve been stuck with things like unresponsive, unhelpful graphical user interfaces for a long time, they’re really just the beginnings of what interactive digital machines are capable of doing. What they don’t teach you in Computer Science is basically anything you can imagine is possible. The bigger problem is student imagination is stifled by the status quo, instead of being nurtured by education. We’re often asked not to re-think how to solve problems for people but instead taught how the mechanics of existing practices already work. We’re not taught to be brilliant, creative thinkers, but instead taught how to become cogs, manufacturing computer programs.

The saddest part is, those who we should be learning from remain mainly ignored in Computer Science education. There have been many great thinkers in our field, from Alan Turing to Stephen Wolfram, from Vannevar Bush to Douglas Englebart and Tim Berners-Lee, from Alan Kay to Bret Victor. There’s an absolute treasure trove of great thinkers in Computer Science (and thanks to the natures of computers, almost all their work is dutifully digitized and readily available) who go almost entirely unnoticed in Computer Science education. There are great minds, who have solved the same problems over and over again, or whose ideas were decades before their time, who go completely unmentioned in the four years of an undergraduate Computer Science degree. How can we call ourselves educated in this field if we know nothing of its masters?

We’re learning how to build bricks but not how to build buildings for we learn nothing about how architecture applies to humans, and we learn nothing from the great architects who’ve come before us.

We can fix this by rattling the cages. Those great masters who have come before us didn’t exist in a vacuum and they didn’t invent everything all on their own. They saw further by standing on the shoulders of giants. Their ideas are dangerously important, but they didn’t emerge out of the ether. And so like them, we need to learn from the greats. We need to learn not only about how to build software, but we need to question and examine the fundamentals of what we’re even building. We need to demand for an education where ignoring past bodies of information is a travesty, and we need to demand the same from ourselves. If you’ve already finished your university education, don’t worry, because we all continue to learn every day.

So read about and learn from the Greats. And more importantly, help others do the same. Start talking about a Great you admire and don’t shut up until everyone you know has read his or her works, and then you can start building off them.

Speed of Light