Teaching by Filling in Knowledge Gaps

javascript python go java kotlin October 25, 2021

Julia Evans has an interesting article, called “Teaching by Filling in Knowledge Gaps.” It talks about the process of learning for a lot of programmers, and how they teach other developers, and (possibly) a better, more humane, more effective approach.

There are a lot of “basic” concepts in programming, like memory management, networking, operating systems, assembly, etc. You could imagine that you learn programming by first starting with the basic concepts and then learning abstractions on top of those concepts.

But, even though I have a very traditional CS background, that’s not how it’s usually worked for me. Instead, here’s a real example from how I learned about websites:

  • Set up a website (for example using Apache)
  • Three years later, realize “wait, I have no idea how that worked at all”
  • Learn the basics of HTTP

Of course, to really understand how websites work, you do need to understand the basics of HTTP. But at the same time, you can make lots of great websites without knowing anything about HTTP except that 404 means “not found”.

She follows this with an encouragement to leverage how humans chunk information:

One mistake I see people make a lot when they notice someone has a knowledge gap is:

  • notice that someone is missing a fundamental concept X (like knowing how binary works or something)
  • assume “wow, you don’t know how binary works, you must not know ANYTHING”
  • give an explanation that assumes the person basically doesn’t know how to program at all
  • waste a bunch of their time explaining things they already know

But this is a huge missed opportunity when explaining a concept to a professional programmer – they already know a lot! Any professional programmer definitely knows a lot of things that are very related to how binary works.

It’s an article that requires some better parsing than a lot of similar articles, because it’s not written for clickbait - and it’s worth it.

in teaching javascript python go java kotlin

Reading time: 2 minutes.