I wonder, if when it comes to technical concepts like OS design, whether empathy would imply being able to understand an OS designer? This is the part that I'm unsure about the word empathy. If you're dealing with logical and rigid structures, does empathy imply you understand them as well? Without that, you won't be able to get inside the mind of the person coding it.

Definitely though, empathy is certainly not enough to be a good developer. It cannot make up for a lack of other skills.

I worked on RTOS and driver code in college for a robotics competition. In the 3 or 4 years I did that, I noticed one of the biggest driver for how long your code survives in the organization is how easily other people can use it. "Use" has a lot of different meanings depending on the organization, and for my robotics team, it meant "compile", "test", "extend", "modify", "understand", and "maintain" in various proportions to different people. Any combination of the above would require some exploring into other people's heads. How will the way the API is structured drive people to use the code? How will the way the documentation is written drive people's understanding of the code? How will the implementation drive people to maintain the code? So it's just like any other software, except an OS developer's user base is a very specific group of people. Things like well written documentation and consistent, understandable style are just as important as in any other software project.