Tuesday, April 29, 2008

Using TFS

I've been using TFS for about a year now. I have to admit that learning to use TFS has not been easy. Most of the team development environments I've used over the years have been home grown, and while I was not the one that created them, I found them all quite easy to use. I've even used some of the open development sites--like SourceForge--and have found these fairly easy to use. TFS has been a bit more difficult.

My experience with TFS is similar to most of the stuff that I encounter from MS -- it is highly configurable and not intuitive.

My current development team had moved from SourceSafe to TFS just a few months before I joined the group and they were not using most of the features of TFS at that time. When I arrived, we had a single TFS project with all of the VS projects checked-in. The build system was external to TFS. There were no solution files checked in, so each developer create a separate solution file on their local systems in order to build. There were several web service projects and many more DLL projects. There were also plenty of harness applications to exercise the web services and/or DLLs. There were also a handful of VS plug-ins and/or utility programs -- most of which were not under revision control.

During the past year, I have worked to get the TFS Build working which required the addition of solution files -- a good thing. Once I got the first TFS Builds running, others on the team set up the automated builds and created other TFS Build files. I have also worked at getting automated unit tests running. We had several discussions about whether to have a single unit test DLL for an entire solution or a separate unit test DLL for each DLL created within a solution. Again, once I got the first unit tests running, others on the team have taken to creating unit tests. I have to admit that someone else brought in the idea of mock objects, and I personally have not been sold on them yet. We also now have several separate TFS projects for each of the web services. This has been a bit confusing for some of the developers as they were used to working out of just a single repository project. I am now working on getting the use of Work Items to be a part of the everyday lives of the developers.

(As it's time for food and other things in my life, I'll have to blog about the details of those items later.)

No comments: