The distinction between declarative memory and procedural memory is one attempt among many to describe the distinction between “knowing that” and “knowing how”. Declarative memory is things we can explicitly state (or declare, hence the name), like “Toronto is the capital of Ontario”. Procedural memory is things we can do but not necessarily describe, like riding a bicycle or recognizing a face.

The closer you look at this distinction, though, the blurrier it becomes. For example, it’s pretty clear that “Toronto is the capital of Ontario” is declarative but how did I know what process to use to recall that particular fact, or to select that fact for recall? Similarly, you can argue that “1 plus 1 is 2” is declarative (it’s just a fact) but “327 plus 441 is 768” seems pretty procedural (since I have to follow a process to do the addition), except of course the process is something I can explicitly describe, so it must be declarative, and around and around we go. Other people will argue that the distinction is misleading because it focuses on what we can put into words: if I can’t describe how I ride a bike, that’s a limitation of language rather than an indication that a different kind of thought process is involved. And I’ve been told that some people say the distinction says more about Western philosophy’s preoccupation with dualism than with anything real, but that’s well beyond anything I understand.

When I’m teaching, I find it’s more useful to distinguish between:

  • unconscious ignorance: you don’t even know that you don’t know how to do this

  • conscious ignorance: you’re aware that you don’t know (and it’s frustrating)

  • conscious mastery: you know how to do it, but you have to pay attention and think through the steps

  • unconscious mastery: you can do it without consciously thinking about it

This is kind of like progressing from ignorance to declarative knowledge to procedural knowledge, though that’s also inaccurate: you’re never really consciously performing all the things you do to ride a bicycle. From a programming point of view, though, people certainly move common operations through this sequence: I don’t write loops step-by-step any more, but I do still have to think very hard when I’m using promises in Javascript.

The more things you have in your unconscious mastery toolbox, the more quickly you can piece togehter solutions to larger problems: you know the fingers for the chords, so you can think about what style of song you want to play. But as far as we know, the only way to get to unconscious mastery is repeated practice: reading about something over and over doesn’t work, but being required to recall it and apply it over and over again does. This is why we play scales, do kata, and make sushi rice over and over again.

The last thought is therefore something borrowed from Bernd Heinrich: the people who become masters are the ones who learned to enjoy practicing. Every great musician finds something rewarding in playing scales; if they didn’t, they wouldn’t ever become a great musician. Similarly, everyone who wants to write finds a way to enjoy writing articles like this one, which is why this is my 3,652nd blog post.