Why Team Foundation Server is like my old home theatre setup

Some six years ago, I bought a nicely integrated home theatre setup. DVD player, active subwoofer, satellite speakers, the works. I say integrated because the audio output of the DVD player went into the subwoofer which also acted as an amplifier. The satellite speakers were connected to the subwoofer/amplifier. I even got a huge remote to control it all.
This set has given me lots of cinematic viewing pleasure throughout these years. However, I would like to switch to a blu-ray player in the near future.

And I now have a problem because I cannot simply connect the blu-ray player to the old subwoofer/amplifier. The audio input of the subwoofer/amplifier only works with the DVD player. Integrated, you see.

What I should have done: buy a separate DVD player, buy a separate amplifier, buy separate speakers and hook everything together. Pick the best of everything.

"So? You made a wrong choice. Get over it.", you might say. And you would be right. But how does this relate to Team Foundation Server?

Well, TFS is a very nice system. You get a lot of Application Lifecycle Management (ALM) functionality which integrates very well. Say what you want about Microsoft but they understand integration. You can get your reports in Excel. Version control is nicely integrated into Visual Studio. You simply enter your tickets into the bug tracker from within Visual Studio. Start builds in Visual Studio. You get the picture.

However, TFS has a weak link. The version control part of TFS has its...issues. (I'll probably dedicate some extra posts to these problems, so stay tuned for any follow-up posts).
In an ideal world I would like to swap out the version control part and replace it with something else. And you simply cannot do that because it is so deeply rooted within TFS (well, you can in a dirty kind of way but you lose all kinds of integration advantages).

If I look at the entire package that TFS offers, I would like to separate the following at least:
  • version control
  • bug tracking
  • build management
  • reporting
Use scripting to glue everything together. The integration might be less polished but you can pick the best of everything. If something does not work, replace it with something else.
Think about that before you invest in something that does 90% of what you want, but makes the remaining 10% very painful.
And now if you will excuse me, I have to browse the web for a new home theatre setup....


Popular posts from this blog

Small tip: use QueueBackgroundWorkItem for asynchronous work in ASP.NET

Why you should use git merge --no-ff when rebasing.

Using NUnit for your tests in Team Foundation Service with a Git repository