Windows is fucking awful from a programmers perspective. The biggest thing i see is there is no standard way to build low-level software and distrubute this properly. When you come from apt-get/yum you are incredibly spoiled in how easy to is to get software and have lib’s and includes all maintained in their system wide folders respectively. One windows, have you ever tried to compile apache on windows? I am doing this at the moment and its driving me insane for over a week its been a struggle. There is no standardization on how to build software no configuration system. No decent way to install libs or includes in a standard way. You have to do everythin in an ad-hoc way and point to 10 different include location and lib locations. You have to spend so much time just making sure you get your env setup right that its just a nightmare.
In my opinion if windows doing really make a decent nmake/configure setup like unix their system level tools are going to deteriorate more and more. How can you possibly maintain releases of any system level software for each new MSVC release without ripping your hair out.
Most people say FUCK IT and use vc6 and msdev. Which is ancient these days. They probably employ your generic graduate students and let them loose and realise there is no backward compatibility from any version of VC2003+ and making developers lives a nightmare. Pushing developers off maintain their software on windows and only occasionally testing bits and pieces of it. So in the end people end up re-inventing the well in all of their applications when they develop anything other than java/python or .NET on windows since adding dependencies is such a nightmare to handle and distribute. The ideal solution for windows is to simply copy what mac do via xcode and you have your nice little GUI setup in VC and then you can install the system wide tools and have that standardized and have frameworks you point do automatically from standard install locations from xcode. So distributing libs and includes you could have installers to install there and applications can pick them up automatically removing the need for all the hand configuration for nmake you are required to do as well as not needing to compile dependencies all the time.