Before the Internet became the wealth of information that it is today, I used to go bookstores in hopes to find that one book that would help me finish the feature I was working on. As a result, I would end up buying books just because one or two chapters helped me finish and move on.
When I was crazy enough to author VB programming books (pre-.NET), I tried to write content that people would find useful, not just a rehash of what you can find in the online help or retelling of coding techniques found every other book of its kind.
With that said, in my job of promoting and showing off the value of Team Foundation Server, I'm constantly asked "Can I recommend any books on TFS?" Typically, I would point people to the Patterns & Practices TFS Guide on CodePlex for there weren’t any books on TFS 2008 and there are a lot of information on it out on the Net. So when I saw Manning Publications' Team Foundation Server 2008 in Action book, I was intrigued.
This 324-page book is part of Manning’s “In Action” series, which I believe means the book is more than a reference book but content from practitioners and from the trenches. The book is broken into the following parts:
Part 1 - Exploring Team Foundation Server
Chapter 1 - TFS and the practice of software development
Chapter 2 - Exploring the changes in TFS 2008
Chapter 3 - Introducing VSTS 2008 Database Edition
Part 2 - Diving Deep into Version Control and Team Build
Chapter 4 - Understanding branching in version control
Chapter 5 - Understanding branch policies
Chapter 6 - Understanding merging in version control
Chapter 7 - Understanding Team Build
Chapter 8 - Versioning assemblies using Team Build
Part 3 - Administering and Customizing TFS
Chapter 9 - Configuring and extending TFS
Chapter 10 - Using Workflow with TFS
The first part covers a lot of basic stuff about development process, what’s new in TFS 2008, and a walk through of VSTS 2008 Database Edition, which is now part of VSTS 2008 Developer Edition. If you’ve never seen or heard of the Database Edition features, it definitely gives you a good walkthrough of its features, capabilities, and how it can help your development process.
The second part covers, you guessed it, the way TFS handles version control and the Team Build. Version control is a big part of TFS and the author gives good coverage on branching, using labels, code merging and dealing with conflicts, and how Team Build works and different build scenarios like Click-Once builds and automatically versioning assemblies.
The third part covers the operational side of TFS. It offers good recommendations on how to organize your team projects and security groups, and covers how to create custom controls in your work item templates and extend the the work items to get better business intelligence out of TFS.
Being one of the few books on TFS 2008 itself, I wasn’t sure what to expect. Rather than trying to be a tome on all things TFS, it covers specific topics that people trying to implement TFS would be interested in: branching, merging, automated builds, and customizing it to meet their needs.
The branching discussion is good and is along the same thought lines as Microsoft’s Patterns & Practices Branching Guide v1.0. (An updated Patterns & Practices Branching Guide is now available.) What the book offers is a full discussion on branching, merging, and working with different teams who share codebases. It also dives into creating custom check-in policies to support your organization’s development process. This is very useful information.
I really like the Team Build chapters. You get a bunch of information about how Team Build works, how to do builds from labels, and how to do distributed builds. It also offers some insight on the actual code within the TFSBuild.proj file through call-outs, as shown in the screenshot.
If the branching and Team Builds aren’t what you’re interested in, the last two chapters are definitely worth looking into if you’re thinking of extending your TFS environment. The latter half of Chapter 9 covers how to add custom controls to work item templates. It’s not just a “take a control and add it to the work item template” exercise, it provides the technical approach of how to build the control and how to add it to the template. It also covers how to extend the underlying TFS data warehouse to get additional business intelligence out of the repository.
If you were interested in creating your own workflow within TFS above and beyond what you can do with the Work Item Templates, the last chapter covers how you can do that using Windows Workflow Foundation (WF). I had always thought it was possible and this chapter shows you how its done.
There are a lot of reference links throughout the book to get further information, so the content certainly isn’t stale, and the material certainly isn’t just a rehash or a collection of material that you can search the Net for. Yes, all the material may already exist on the Net, but having it in one place with examples and annotations like that found in this book, in my opinion, is worth having this book in your collection. I definitely recommend this book for developers, development leads, and consultants who want to get more out of TFS than what comes out of the box.