"In this blog post (and the one that will follow) we'd like to introduce a few of the broad reaching experience improvements that we've delivered in Visual Studio 11. We've worked hard on them over the last two years and believe that they will significantly improve the experience that you will have with Visual Studio."

"Some people consider Testing, collaboration, version management, etc. to be fundamental in the software development cycle.

And professionals are perfectly capable of using discrete tools for these purposes. "

Capable of, yes - but that doesn't mean they *want* to use separate tools. There are a lot of advantages in having version control integrated with your code editor - annotated views to show recent changes within a file, syntax-aware tools for resolving merge conflicts, etc.

But take into account that I was/am using Visual Studio 2008, Professional edition. I don't know how much better is the Ultimate edition.

I also had to program for BizTalk Server 2009. I am honestly shocked that Microsoft gets away with selling that piece of software for huge amounts of money, while the Visual Studio support is very very primitive, and f*ing buggy. Yes, there are a couple of hotfixes to lessen the pain, but they never went to the trouble of releasing a service pack. Also, install on 64-bit Windows server is not smooth either. For install on 64-bit, one has to fetch hotfixes too. Amazing.

Finally, Team Foundation Server... if you consider the version control part of TFS top notch, then either you don't know any better, you never worked on a big team (always needing to lock source files ?!?), or well.. you must use it in a different way than what I've seen. We use subversion in our company and we need to install a third-party plugin for support inside Visual Studio. It also does not seem to come with built-in support for git. You take any decent Java IDE, and it'll come with support for several version control systems out of the box.

But yeah... if you chose Microsoft, you have to follow the microsoft way for everything.

But honestly... Visual Studio a top notch quality IDE? Come on, ReSharper from JetBrains would not be so successfull if that were the case. Did you ever use any other IDEs than Visual Studio?

Btw, take SQL Server Management Studio from Microsoft.. you also think that is a top notch environment to write SQL? Honestly, try to install the SQL Prompt plugin from Red Gate and experience decent SQL completion.

I really think you were not exposed to other tools than the Microsoft ones. Microsoft's development environments may seem top notch when you're coming from compiling on the commandline, and using notepad. But not anymore when you've opened your eyes to better tools.

Btw... MSBuild.. Microsoft's build tool. It seems heavily inspired by Ant, which was Java's favorite build tool up to several years ago. The Java world moved on to Maven. The advantage of Maven is that it also does dependency management. Microsoft development environments do not come out of the box with dependency management. Microsoft supports the open source project NuGet which is a (primitive) attempt at doing dependency management for .NET. We switched to another open source project "OpenWrap" for dependency management. It is not as popular as NuGet, because it's not based on the "click-click-click" mentality of the standard Microsoft developer, but it is a lot more powerful and has a lot more possibilities towards the future. (It also supports run-time dependency management.) NuGet is basically an addon to fetch a dependency from a server on the internet.

So, please, please, don't tell me that Microsoft development environments are "top notch". Check out the world, and open your eyes to non-Microsoft products.

Pfffffft - a hardcore Java EE dev bagging on what VS "lacks". That's a good one.

I've developed in both worlds, and I can tell you, developing in the MS/VS/.Net world is an infinitely more pleasant and productive experience. The JEE world is just loaded with unnecessary bloat, bugginess, fragmentation, and complexity, with inferior tools (tools that seem great at first, until you fall into their endless pitfalls).

Eclipse? Nice IDE circa 2001, Nowadays, not so much. Bloated as hell, buggy as hell, 90% of the plugins suck, and it's way overcomplicated to do what should be simple, routine tasks. Netbeans is really nice, but most of the Java community turns its nose up at it because, well, you wouldn't want things to be too easy? Intellij is really good, but lacks in automation of certain things, and again, most just "default" to Eclipse.

Maven? Love it's dependency management. Don't love it so much when it tries to download dependencies it doesn't really need every time you do a build, and the builds take an eternity, or they fail. And there are tons of rants/blogs out there lamenting about the ridiculous pitfalls of Maven.

Let's not even talk about the endless web frameworks (all of which are great for certain things, suck for other things, have a lot of overlap/redundancy, and all are completely incompatible), or the various app servers (same thing as with web frameworks). By contrast ASP.Net (and ASP.Net MVC) isn't all that and bag of chips, but for the most part, it gets the job done, and it's pretty easy to work with, and you don't have to constantly relearn for the next "latest and greatest open source web framework).

And anecdotal evidence (for whatever that's worth, probably not much), shows over and over (yes I read plenty of blogs/rants for the fun of it) shows that, in general, what would take a .Net, PHP, Ruby, Python Dev about two days to accomplish, will take a JEE dev about two weeks or more to get done, because they have so much more shit to deal with. Sometimes, due to the scale and needs of that app, all that JEE shit is necessary (and the other stuff might fall short). But those are the minority of the cases. The trouble with the JEE world is that everything takes the stance of trying to solve the biggest and most complex of problems, and then applies that to everything, regardless of the application/problem domain. Thus, all the unnecessary complexity.

Personally, I couldn't care less platform/language/tools/IDE religious wars. For me, it's all good and interesting. But as I've gotten older, I've more and more wanted to steer away from the Java world, because developing in that world just isn't fun. It's painful. And it's elitist. I just want to get shit done and go home at night. True, Java devs tend to top the pay scale, but not by much. But they deserve it, because they have to work so much harder, longer, and deal with so much more pain. Hell, they deserve to be paid twice as much as everyone else, but they only get paid maybe 5% to 10% more (at best) more than equivalent .Net/PHP/Ruby/Python/C++ devs. ;-)