Microsoft's enterprise software is really, really good. Active Directory, SQL Server, Azure, C# and Visual Studio are all amazing. They also make tons of money, and MS is really good at managing them as cash cows over time. Not coincidentally, they just put the Cloud and Enterprise guy in charge of the company.
I keep hearing this, but it's just such a foreign concept to me. The idea of - for lack of a better term - surrendering my entire development stack to a single company rings just about every alarm bell in my head. What happens when (say) .NET isn't the best tool for a particular job? Just close your eyes and use the inferior tool anyway? Or use the right tool and just throw the hard-won Microsoft ecosystem synergies…
What made it worse was that prior to this I'd never really programmed anything for Windows.
However, as I've been using it more and more, I'm beginning to see why it is the way it is, how all this abstraction and scaffolding comes together to make programming easier.
Seriously, having everything a developer could ever want accessible through one interface has some nice upsides, and I now completely see how Microsoft makes so much money off this product.
Also, I think one of the things that makes. NET so attractive is that it seems to have features or libraries for everything and the kitchen sink. C# has excellent support for "business-y" things, to a degree that makes worrying about it not a problem for many companies.