As a daily user of Visual Studio from its inception, and of Visual C++ and Visual InterDev before that, I have been following the evolution of Microsoft‘s (NASDAQ: MSFT) development environment quite closely. In the Visual Studio 2010 IDE, Microsoft has taken several large steps away from its legacy code. That was a gutsy and potentially risky move on the part of the Visual Studio team, but one that worked out well and will lay the foundation for future product growth.
Visual Studio 2010 is a major upgrade in functionality and capability from its predecessor. It includes some major rewriting of core features, as well as many new features. Developers, architects, and testers will all find areas where the new version makes their jobs easier. Despite the higher pricing for this version, most serious Microsoft-oriented shops will upgrade to Visual Studio 2010 and never look back.
Raising the bar for IDEs
The most obvious large step is revamping the core editing and designer views to use the Windows Presentation Foundation (WPF). I covered this and the related improvements in the UI and debugger in my review of Visual Studio 2010 Beta 1. Initially there were some performance penalties associated with this, but now almost everything I do in the Visual Studio 2010 IDE happens faster than it would in Visual Studio 2008, even columnar text selection. I particularly like the navigation improvements in the code editor. Both the “Navigate to” and “Call Hierarchy” features have proven invaluable to me recently as I learned a large C++ code base.
Another obvious large step is to revamp IntelliSense and start to support Test-Driven Development (TDD). As I discussed in my reviews of Visual Studio 2010 Beta 1 and Visual Studio 2010 Beta 2, IntelliSense has been redesigned, the easily corrupted IntelliSense .NCB file has been eliminated, and the whole system has become more sensible about offering to do what you might actually want instead of cavalierly completing your typing with irrelevancies. At this point, Visual Studio 2010 is usable for test-driven development (TDD), although I wouldn’t yet call it a real TDD-oriented system. For me, that would require another view of a project that emphasized a Red, Green, Refactor development cycle.
A third obvious large step is targeting and supporting multiple versions of the .Net Framework (2.0 through 4.0) in an intelligent way. A fourth is the enhanced debugging capabilities, both in debugging threaded applications and in historical debugging for managed assemblies. There are greatly enhanced sets of tools for architects and testers, such as Sequence Diagrams, Dependency Graphs (for managed assemblies), better bug reporting, and reproducibility. Then there is the new, non-brain-damaged help engine; support for Azure and Silverlight; support for Windows 7, SharePoint 2010, and Office 2010; functional programming with F#; and so on. Silverlight is targeted by its associated .Net version, but Visual Studio 2010 actually supports Silverlight versions 1 through 4.
I mentioned some of the improvements to Team Foundation Server (TFS) when I discussed Beta 2. One thing I didn’t mention that deserves some attention is the new ability to gate check-ins for selected developers. Gated check-ins were one of the key features Linus Torvalds wanted for Git that he didn’t have in Subversion. If you think about an open source project like the Linux kernel, you really don’t want inexperienced developers checking changes into the trunk unless all the unit tests have passed and a senior developer has reviewed the code. TFS can do that now (not that Linus would ever consider using it).
Since Beta 2, .Net Framework 4.0 has picked up touch support in WPF. Visual Studio 2010 proper sports a cleaner start page, adds SQL Azure support, and behaves better when running in virtualized environments. The Visual Studio 2010 installer has been improved to the point where my install of the released bits didn’t require any reboots at all. The bugs and performance issues that I and others reported in the release candidate have all been fixed.
Visual Studio 2010 vs. Visual Studio 2008
If you look at all the enhancements to Visual Studio 2010 compared to Visual Studio 2008 SP1, it’s clear that the product has grown quite a bit in terms of capabilities, with lesser gains in performance and ease of development. And yet if you compare today’s scores with the ones I gave to Visual Studio 2008 SP1 in August 2008, you’ll find they’re identical.
Times have changed, as have the scales we use for scores. I gave Visual Studio 2008 SP1 a 10 for capability; in its time, compared to its competition, it deserved it. Visual Studio 2010 gets the same 10 rating for capability now, but if I had to rerate Visual Studio 2008, it would now get about an 8.5.
* Cleaner and more capable code editing and design views
* Improved performance
* Smart targeting of multiple .Net Framework versions
* Improved code navigation (without needing compilation)
* Better support for test-driven development
* Enhanced debugging for threads and historical debugging for managed code
* Support for Azure cloud, SharePoint 2010 sites, Silverlight RIAs, and Office 2010
* Improved capabilities for architects and testers
* Includes F# (functional programming) and supports dynamic languages
* Improved team management and code check-in controls
Similarly, ease of development in Visual Studio 2010 rates a 9 out of 10 — because, after all, it doesn’t yet write the code for you. Visual Studio 2008 SP1 got the same 9 in its time, but now it would get an 8. How could we put up with the old IntelliSense? After using the new IntelliSense, I hate to go back to Visual Studio 2008.
There’s more documentation in Visual Studio 2010, but it’s describing more product. The new help engine is much better than the old one, but that just makes the old one look bad in retrospect. I hate going back and watching the local search grind on the hard disk for several minutes at a time. Now that I’ve used the new help, the old help would only get a 7.5.
Visual Studio 2010 performance is only slightly better than Visual Studio 2008 performance; the old one was about a 9.1, and the new one is a 9.3. With our convention that component scores must be integers, that difference doesn’t show up in the scorecard.
The change in value is a different issue. Visual Studio 2010 has greatly expanded capabilities and a commensurate increase in price. Some of you will gasp at the new pricing. If you or your management falls among this group, try thinking about what your time is worth to your employer — and don’t forget to add health care and overhead costs. If your budget won’t cover the upgrade you want, perhaps you’ll have to settle for the upgrade you need, which might mean dropping down to a less expensive edition. But a calculation of the ROI for good development tools like Visual Studio 2010 often comes back with a justification for much higher prices than you’re emotionally willing to pay.
My company has already decided to upgrade to Visual Studio 2010. We’ll keep shipping our product compiled with an older version of Visual Studio until we come out with our own next major product version or we need a compelling feature we can only get from the new frameworks and libraries. But we’ll still have the benefits of using Visual Studio 2010 for development. Most likely, your company will want to do the same.