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 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.
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;
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.
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.