To clarify: the title is the topic of this post, not a description.
Quick aside: I used to teach math. And there’s a piece of wisdom every teacher knows: if you want to really learn something, you have to teach it. The reason that is related is because students make SO many mistakes at every level, and a huge part of being a teacher is showing them why their thinking is wrong (in a positive way, if the teacher is good at his job). So being a teacher exposes you to more mistakes. You get to see them, and see why they don’t work. And you better believe a teacher has to show his work. Even apathetic college students can tell when their teacher is on the cliff edge of what he knows about to fall over. I’ve never had the opportunity to teach programming. Maybe later in life.
Later I went home and I was watching one of the twelve dozen medical shows on Hulu. Then I had a sudden realization—just a small one. But it was the kind of thing that happens when you already have one thing on your mind and something else in front of you joins with it. On a far grander scale, this is a phenomenon very familiar to scientists. It’s pretty much how every scientific discovery happens.
Simply put: I realized that doctors have to know things off the tops of their heads—and they spend much of their training being explicitly quizzed and prodded by teachers, supervising physicians and such—for just that reason. Meanwhile, I think unconsciously I have thought of programming as a very different kind of skill and career where you don’t explicitly try to memorize details. I learned a lot of broad strokes by reading books, and I’ve learned a lot of tiny details by experience. Usually that takes the form of banging my head against code that doesn’t work and Googling until I find why.
So here’s the real question: would I be better at my craft if I spent at least a little time regularly on explicitly quizzing myself on the details. Or would that just be obsessive and weird? Probably both, right?
Well, here’s an argument: scientific epiphanies, such as I described earlier, only happen if you actually have the knowledge in your head, ready to go. It jumbles around in there, something sparks, and then you know something other people don’t know.