I know Slashdot hive mind thinks M$ is evil (i think it too), but even Microsoft knows it's not about the OS, it's about developer tools (developers, developers, developers).
Unix API is nice. Sockets? include sys/socket.h plus a couple of other headers and you are fine. Graphics? include opengl/gl*.h. But how about other things? Playing sound? Choose between OSS, ALSA, JACK or dozens of sound servers. KDE x GNOME war? Both lost.
I love linux, but it's truly is a PITA using and programming for it's desktop environment.