Developers need to understand how the layer underneath their code works. If you're writing Java, you should understand the JVM. If you're writing C, you should understand the compiler.
Yes, that's why I said "layer beneath" and not "layerS beneath"