I've been a Microsoft developer since QuickBasic. I program mostly in C# now. I love ASP.NET MVC. I love the new features in Visual Studio 2012. I love the extensions to C#. I work full time at an investment bank and do side consulting for creating highly functional websites. I see pros and cons of every framework and language but .NET and C# are the best for me right now.
There's a lot of negativity here and frankly I was a little afraid to post anything positive.
I'm still a student. I started with Java, but found out about C# after programming Java for 2 years. I'm so glad I did. C# is (in my opinion) much better than Java, it has loads of very useful features (LINQ, very easy async/parallellization, delegates, lambdas, a good UI framework) and Visual Studio is a much better IDE than Eclipse and NetBeans will ever be.
I mainly used C# for some client-side stuff, but then I found out about ASP.NET MVC, which is extremely easy to use and offers a lot of flexibility. It's also nice that they made it open source (just like Entity Framework, which is brilliant too).
Later on I came into contact with Azure. I didn't even know about Azure untill I saw Scott Guthrie's presentation about it on TechDays. I have to say I'm absolutely in love with Azure. Azure has seen phenomenal improvements over the last few years. In my opinion Azure has surpassed Amazon's cloud offering by far. They offer more features (imho especially the PaaS is awesome, their services make sure you don't have to deal with sharing stuff between multiple servers), offer both Windows and Linux servers (for very good prices), it's really fast and it's also cheap (prices are the same as Amazon's, plus they offer huge free trials). Oh, and their libraries for Azure are open source too.
There is no denying that Microsoft created a LOT of awesome stuff the last few years... They really changed into an open company.
They were forced to change into an open company in regard to development tools because of competition. And that's a great thing!
I think the programming world would be worse off without the spectrum of options available to programmers today. As it stands now, no development company can rest on its laurels and is forced to innovate and adapt.
What non-Microsoft technologies have you used? I say that because until I started playing with Perl, Java and, later (as in 2001), Python, I never really wanted to go back to MS stuff.
I used Visual Basic from version 2 to 6 (I was the first VB MCP certified in Brazil), VBScript (and ASP) for several significant web applications (mostly e-commerce), VC/C++ 6 (for the Windows CE-based electronic voting system, in 2002) and Visual Basic .NET and C# for some desktop and ASP.NET applications.
I haven't played with ASP.NET MVC and other recent Microsoft technologies.
You know nothing of Microsoft technologies that have been used for the last half decade and more then.
I have an MCSD certification in VB6 but literally nothing of that helps with their modern dev environments. In fact knowing VB6 hurt the process of learning the new stuff.
While I don't think my C++ or C# is an example of modern and idiomatic Windows programming, I wouldn't say I know "nothing of Microsoft technologies that have been used for the last half decade and more". I sure haven't used them, but that doesn't mean I haven't read about them.
You mentioned you used "Assembly, Turbo-C, Turbo-Pascal, Borland C++, Java, Javascript, Perl and many, many others", and, apart from JavaScript, none of them is closely associated with modern non-Microsoft development. I initially questioned you about it because, like myself, lack of knowledge of other options may hinder your ability to clearly assess a given technology's advantages.
>You mentioned you used "Assembly, Turbo-C, Turbo-Pascal, Borland C++, Java, Javascript, Perl and many, many others", and, apart from JavaScript, none of them is closely associated with modern non-Microsoft development.
Yes, but the difference is I'm not criticizing modern non-Microsoft development.
Sure. But when we say X is great it is somewhat implied it's great compared to non-X similar tools. I believe Microsoft is offering decent tools compared to their more direct competition, but I'm yet to see something that makes me curious enough to really try them. I'm exceedingly happy with my current Python based stacks and curious about Go. I'd love to find a good reason to dig deeper into Ruby and Clojure, but, when it comes to Microsoft or C#, the move doesn't seem worth it. Not only because of the technology, but you have to change the whole stack, from server OS to developer desktop and deal with their idiosyncrasies.
I don't like Microsoft, but that doesn't make me wrong or willing to misrepresent facts.
As you can see from my answer, I've used Microsoft technology extensively in the 90's. My move to Unix environments happened in the mid-00's (until then, I still used Windows on my desktop)
There's a lot of negativity here and frankly I was a little afraid to post anything positive.