Other People's Code is the bane of the programmer.
I used to write code for embedded, real-time systems like cockpit displays and flight simulators. Basically, I wrote code on the bare silicon, with the occasional API for an A/D converter or graphics chip. Other than that, it was me and the compiler and the hardware. And the compiler was usually the biggest problem. Compilers for embedded systems are notoriously buggy. The audience is less than a thousandth the size of mainstream software, so everybody's a beta tester.
Java is the most miraculous environment for code reuse. I find that my code makes up a small fraction of the actual software in any application. You've got an operating system, of course, a JVM, a container, and loads of jars. This is at best a double-edged sword. We are suddenly able to write much higher-level code, since we're building on top of all these other pieces of code. This is wonderful. But the pain of trying to learn these new libraries and get them to work together is almost worse than writing it yourself.