I think Visual Studio .NET is a pretty darn good IDE. Don't get me wrong, it has it's quirks (anyone else have to use TaskManager to 'Switch To' VS.NET when it becomes "stuck" in the task bar?) and idiosynchracies that I could do without. All in all, though, it has a lot of great features and is a very productive environment.
I really like Windows Server 2003 and IIS6. Windows 2003 seems to be a "lessons learned" operating system with a bunch of nice new features to boot. IIS 6 has a well architected process model with nice XML configuration and the whole nine yards.
So, they've got the development environment and the platform down pretty well. They are missing the boat BIGTIME though when it comes to rounding out the rest of the development lifecycle. Here are my beefs:
Now, I know about NAnt, NUnit, Draco.NET, CruiseControl, and the various source control packages on the market. Some of them I use and some I don't. The problem with most of the open source tools is that there is generally little documentation (I don't mean docs for the API; I mean usage documentation) and most Microsoft developers don't have a clue about open source tools (what they are, where you can get them, etc.). Keep in mind that there are hundreds of thousands of applications being written by government agencies, small and medium private companies, and many more organizations who don't have the staff or the expertise to glue a bunch of open source packages into a cohesive process for developing, testing, and controling software.
I work with a lot of software development shops (both in training and consulting) and I can say with 110% confidence that these issues need to be addressed by Microsoft for two reasons:
Whew, I feel better now.