A number of clients that I’ve worked with over the past couple of years have made the decision to abandon their internally hosted Team Foundation Server (TFS) in favour of a Git. Some have decided that they’re going to host their own Git repository; others use it in the cloud. Unfortunately most of them have been suckered into using Git without understanding what they do or don’t get as part of the package.
The first thing to observe is that the first couple of versions of TFS were a nightmare as they were overly complex to setup and even worse to manage. Luckily I was never game enough to go down that path as at the time I was working of an instance of SVN running on a VM with 500MG of RAM on a Mini-PC box sitting under my desk (and btw it ran like a dream with checkins taking fractions of a second even from the other side of the planet). Unfortunately some organisations spent years fighting TFS handing it off to traditional ops people and expecting them to know how to manage it.
For a lot of developers the two step checkin process of committing locally and then pushing to a repository is just a waste of cycles and they won’t get much benefit from the peer-to-peer nature of Git. Those passionate about Git will argue that this is because they haven’t invested enough time into Git to learn how to use it to its full extent. I’d counter this by indicating that if you’re spending that long working with Git, then you’re not writing enough code and that your process is broken (most likely checking in too infrequently resulting in lots of large merges). My early arguments against Git were that it was unnecessarily complex as everything had to be done via a command line – really, really really, in this day in age, we have to use a command line to do checkins??? Luckily there are now several UI alternatives available for those who don’t want to see a command prompt.
With these points aside (this isn’t a post on why you should/shouldn’t use Git) it’s important to recognise that Git is really only about source control; source control makes up a very small, yet integrated, part of TFS. Particularly with the move to the cloud (check out http://visualstudio.com) TFS has undergone a transformation with new features rolling out hot of the press. Not only does it do source control, it also does task and iteration management, build automation, testing, and even team rooms for conversing with remote team members on a project. All of which are integrated so you can see what code was written to fix a bug, who broke the build and what they changed, and even get notification in the team room when a build has succeeded. This level of integration is completely missing from Git.
So you have to wonder, if these organisations are not using TFS, what do they use as a replacement for managing projects. The answer is a sad combination of email and disparate tools kit bootcamp and jira. The lack of integration means that requirements, tasks and bugs are often loss into the email abyss; code is modified and no-one knows who or why the changes were made and builds either don’t exist or are managed completely independently. Of course, in some cases someone in the team realises theses pieces of software aren’t working together, so they cobble together an integration piece which is so brittle that the build breaks more frequently because of their patchwork solution, than it does because someone legitimately broke the build.
The upshot of all this is that if you haven’t tried Visual Studio Online, I’d suggest now is the right time to take another look at TFS. Sign up, and I’m sure you’ll be pleasantly surprised….. oh, and did I mention you can opt to use Git for you source code!