This year marks the 23rd anniversary of software developer Ed Posts famous essay, "Real Programmers Dont Use Pascal." Its a tongue-in-cheek testament to the exceptional abilities and anti-management habits of the world-class coder.
Microsofts VSTS (Visual Studio Team System), which is now complete with the March release of TFS (Team Foundation Server), might have been designed after a careful reading of Posts classic commentary—followed by a vow to eliminate programmers traditional excuses for doing brilliant but unmanageable work.
Much of VSTS power resides on the developer workstation in tools for integrated code analysis and testing. Developers will find these tools fully integrated into their environments and will welcome the ability to incorporate security policy analysis and test generation directly into the workflow. But these are capabilities that have long been available from third parties, and many teams may already have them in place.
It may be that VSTS will be more compelling for its aids to developers who just want to get their work done despite a continual barrage of management information requests and other interruptions. Of all the various communities that have been tied together—one might even say, hogtied together—by Microsofts Office suite of productivity tools, its ironic that application developers who are used to being avidly courted by that company are only now getting the full benefit of Office integration.
Intelligent cooperation with Office applications is not the most technically impressive feature of VSTS. But it may give the most immediate gratification to developers who have until now been cranking their way through manual reporting and analysis procedures or struggling with brittle custom macros.
Project teams can now enjoy a much more power-Windows lifestyle, for example, by using Microsofts Excel and Project to review or create project work items and status reports. Project stakeholders who are habitual users of different Office applications can now take advantage of multiway linkage among their respective tools views of shared project data; they can access TFS records through a Team Explorer tool in a lightweight Visual Studio shell rather than installing the full-blown development environment.
Schedule tracking and other project governance tools and goals dont always enjoy a warm reception from developers—many of whom exhibit Postian disdain for anything that smacks of interference by people who cant code. We bring to their attention the "shelving" capability of VSTS, which allows a developer to capture and save the set of changes that have been made since the most recent checkout of a set of project assets.
The action of shelving puts a record of multiple items current states on the server, making that record accessible to whatever backup discipline might be in place on that machine. But it doesnt expose a programmer to criticism for "breaking the build" by checking in an incomplete or inconsistent set of changes.
We regret to note, however, that this VSTS feature brings with it a new and ugly noun, "shelveset," that contrasts with the more formal "changeset."
The latter is an auditable, version-managed group of alterations with associated comments and work-item links; the former is a more casual collection, defined as a matter of convenience rather than control, that can be deleted entirely from the repository (unlike a changeset) and that is not subject to the enforceable check-in policies that a changeset might have to satisfy.
It might sound as if the introduction of shelvesets is a step backward from disciplined developer management. But we think its likely to prove an effective device for letting developers be more responsive to urgent tasks such as security fixes—without concern that theyll have trouble picking up work where they left off.
Shelving also is a convenient way for one developer to show another team member the state that work in progress has reached, by shelving the current state and letting the teammate retrieve and apply that shelveset to the corresponding checked-in configuration.
It has long been part of programmers jargon to refer to their own mental states as if they were data stacks on which topics or tasks are pushed or popped. The shelving facilities of VSTS bring that notion a little bit closer to literal truth.