Teaching Humans and Machines


This post is about explicit instruction

After working for a few years as a high school teacher I decided to learn how to code. I had done some basic programming at university, but I took a whole year off my teaching job and dived right into the field. To my surprise, I discovered that teaching and programming are remarkably similar, and I began to question what that means about education.

Since 1840 when Ada Lovelace wrote the first computer program, the job of the programmer has been to teach machines how to do things. Just like humans, most newborn machines know very little. However, through a series of commands, a programmer can teach a machine how to calculate numbers, send messages, display videos, and generally be a contributing member of society.

When I eventually returned to classroom teaching I was struck by the similarities between how humans and machines are taught. I wasn't immediately bothered, since I would have expected some aspects to be universal. In one sense, teaching is just the communication of knowledge. Why should it matter who, or what, you're communicating to? However, I began to notice that while the same principles were being used, they were working much better for machines! As I slowly discovered the reasons for these different outcomes, I also began to see some ways that education would need to change.

The Principles of Teaching and Programming

The following principles underlie the teaching of both humans and computers, and would look equally familiar to practitioners in either field. To show the similarities more clearly, I've included terminology from both fields.

Explicit Outcomes

A computer must be told exactly what to do at every stage of every process, in perfect detail. Likewise, a teacher must decide exactly what they want students to know before teaching it. Schools usually go much further, defining decade-long curriculums full of explicitly defined knowledge for students to learn. Practitioners in both fields agree that clear objectives are the basis for good implementation.

Teachers: Learning objectives; success criteria; understanding by design;
Programmers: Product specifications; commands; algorithms;


Complex teachings can be split into many simpler modules. These modules can then be combined in different ways to create different structures of understanding in different brains. It is generally accepted that boundaries between modules are arbitrary, but that they add great convenience to planning and implementation.

Schools teach subjects that are split into semesters, which are split into units, and then into lessons. To say that someone has an "education" is to say that they have assimilated and combined knowledge from many such modules. Similarly, complex computer programs are built from many smaller software packages. Computers learn how to "run Facebook" by combining abilities from many simpler modules.

Teachers: Modules; subjects; prerequisites;
Programmers: Modules; packages; dependencies;


Once knowledge has been explicitly defined and crafted into modules, it also needs to be explicitly transferred to the receiving - human or silicone - brain. Assuming the raw material to be a blank slate with little or no significant prior knowledge, all important decisions must be made by the teacher or programmer. If there are any problems, the onus is on the instructor to fix them.

Teachers: Teach; instruct; intervene; engage;
Programmers: Build; compile; install; command;


The only way to know if knowledge was correctly installed is through testing; a practice that is considered sacred in both professions.

Programmers refer to "test-driven design", meaning that good programs begin with good tests. First they decide what the computer should know, then how to test if it knows it, and then they finally they install the commands that allow the machine to pass the test. Teachers call it "backwards planning", which means exactly the same thing. In both instances, test-passing is the definition of success. However, if the test is failed, it is time to go back and fix the problem, then re-test.

Teachers: Test; backwards planning
Programmers: Test; test-driven development


Once a good set of code has been written, the goal is often to use it to teach as many machines as possible. Likewise, good teaching practices are deliberately spread via mass professional development workshops and promulgated via state education departments. Meanwhile, actual content is scaled via textbooks, lectures and the internet.

Teachers: Scale; best practice; whole-school approach; cost;
Programmers: Scale; efficiency; distribution; cost;

Why Have the Principles Worked Better for Machines?

When I noticed these similarities, what stood out most was that these principles have worked so much better for machines! As it turns out, that's because they're based on some strong assumptions that apply very well to machines, but not so well for humans.

Permanent Memories

Most software you install on your computer today will work perfectly fine in two years' time. In contrast, if you just passed a trigonometry course today, chances are very high that you won't be able to pass it again in three years, unless you regularly practice to keep it fresh.

This is bad news for modularity, since modules often form long chains of prerequisites. However, over a century of research has shown that we easily forget large amounts of knowledge mere days after passing a test. So if your Higher Maths course depends on what you learned last year in Basic Maths, but you forgot most of it over the holidays, why do prerequisites matter at all?

One reason is that they filter out students who are struggling. Thus, a Basic Maths course could simply get rid of those who don't like maths, don't want to study, or don't have enough prior knowledge for even that initial subject. This could happen explicitly, by failing those students, or implicitly, through a painful experience. Ultimately, while they may seem to help students succeed, prerequisite courses may mostly just be culling the herd.

Now, I'm not saying that no one remembers anything from past subjects. But as a teacher I have observed that most advanced units are taught "as if" students didn't remember anything from past units, because it's a good reflection of reality. When teachers don't behave this way, students are simply forced to "revise" - which is just a euphemism for "re-learn" - in their own time.

Blank Slates

Humans have associative memories, which is why we learn best by integrating new knowledge with old. If you just learned something interesting in maths, you'll find it easier to explain to someone who has strong mathematical background knowledge. We all have diverse prior knowledge from our different experiences of life, making the installation of identical knowledge into different learners very challenging (to say the least!).

In contrast, computers store all their knowledge in separate compartments that rarely interact. As long as the prerequisite modules are there, and you communicate in a language it can understand, a machine will store whatever you teach it. Again, the falsity of this assumption when applied to humans calls the whole concept of a modular curriculum strongly into question, since the potential for human learners to make rich connections with new concepts depends on their entire knowledge and not just the explicit pre-requisite knowledge (which they probably already forgot).

Passive Agents

Machines cannot learn without being taught. Even the new class of machine learning needs programmers to teach it how to learn. With computers, we don't need to take into account any pre-existing knowledge or motivational drivers, because they are truly passive. Even ones which cause us havoc with viruses must be taught how to cause that havoc!

But humans are born with needs and desires that ultimately drive their learning. For many students, the desire for social acceptance and recognition propels them to seek good grades from school. Others would rather learn how to rebel effectively. But that is still learning, and it's due not to teachers or the curriculum but the learners themselves. Either way, humans are not naturally passive, and need to be pacified to a certain degree in order to sit still and receive knowledge from others. If you don't want to take my word on this, just watch how students respond when the end of school bell rings.

Identical Brains

Differentiation is a contemporary buzzword in teaching that describes the fact that different students, with different background knowledge and different strength need to learn in different ways. In contrast, most software can be easily installed on many computers without issue. This makes scaling a programmer's work much easier than scaling a teacher's work.

Nurturing Human Strengths

The reason why those principles work so well for machines is because they're a perfect fit for dull minds. Computers are passive, blank slates with permanent memories, making it trivial to teach thousands of them the same complex skills with ease. Just decide what you want them to know, chop it into pieces, teach and test each one separately, and if all works well with one or two machines, you're ready to scale it up.

Human brains have entirely different strengths, including diverse prior knowledge, intrinsic motivators and associative memory, just to name a few. Even the ability to forget is a human strength that must be understood and used to the advantage of learners. We deserve better principles, which nurture those strengths rather than struggling to suppress them.

Last modified: