Random Thoughts and Epiphanies

To clarify: the title is the topic of this post, not a description.

I had a job interview today. One of the developers brought in to talk with me actually asked me two JavaScript-specific questions I could not answer. The questions were about what happens in edge cases I had never run into. Example: what happens if you try to JSON stringify a JavaScript object that has user-defined methods defined on it. I didn’t know the answer to that because I have never made that mistake. I know the JSON format can’t hold a function—it could hold a string that evaluates to a function, but that’s not the same thing—so I never encountered the situation to learn what would happen. I’d like to think not knowing that was not a big deal. Either way, that isn’t my full point.

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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s