Many times I’ve been asked: “Why are you working on that? Is it for work?”
referring to my tinkerings with kernel internals. “No, it’s not for work,” I
reply, “I’m just interested in it.”
Other times this goes a bit further: “That looks horrible. Why would anyone want
to work in C and assembler? No-one needs to understand that any more.” I’ll
reply that I think it’s important to understand that which you rely on.
Then I’ll be told: “You don’t need to understand the internal combustion engine
to drive a car.” They’re right, of course, but there is still value in
understanding how an internal combustion engine works.
Then maybe someone will be telling me about the wonderful abstraction provided
by the Node.js event loop, or the concurrency benefits of using a functional
language. These things scare me, because I know that they eventually have to
play ball with the real and terrifying world of the kernel and the processor,
and only a fraction of a percentage of programmers have any interest in how
either of those things run their code.