Visual Studio has been the gold standard for the integrated development environment (IDE) used to develop software for many years. Other development environments such as Eclipse have made great gains over the years as well, but Microsoft has been relentless since 2008 in producing major releases every two years that keep improving developer productivity.
In the final analysis, developer productivity is the bottom line as it has the biggest effect on the bottom line of the companies that employ and hire the developers who use it.
To that end, there are many enhancements that will make users of this latest version of Visual Studio even more productive. But the first obstacle to realizing this promise of increased productivity is making sense of the various editions being offered to ensure you have the right one. It seems as if Microsoft reinvents the editions with every new version, but this time around the changes are minor when it comes to the edition choices for Visual Studio 2012 versus the Visual Studio 2010 editions. This time around, the first change you might notice is that there is a professional edition that does not include MSDN, which takes the place of Visual Studio 2010 Pro with MSDN Essentials edition. There have also been expansions such as the Lab Management features in Visual Studio Premium 2012, while with 2010, these capabilities were only available with Visual Studio Ultimate and Test Professional.
Microsoft has resisted converting the Visual Studio 2012 user interface into one that is ribbon-based, but it has not left it unchanged. The first thing I noticed when I opened the new Visual Studio for the first time is that all of the menus are in all-capital letters. This is certainly a minor thing, but it feels like those menus are screaming at me, thanks in large part to my spending too much time online I suppose. I assume the average developer will have the same impression, as I have heard others make the same observation.
Overall, having the menu in all caps does differentiate it from the toolbar text, which is helpful. The default colors are very dark as well, but once the code windows are up, that does not make much difference. These changes are window dressing, of course, compared to new features that make it much more productive to develop on multiple-monitor systems. A major new feature is the ability to now not only detach code windows, but to also float entire sets of tabs and move them to another screen. This is made possible with the Tab Group capability that supports on-the-fly creation of groupings of files that can then be floated.
Windows 8-style applications
Over the last year, quite a bit has been written about Windows 8-style application development, formerly known as Metro. Now we get to see if the product will live up to the promise and, more importantly, if the demand lives up to the potential. I see Windows 8-style applications as the logical evolution for the XAML languages from WPF and Silverlight. This is disruptive, but clients are looking for a unified, touch-capable experience, and old-style Windows applications would have needed to be reinvented without stranding every Windows developer and without losing the power of the desktop altogether.
Most enterprise customers I have visited are just getting Windows 7 deployed in large numbers, and would not be driving fast to Windows 8 even if it were tailored to their needs in every way. That meant that Microsoft could take the opportunity to allow the disruption at a time when it hurt enterprises the least, namely when they are playing catch-up with the client, and most enterprise customers are quite happy with Windows 7 and not in a rush to move beyond it. This appears to be an ideal time to grab for the mobile space, which is the biggest jewel missing from the Microsoft crown.
With the new announcement for Windows Phone 8, the pieces are coming together for a bold plan for Microsoft to come from behind and compete with Android and Apple for mobile consumer hearts and minds very aggressively. As a developer, I am excited about the prospect of using the new tools in Visual Studio 2012 to build my apps. I can then post them to the Microsoft App Store where every single Windows 8 computer and tablet, as well as all future Windows Phone 8 handsets, can buy it.
Chris Sells, vice president of developer tools at Telerik, said, “Windows 8 represents a complete rebooting of the developer ecosystem for client-side app developers in a way that Microsoft has not done since Windows 95.” He went on to assert, “With the Windows Store, they are planning to deliver 400 million pairs of eyeballs running Windows 8 to a store that will grow to rival their competitors.”
Supporting this view, Miljan Braticevic, president and CEO of ComponentArt, stated, “We believe that Windows 8 will quickly gain traction as a premium enterprise mobile computing platform.” There are still hurdles, but it is a grand vision, and it makes some of the things Microsoft has been doing over the last two years make more sense even if their failure to fill the rest of us in sooner does not. Best of all, it all starts with Visual Studio 2012.
The simplest definition for a Windows 8-style application is one that targets the new WinRT runtime and follows the rules of the road as defined by Microsoft at its first BUILD Conference in September 2011. The first thing you notice with Windows 8-style applications that is out of the norm for applications traditionally built with Visual Studio is that they are touch-centric interfaces. Even beyond touch interfaces, there are a ton of great features that will really improve the user experience for applications written in this style—including the await and async keywords—and all that goes with it.
There is much-improved C++ support, making it a first-class participant in the productivity gains that C# and VB.NET have enjoyed over the years. There is also HTML5 and JavaScript application support in Visual Studio 2012, rounding out the promises Microsoft made before the first BUILD conference. As we know now, the fear that one or both of these options were going to be replacing C# and VB.NET is unfounded. They are just additional options with strengths of their own that make the job of building quality enterprise code easier.
Backward compatible… mostly
While frequent releases of Visual Studio are overall a good thing, they can lead to a particularly bothersome problem with versioning of project files. In past versions, opening and saving a project in the latest version of Visual Studio poisoned it for use in older versions. This is particularly annoying during the transition of teams to the new tool set, but now 2012 projects can be opened in Visual Studio 2010 without any issues. With this good is a bit of potential bad related to versioning of .NET Frameworks. Visual Studio 2012 comes with .NET Framework 4.5, which is an upgrade from version 4.0. Technically, these two versions are not side-by-side capable, but after upgrading to version 4.5, you may still target both versions on the same system.
In most cases, the upgrade from 4.0 to 4.5 will not cause problems, but there are circumstances (such as relying on reflection, for those of us who wrote code with interim builds and beta versions of Visual Studio) where there could be issues due to these changes. Microsoft’s Scott Hanselman pointed out in his blog that the relationship between .NET 4.0 and 4.5 is virtually the same that worked well for .NET 2.0 with regard to .NET 3.0 and .NET 3.5. Most assume that changes did not occur to the base class libraries of .NET 2.0 as new features were added with the latter two iterations, but this is not 100% accurate, and the same is expected with the in-place upgrade to .NET 4.5.
LightSwitch now ships as part of Visual Studio instead of as a bolted-on add-in, which it was before. This is more a testament to the coming of age for LightSwitch, though I do expect it will enjoy more adoption now that it has been included in the package.
Enterprise developers that are adept at manipulating their own databases will really appreciate the new SQL Object Explorer. It is more like SQL Server Management Studio, including allowing you to drill down to the column level to see data types and keys.
As projects are developed, code is often borrowed from one place in the project to get a head start on another section before refactoring is done. If the code has changed somewhat after the borrowing, it is difficult to connect the clones and clean them up. This is where Code Clone Detection comes to the rescue: It finds code fragments that are similar without them having be exactly the same.
Microsoft developer technologies are powering high-traffic sites, not all of them publicly available. To help those developing and deploying these systems, Visual Studio 2012 includes two particular features that will be helpful: A configuration setting to support high-density Web hosting that will help the garbage collection perform better based on expected workload; and the inclusion of IIS Express for testing Web projects. IIS Express replaces the internal Web server built into past versions of Visual Studio (codenamed Cassini), and will eliminate a great many compatibility issues. The first version of Visual Studio for .NET Development released over a decade ago introduced the creation of Web services as a core new feature. This latest iteration introduces the ASP.NET Web API, which builds on the improvements made in the space since that first release. With the ASP.NET Web API, developers can negotiate with clients, including mobile devices, through the application of RESTful services.
Not every change to Visual Studio 2012 has been additive. Notably, macros are no longer available. The justifications for removing macros make sense, but are still troubling to those that grew to depend on them. The expected path to replacing the missing capability is to build your own Visual Studio plug-in. The result is less code for the Visual Studio team to maintain, reputably a faster UI thanks to less old code and elimination of the limits of the old macro system, including its ties to Visual Basic. Another alternative to writing a plug-in is resorting to PowerShell, which seems to be an overall trend for Microsoft.
Evolving a successful product is a dangerous undertaking. Microsoft has learned to do it by conducting constant market research and by paying attention to what third parties are successfully delivering to the developer audience.
Based on the products coming from Microsoft’s partners, even hard things are getting pretty easy to build if you have the right vision. Thanks to the enhancements to the technologies that let us integrate products via Web services, it is easier than ever to pick the right solution to each part of the problem and then stitch it all together efficiently and securely. To get the most out of the tooling, development teams should make an effort to not only be familiar with the features and capabilities of new versions of Visual Studio, but they should also watch the major tool providers to make sure they are maximizing their efforts in these days where we are all required to get more for less.