Microsoft’s Team Foundation Server (TFS) can help your development team implement agile practices, but it’s important to remember that agile practices are exactly that—a practice, not a technology. Even really good technology like TFS can’t save you from bad development practices, but it can make implementing good agile development practices easier.
Agile development has almost reached the stage of being a cliché term. There are many concepts around agile. I’m not going to debate those concepts here, but one of my favorite ideas is that all software development goes through a cycle of requirements, design, development, and testing. The distinction with agile is to make that cycle as short as possible.
The philosophy behind the agile sprint process is that when cycles are short, bugs are easier to find and fix, design problems are detected sooner, and the deep understanding of requirements and goals is realized more quickly. I’ve seen sprints as short as two weeks, but the popular sprint duration appears to be closer to 30 days.
The challenge with quick sprints is actually delivering significant features within that timeframe. Sprinting is all well and fine, but if you can’t deliver the features the customer wants, no amount of sprinting is going to help. The goal is to spend most of the sprint actually writing code rather than dealing with the plumbing of development, such as builds and testing. And this is where TFS can make your sprints more effective by providing automation for the plumbing.
TFS helps you create a continuous integration system for your application. With continuous integration, every time code is checked in, the application gets built. The sooner a build is done, the sooner it can be tested, although building alone can reveal problems. Continuous integration depends on two things—source control and automated building. These are both core features of TFS.
But continuous integration alone is not enough; you need to automate testing also. Just because newly checked in code doesn’t break the build doesn’t mean it’s good code. Unit testing is a key part of evaluating your code. Automated unit testing speeds up that process so that it can become a routine part of building, shorting that development cycle so that problems are detected and fixed as quickly as possible. TFS and Visual Studio 2010 have features included to support automated testing.
There’s far more to the agile development process and TFS than this short set of steps. There’s the opportunity for development analytics, requirements and feature tracking, regression testing, and more. TFS has features that help with all of these roles. However, start with the core agile practice of quickly iterating on the software development cycle that can help your team move toward agile practices, with TFS as a part of the entire development process.