They are essential to programming in the real world, not an academic ivory tower.
IDE quirks, platform incompatibilities, and arcane build systems are "essential"? I'm sorry, but I'm quite sure I could live just fine without them. That's like saying that complicated tax code is "essential" for running a country. In reality, it's most likely much more essential for accountant job security.