Shelving and The Zone
There's a new feature in Visual Studio 2005 Team System (VSTS) in the source code control area that I really like.
First of all, let me say that source code control has been considerably revamped in Visual Studio 2005 - there is a new edition of Visual Source Safe, which does not require Team System, but which has been updated to be more reliable, especially over slow links. However, there are a lot of new features in VSTS Source Code control that should really make you consider using VSTS, especially for teams of 5 developers or more, but even for smaller teams. (Even a one-person team should be using some kind of source code control.)
Secondly, let me briefly talk about "The Zone". Joel On Software talks about it, many others do too, but suffice to say that "The Zone" is a place where developers find themselves very focussed and productive. Somehow I think many developers find it as easy to be procrastinators and time-wasters, it's something in our makeup. Good developers are often seen as lazy - writing the same thing twice is too much work, let's factor it out instead.
But I digress. When team members are in "The Zone" it is best to leave them there. It is easy to be distracted and suddenly the zone is gone (some have termed it "the bubble" and it bursts). Anyway, real progress happens when you are in the zone.
However, it is also important in projects to fix defects as early in the process as you can (excepting on a number of other factors that might prioritize them to later activities). Defects are often found during testing activities, and, in ideal circumstances, by someone else other than the developer. Fixing defects often means that a developer has to go back to what they had previously worked on and diagnose and fix the defect. (All those developers whose code has never had a defect need not read any further.)
Going back usually implies breaking the zone. And what if you had started work on a really cool new feature and needed to make sure your new code wasn't lost?
Answer: you put your new work on the shelf. Almost literally. The new source code system in VSTS allows you to "shelve" your changes into the SCC repository, go back to the old code, fix your changes, and eventually get back to the cool stuff - you fetch back the cool code from the shelf. Bam! Back in the zone.
Shelving has a number of other uses as well - transferring new but incomplete work to someone else, doing a "spike" on a new feature, heck, even just ensuring that all developer work is backed up (so you don't have to worry about not backing up the dev workstations).