Scott Hanselman asked this question on Twitter just now:

I wanted to reply but the Twitter character limit blah blah so here I am.
The short version is that it’s probably not necessary for most folks to really know the details of how computers do their thing, but given how even modern programming languages still leak some of the lower-level implementation (threads, garbage collection/allocation of memory etc) it probably helps. Especially if you ever have performance issues that need correcting. Could an entire team get away without knowing these details? Probably, at least until they needed to scale. Then it’s time to hire folks who have that deeper understanding.
To answer Scott’s questions more thoroughly:
How many of you are interested in “internals” of computers?
I put my hand up here. I think it’s probably a personal thing, though, I once asked on StackOverflow “Where and how does software meet hardware?”. It was closed 12 years after I wrote it (gotta love StackOverflow) but in essence it was asking how characters typed on a keyboard end up operating a processor. I got my answer in the end by reading the excellent CODE by Charles Petzold. I was fascinated to learn about Morse code and the beginnings of electronic telegraph systems.
Then on to how multiple electronic switches can be assembled to make logic gates. I already knew this, but never learned how logic gates could then be assembled to make latches to store single “bits” of data. How latches could be banked together (not always banks of 8 early on, either), how binary maths could then be applied to multiple banks of latches. Once you have this “computer memory”, you use some of that memory for data, some of it for storing programming instructions, some of it as an “instruction pointer” moved on by a “clock”… and so on and so on.
Do I need to know this to add an image tag to a webpage? No, but I find it fascinating as a subject in it’s own right, and programming is such a broad profession that this is almost a straw-man argument, because that’s not all everyone is doing.
Is it an “old person’s” game?
No, not at all. It’s not a matter of age, it’s a matter of how interested one is in the tools, and how that interest manifests itself. In Zen and the Art of Motorcycle Maintenance, the author categorises people as having either a “classical” or “romantic” mindset.
The “classical” way of thinking includes really understanding your machine. Getting enjoyment not only from using it, but from knowing how it works and even being able to perform maintenance on it for yourself.
The “romantic” mindset, on the other hand, treats the machine at face value. As an appliance. They don’t understand it well enough to maintain it themselves, but they use (and possibly enjoy) it for it’s intended purpose, and don’t even care that they couldn’t repair it for themselves.
In reality I believe this is likely correct, but with two additions:
- It depends on the subject. Someone might have a “classical” attitude towards old cars, and a “romantic” attitude towards modern cars.
- It’s probably not really mutually exclusive categories (life rarely works that way). In truth it’s more likely a sliding scale. One can have a classical attitude towards computers that only goes so far, and they’re happy to rely on the fact that every layer below those they care about works, without needing to know it for themselves.