This question keeps me awake the last couple of nights. What kind of IT related projects can be supported by TFS and what's in it for the teams. From the beginning of TFS, Microsoft is pushing TFS to be used in development projects and not for other IT related projects. I did the same and used it for Application projects (Burn an app on a CD, like Office), Web projects (Deploy an app on a web server, like microsoft.com) and BI projects (Data Warehouse and reporting). All these projects are related to Visual Studio .NET or Business Intelligence Development Studio (which is exactly the same product, but has a different name. Probably to make BI'ers think their developing at a higher level ;-)). But can you use TFS for other IT related projects which do not use Visual Studio. NET, I think you can. In the next paragraphs I'll explain how we want to setup TFS so we could use it for creating training material.
I work at a company called Class-A and we do all kinds of trainings and coaching about Microsoft development products and technologies. This varies from .NET 1.0 to Orcas, from MSF to TFS, from SQL BI to SharePoint. As a knowledge provider you have to be up to date with all content and we can't wait until Microsoft will release a training about .NET 3.5, because our customers want to here all about it now. So we started to investigate if TFS can help us for for creating our training material. The first thing we came up was to determine our branching strategy. I read the complete Team Foundation Server Branching Guidance, which is written by the three amigos (John Jacob, Mario Rodriquez, and Graham Barry) but I didn't find the correct branching strategy for our projects.
To understand why I couldn't use a branching strategy from the document, I'll explain our vision about creating training material. A training can be divided in two types: Standard or Custom. Before I tell the differences about the two types of training, I'll introduce a third type. This type isn't a training but is our source for creating a training. The Source as I'll call this type contains all information about a specific part of a product or technology. A source can contain a slide deck in PowerPoint, practicum description in Word and depending on the training examples and solutions in Visual Studio .NET. E.g. A source can contain all information about ASP.NET Security (Authentication, Authorization, Impersonation, Role and Membership management).
A standard training, a training for our main courses, contains the latest relevant version of the source, is numbered to show where it fits in the training and can be versioned by product or technology. E.g. An ASP.NET 1.0 training will contain everything about ASP.NET Security but doesn't contain slides about role and membership management. A custom training, a training made for a special occasion or customer, can contain a part of the source or can even be split in two parts. E.g. For Customer X we have created a custom training where ASP.NET Security is split in a basic and advanced part. The context above will create the following branching strategy.
Working with TFS and this branching strategy we hope to make it possible to do more team development, reuse material instead of recreating it and keep track of changes.
So even if you don't do parallel development, branching can be very interesting to help you in your development process. As long as you understand your business needs, I think you can use TFS for all IT related projects. Just create your own branching strategy and TFS can help you big time. In this article I was only focusing on source control, but imagine if you customize the process guidance as well. So in our case special training workitems (e.g. tasks for adding sources, defining trainings, creating new branches, etc.), reports and spreadsheets. I must say TFS can be used for all IT related projects. If you think otherwise or also have examples how you used TFS for other projects, please post a comment. Not only I'm interested, I think the MS VSTS team is interested too.