Reflections on a Decade of Visual Studio (Cont.)
Whidbey and the Beginning of “Team”
Visual Studio 2005, codenamed Whidbey (more references to places in Washington State) was released in October of 2005 and was the first version where the word “Team” applied to Visual Studio. Not only did Visual Studio 2005 offer features like new project types, Cassini, and more 64-bit support, Microsoft updated the Office development tooling with .NET 2.0. Visual Studio licensing also got a bit more complicated due to the introduction of a few more SKUs like Visual Studio Team Edition for Software Architects, Software Developers and Software Testers. No one will argue that all of the features shipped as part of Visual Studio for Software Architects were a flop. However, the other editions provided some real value to developer productivity including static and dynamic code analysis, unit testing, code coverage analysis, code profiling (as part of the Developer edition) and load testing, manual testing, and test case management (as part of the Testing edition).
Of course, the 2005 release was much more than just a tool release. .NET 2.0 included enhancements such as generics, ASP.NET 2.0, Cassini (a local Web server that was separate from IIS), partial classes, anonymous methods, and data tables. Obviously in order to use a more expressive framework, the tools needed to be equally expressive.
The really exciting features, in my opinion, were the ones included in Team Foundation Server, which was an optional server-based component to Visual Studio. This was the new “top secret” project I had heard about in Redmond! Team Foundation Server provided a new source control repository (villagers everywhere were dancing in the streets), work item management (allowing teams to track just about anything), an automated build engine, as well as an extremely rich reporting and analytics engine built on SQL Analytics and SQL Report Services. Reports such as the Standish Chaos report convinced me that tooling wasn’t the secret to successful projects, rather, it was how teams work together that was the secret sauce to project success. I believed that tools such as Team Foundation Server help provide the fabric needed to facilitate great team interaction. This was why I decided to jump on the Team Foundation Server bandwagon with both feet, drink the cool-aid, swallow the pill, and get the implant. I wrote books, articles, spoke at conferences, and worked with customers to adopt all of this new technology all around the world. I knew in my heart that this new platform was going to make it easier for teams to develop and implement better processes that help more predictably release software... and it did - sort of. I found, much to my dismay, that most teams weren’t ready for all of the new quality and team tooling, that the adoption of this new technology could do more harm than good for those who did not fundamentally understand why these tools mattered or did not have a healthy set of software engineering practice and principles to begin with.
In November of 2007, Microsoft released Visual Studio 2008 and Visual Studio Team System 2008 to MSDN subscribers along with .NET 3.5 (.NET 3.0 was released in 2006 introducing Windows Presentation Foundation, Windows Communication Foundation, Windows Workflow Foundation, and Windows CardSpace). From our perspective, Visual Studio 2008 was truly an incremental release, providing incremental improvements to the .NET Framework as well as in tooling. Microsoft also started to incorporate some additional roles into the Team System lineup, specifically for those who develop against databases, adding support for database versioning, sample data generation, and database unit testing, while incrementally providing support for the growing .NET Framework.
In addition to the core Visual Studio functionality, we also started to witness a greater amount of “out of band” releases of software that provided incremental value to the platform, specifically around tools like Entity Framework and Unity Application Block, which was a lightweight, extensible dependency injection container that helped to facilitate building loosely coupled applications. In fact, we were quite pleasantly surprised by the increased emphasis placed on design patterns and design techniques being expressed in separate downloads such as ASP.NET MVC, which provided a Model-View-Controller framework on top of the existing ASP.NET 3.5 runtime.
There was another revolution cooking as well; the User Experience revolution. Windows Presentation Framework was growing in popularity and with it, new problems, such as how to involve graphic designers in the software development processes. Of course, by now Silverlight was steadily growing in popularity, however, it was far from applicable for building line-of-business applications. It was clear by how often Microsoft was updating Silverlight (a new version every year) that Silverlight was going to quickly become the best choice for creating multi-platform rich Internet user applications.
2010 - The Odyssey Continues
Is it just me, or did 2010 arrive really quickly? A decade just went by in a blink of an eye. Arthur C. Clarke would not be impressed with our collective achievements. It turns out, however, that 2010 is a landmark year for Microsoft with new releases of Visual Studio, Office and SharePoint, as well as a new mobile platform.
It turns out, however, that 2010 is a landmark year for Microsoft.
From a Visual Studio perspective, in past versions it was possible for one person to maintain expert-level knowledge of the entire suite of tools and functionality. Visual Studio 2010 is the release where this will end. Visual Studio 2010 is a huge release, with lots of new tooling, especially for software testers. In fact, Visual Studio 2010 Ultimate and Test Professional editions come with some very powerful testing features such as test plan management, the ability to record and replay manual test scripts, and test lab management. Ultimate contains one more really important feature called historical debugging, which allows developers to have much greater insight into the state of software when bugs are found and submitted. Visual Studio 2010 Ultimate also contains some fully integrated modeling tools to help define requirements as well as to visualize implementations. Visual Studio 2010 also received more tooling to better support a broader range of solution types such as Silverlight 4 and SharePoint 2010 development, just to name a few. Team Foundation Server also got a facelift, giving us more ways to define work items and track and report on our work. In addition, we have much needed updates to version control, automated builds, and reporting.
What Does This Mean?
Every time we get new tools, we should get excited as they always provide us with more opportunities. Will the latest version of Visual Studio help us be more successful at building software? Will a new band saw help a carpenter build amazing furniture? We all know that there is still a lot more to building software than the tools we are using.
Visual Studio has kept up with our changing world (Figure 2). As developers on the Microsoft platform using Microsoft tools, we’ve never had it so good with regards to tooling and our ability to express ourselves through software. With all of this good, there is some bad as over the years the framework has become quite complex, from the countless ways of accessing data and rendering it on a user’s monitor to the plethora of new design patterns and must have community libraries; StructureMap, AutoMapper, FubuMvc, Castle.Windsor, MEF, StoryTeller, Albacore, and TopShelf to name a few. Keeping up with the pace of change is tough, and we’re relying more and more on tooling to introduce levels of abstraction in our world so we can be more productive even when complexity increases the fight against us.
Figure 2: The progress of Visual Studio as the primary tool for developers building on the Microsoft platform, has been staggering over the last decade.
The underlying pattern I continue to observe after experiencing firsthand the past decade of Visual Studio is that tools without people-centric practices, processes, and principles can be dangerous. The Microsoft Regional Director program encourages RDs to make predictions about future of software development and IT in general, so here is mine. Tools that go further and embrace the entire flow of software construction (from inception to sunset) from the perspective of people and not systems will be the ones that will truly make an impact. This is clearly something I would bet a company on. With Visual Studio 2010, Microsoft is one step closer to this reality, perhaps even one day helping to inverting Standish’s Chaos report to claim that “most software projects succeed.”
Visual Studio .NET Allowed Microsoft to Start Playing Catch-up
When .NET was first announced, it was far from a Java killer. The Java community was quite mature in virtually every aspect of software engineering. Back then, the industry still only considered Enterprise Java platforms capable of delivering mission critical software.
Visual Studio 2005 Began to Embrace “Team”
Literally. The now deprecated term “Team System” began with Visual Studio 2005; that lead to the common acronym VSTS for Visual Studio Team System.
Visual SourceSafe Versions
Even though we would keep on seeing minor version number changes such as VSS 6.0c, and 6.0d, I was convinced Microsoft lost the source code for VSS and didn’t want to tell anyone about it.
Visual SourceSafe - A Reason to Move to TFS
By far, the most common reason I’ve seen for companies to move to Team Foundation Server is to get rid of Visual SourceSafe. Once you use TFS to manage source code, it is only natural to start using the additional features such as automated builds and work items.
Visual Studio Master?
If you were a master of “everything Visual Studio” in 2005/2008, Visual Studio 2010 will push you to your limits. Visual Studio 2010 Ultimate combined with Team Foundation Server 2010 has enough diversity that will force you and your team to specialize in certain areas.
Visual Studio 2010 Flavors
Microsoft has introduced a new product lineup for Visual Studio 2010. Check out the following URL for more information on the different editions and their features: