Getting Started type resources for TFS in Visual Studio 2010 - visual-studio

I have been dumped in the deep end at a new job and I need to create, administer, and use TFS projects currently in some disarray. I'm looking for recommendations on good books, tutorials, articles etc. on using TFS as integrated with VS 2010 (and otherwise, but not s priority).
Given that I don't enjoy most beginner oriented and 'for dummies' material, what resources should I be looking at?

Books might give you a pretty decent general background, but my take is Team Foundation Server with Visual Studio 2010 is still a bit of a moving target (i.e. the specific issues in the TFS build that your employer is using may not match the TFS in a published book; you may want to check the configurations of your installations...). Of course, almost all software starts being updated Scrum-style before the latest update is pushed out to users anymore, but my "moving target" characterization of TFS is probably more appropriate than for the average development tool ... maybe not; it may not matter that much to most people that TFS is still a bit "fluxy" ... Brian Harry might use a different phrase, but I'm guessing that he would ascribe the TFS "fluxiness" as reflection of his recent pronouncement that TFS is open platform with lots of different things going on, lots of different moving pieces. We are all open source now!
If you are a glass-is-half-full kind of a guy like I am, you will see this "moving target fluxiness" as actually sort of a cool thing -- exciting improvements and great new features will be coming your way; you might even get to find new features, help make those improvements happen. Hopefully, nothing will happen to destroy a project your employer is counting on and sink you any further into the deep end in your new job -- look on the bright side, you may gain a profound sense of empathy for your predecessor before this is all through. There are always all kinds of positives in situations like this!
If you were a miserable cynic, you'd say that if Boeing built planes like Microsoft builds software, thriving ecosystems of "development" passengers on airliners would have hands-on (i.e. white-knuckle, death-grip) opportunities in every flight -- they would be involved in discovering and improving mechanical, electronic, hydraulic design features or maybe learning about something new related to a supplier issue, a new failure mode, new mfg and maintenance issues. Don't be a miserable cynic -- sieze the day; embrace change, you're in the deep end already, you might as well swim to the other side, right?
Since there will be a lot of people at Microsoft serving the MSDN community and trying use/build/tailor/improve the TFS "open platform" (to "eat their dog food," so to speak) you won't really know exactly where the best developments might come from ... I would routinely follow a search of all MSDN blogs for the "Team Foundation Server" keywords ... in my case, I pasted this RSS url into my RSS reader.

This book is from some of the MSFT guys. It is really good.
http://www.amazon.com/Professional-Application-Lifecycle-Management-Programmer/dp/0470484268

Visual Studio 2010 ALM Virtual Machine + Labs: December 2010 Refresh

Related

Aldon and .Net Development

I'm looking for feedback from .Net developers who have experience with Aldon as a lifecycle management platform. We're seriously considering using Aldon for lifecycle management including source control, automated builds, etc. I know there are a lot of other options out there, but ours is primary an AS/400 shop (with AS/400 programmers outnumbering .Net developers 6 to 1), and Aldon is used already by our iSeries team. The benefit we're looking for is having one lifecycle management suite.
Basically, I'm looking for opinions from people who have used Aldon and another set of tools (perhaps TFS, or a combination of SVN, Cruise Control, etc). If you've worked with both, do you have a recommendation on whether this is a good idea, or a bad idea? It's obviously a big choice, so any feedback would be helpful.
Edit - Added
No answers or comments... AND my first Tumbleweed badge. I'm not sure if this is just a bad question, if nobody actually USES Aldon to manage their .NET work, or if there's just nobody using Aldon that used other products and can offer a comparison.
So, I'm offering a bounty to sweeten the deal, and broadening the scope of the question... If there are any people out there USING Aldon at all, can you provide any information on issues you have had, is it a good suite of tools, frustrations, or gotchas, things you love, etc?
Added -even more
Our primary goal is to have one product to manage both our .NET and our AS/400 (primarily RPG) development. If you have a suggestion for a different suite of tools, or have tried it and decided it isn't worth it, I'll take that answer as well.
I'm working in a shop similar to yours--in our case, there is a substantial legacy code base of iSeries COBOL code, and a growing number of .NET systems--and the .NET developers have successfully lobbied to use Subversion for source control. In my admittedly brief time evaluating the product, it seemed like Aldon was not very flexible at all in areas like branching and tagging, and has a very cumbersome and arcane interface. Since product lifecycles are (mis)managed separately in our shop anyway, limiting the .NET use of Aldon to source control only, it was a simple decision. In the .NET world, Aldon lags far behind the standard open source tools in features and usability, and has no hope of competing with TFS. In our case, managing .NET code outside of Aldon has definitely increased developer productivity and decreased frustration.
One example...coming from a Subversion shop, I was trying to find out how to create an experimental branch in Aldon. If it is possible at all, the documentation did a great job of obscuring the feature, and our Aldon admin had never come across the concept. Everything in our shop is locked down tight, with admin rights needed to create projects, versions, etc. This might be worthwhile from a lifecycle management standpoint, but from the perspective of a developer trying to get work done, it is a killer. I don't think lifecycle management and source control belong in the same software, and Aldon has done nothing to dissuade me from that opinion.
I think you will find nobody here uses it. .NET people fall into two categories - those that are "cheap" (i.e. trying to save costs) and then basically you look or something like open source. And those who pay a lot, and most of those go with Team System - because it is ingtegrated into Visual Studio from the bottom up. AS/400 is a pretty rare intermix for .NET developers, so, at the end - you possibly are just out of luck.
I Personally am not sure I would even bother with it. THere is a lot more to soemthing like Team System than tracking source etc. - lots of good testing features, build in continuous integration etc., and all that without running through hoods in order to - well - get then an inferior product.
We encountered the same problem at my workplace a few years back when we started up our first .NET project in the midst of a bunch of RPG developers. At the time, we chose to use a separate source control system (Subversion) for anything written in .NET (or for anything else that somebody wanted to use it for). We moved all of our projects (.NET and AS/400) into Gemini for time and defect tracking purposes. Basically, we chose a single product to manage our .NET and AS/400 projects at a high level but different tools for version control, automated builds, automated testing, etc.
Years later I can happily say that this has worked out quite well for us. I really can't think of any issues this has caused - but can attest to the fact that it has avoided some potential headaches and butting of heads. I do think that you will have an easier time finding (good) .NET developers by choosing a widely used version control system. I can't speak for anyone else, but for me the use of a version control system I have never even heard of would be a bit of a red flag in an interview situation.

Visual Studio Team Suite

If taken from a developers perspective, what would my team and I gain from using Visual Studio Team System and Visual Studio Team Foundation Server?
I can see some features and the like, but what have you gained from using the two versus using VS Professional and SVN (for a weak example). If there are any good links that you know of, please feel free to post them.
Team suite will allow you to manage the entire lifecycle management in a unified framework.
It is very easy to bind your changes and source code to a build, work-items, create release notes, etc.
Well, lets talk 2010... ;)
You can not compare Prof + SVN with TFS and TS - reason is you msis out a LOT. The comparisong would have to include some other technologies toget on feature parity.
IMHO good points are:
Good source control (including stable server based storage, proxies for external subteams etc.). Not saying SVN sucks, but I dont like not having locking checkouts on times, and if you run a larger / distributed team, the proxy functionaltiy really pushes performance.
Automatded build / Continous integration (which is where CC.NET or TeamCity would come in). Unless you dont do that, plus unit testing etc. - you simply did not mention any solution for this, and in TS it is integrated, which I take as a big plus.
Gated checkin (check in only after build server ok's the changes - harder to break builds)
Bug tracking / work item tracking (not the best, but again - you need another product for that). I personally think it does a mediocre job there (Axosoft OnTime looks a lot better), but - well... it is integrated ;)
Data Dude - database change script generation and handling of database versioning. Again, this is a big problematic area otherwise - third "another piece of software needed" thing.
That is a decent start at least to show you that the comparison is a lot more complicated.

F/OSS (or just free-as-in-beer) Visual Studio communication add-ins?

Our team is growing, but we're also growing specialized. We've already been using ticketing/bug tracking/case management software for years--as well as IM clients informally--but as another engineer and I were discussing, it'd be nice to have an IRC-like communication system. Basically, it'd be nice to have logs of discussions, as well as both long-lived and ephemeral groups/channels (the issue that precipitated this was a discussion that was happening on IM, while someone external to the conversation changed the state of a system we were working on).
At the same time, we all tend to spend a whole bunch of time with Visual Studio spanning our [one] monitor, so it'd be nice to integrate with screen real estate already being used. That, and it'd increase user buy-in by being able to point at an extant add-in and say, "Here. This is what we want to do, and this too makes it real easy." IRC would be great, but thinking about it, there's nothing inherently wrong with XMPP, either.
Are there any add-ins like this that people are using? I did find one that's four years old, and doesn't exactly have the biggest user base.
As a minor aside, the idea was also sparked by Ted Dziuba's most recent article, which shows XEmacs playing nice with an IRC client.
To answer the first part about having an IM with logs of discussions and groups/channels Microsoft OCS does that.
Now on to VS integration, well I can't find any OCS integration but I did find two addons:
What I'm Coding: Basic integration with Live Messenger which puts the filename into the status (like music programs do with the song you are listening to).
Instant Review for Visual Studio: Far more serious team tool with built in IM options. I suspect this is closer to what you are looking for.

If I'm a solo dev, should I bother with VS Team System?

I have an MSDN subscription and I'm wondering what edition of Visual Studio 2008 to get. I recall reading that Team System has a lot of bonus features like doing high-level system architecture stuff, and specialized things related for doing database work. As a solo dev, I wear many hats including database developer and architect - should I use Visual Studio Team Suite to get all of these things, or are they major overkill for a single guy?
EDIT: I have a "special" MSDN license (via the MS BizSpark program for startups) that gives me access to the FULL version of Team Suite for 3 years, for myself and any developers in my startup. After that I have to pay if I want upgrades but I'm free to use it for development indefinitely if I'm okay with not upgrading (per BizSpark licensing).
With that in mind, should I look at Team Suite or stick with Pro? I don't plan to use Team Foundation Server at all.
Well, the "test" stuff is now available in "pro" (but not profiling) so that removes one major comparator. In many ways, the MSDN subscription is a bigger factor than the VS product suite, assuming you don't need the full bredth of tools.
The VS feature list here; the MSDN feature list is here.
I used to use pro, and I never felt I missed much. Of course, you could always get pro plus something like dotTrace for profiling, ReSharper for code analysis/refactoring, and maybe TestDriven.NET for testing - you'd probably still have change left over.
I now have a team suite license (which is very nice), but if I had to pay for it I'd have to think very carefully; I'd probably get developer edition + MSDN.
I'd say that VS Team System is an overkill for single developer sweatshop, but your situation may proves otherwise. Team System is great when you're working on a project where all things are Microsoft, but all the extra features (database, architect, etc) will become useless when you start working with Oracle and MySQL database. Don't put too much stress on the tools, VS Pro is good enough if you want to save money. I'd rather spend more money on extra tools such as third party component and refactoring tools than the shining VS Team System.
But, since you join the BizzSpark program, which I think is really great for startups, I think you should go and try VSTS. You basically pay nothing for the extra features. By the time you need to pay full for the licenses, I think you will gather enough experience on VSTS to decide either to stick with it, or rollback to pro.
It never hurts to have as many toys as possible in your toy box. Sure, you may only play with some of them once in a blue moon but the point is that you have them there to play with when you want to.
I run on a Mac so I have to run all of my stuff off of a VM, and I got to thinking that all I needed was VS installed and then I could use the underlying OS to handle all of my other functions (Dreamweaver, Photoshop, Office, Web Browsing) or in other words my general day to day computing life. Thanks to VMWare the transition between the VM and the host OS is easy, but you get attachments in your email that you want in you VM, or you work on a programming doc on the host os... the list goes on and on and on.
My point is this... you'll never regret putting more into your development system, you will regret not having that one tool that you wanted to have but just didn't think you'd need.
First, you should definitely use a version control product. Being able to go back in time and recall previous builds will save you tons of time and effort. Nothing worse than having it work one day, then realizing a change you made but can't remember broke everything.
Second, if it's just you (or even a couple of other people) you should probably go with subversion. Easy to setup, manage, and interact with is the name of the game here. Not to mention free, fully supported, reliable, and easy to learn.
I have recently started using VisualSVN Server and VisualSVN Client for Visual Studio. The server is free and the client is $45 for a license you can use on every one of your development machines. Add TortuousSVN and you can use the version control from the Windows shell.
I tried the TFS and VSS products from Microsoft and found subversive much easier to deal with.
If you are serious about unit testing your code (you should be) then I'd definitely recommend using the Development Edition, as it provides code coverage, which Professional Edition doesn't.
Sure, you can get most of the functionality difference between Professional & Development Edition from free/cheap 3rd party tools, but IMO these come at a price that is usually higher than what their tag says. Since you may use the even better Team Suite for 3 years I wouldn't even bother looking at the 3rd party tools.
I believe that the Team Developer Edition will now include the Database edition. This is probably all that you would require. From memory, the full Team Suite edition (Developer, Database, Architect and Test all together) is quite an expensive purchase.
One feature from team system which I like is the ability to profile the performance of your application. That might not merit an upgrade in itself if you have to pay for it, but it's very handy in some cases.
I agree with theBadDawg.
I thought it was a travesty when the unit testing features were only available in most expensive editions of Visual studio; unit testing is something everyone should have access to because it benefits us all by instilling good habits in us and helps us write far better software. Especially if we're new to the game.
Fortunately, it's now in the Pro edition.
If you can get the Team Suite and enjoy it's tools to be more productive and produce better quality software from it, do it.
I would agree with #Marc Gravell. You can probably approximate the value of Team System with add-ons, but you also need to factor in the cost of maintaining the add-ons as well. There is some pain associated with maintaining several third-party tools to get the functionality that you could get in an integrated package. Depending on who is spending the money (you or employer), the amount of pain you are willing to deal with to get all the functionality may differ.
I've been very happy with Team System, although I have added in TestDriven.Net as a test runner. We switched to this when TS came out with baked in unit testing, coverage analysis, and source code control. I'm very happy with the choice, but if I had had to pay for it personally, I probably would have gone with nUnit, nCover, SVN, etc. and kept the leftover money. I do feel that it has made me more productive, but I just wouldn't have had that much money to spend.

MS Team Foundation Server in distributed environments - hints tips tricks needed

Is anyone out there using Team Foundation Server within a team that is geographically distributed? We're in the UK, trying work with a team in Australia and we're finding it quite tough.
Our main two issues are:
Things are being checked out to us without us asking on a get latest.
Even when using a proxy, most thing take a while to happen.
Lots of really annoying little things like this are hardening our arteries, stopping us from delivering code and is frankly creating a user experience akin to pushing golden syrup up a sand dune.
Is anyone out there actually using TFS in this manner, on a daily basis with (relative) success?
If so, do you have any hints, tips, tricks or gotchas that would be worth knowing?
P.S. Upgrading to CruiseControl.NET is not an option.
Definitely upgrade to TFS 2008 and Visual Studio 2008, as it is the "v2" version of Team System in every way. Fixes lots of small and medium sized problems.
As for "things being randomly checked out" this is almost always due to Visual Studio deciding to edit files on your behalf. Try getting latest from the Team Explorer, with nothing open in Visual Studio, and see if that behavior persists. I bet it won't!
Multiple TFS servers is a bad idea. Make sure your proxy is configured correctly, as it caches repeated GETs. That said, TFS is a server connected model, so it'll always be a bit slower than true "offline" source control systems.
Also, if you could edit your question to contain more specific complaints or details, that would help -- right now it's awfully vague, so I can't answer very well.
We use TFS with a somewhat distributed team - they aren't too far away but connect via a slow and unreliable VPN.
For your first issue, get latest on checkout is not the default behaviour. (Here's an explanation) There is an add-in that will do it for you, though.
Here's the workflow that works for us:
Get latest
Build and verify nothing's broken
Work (changes pended)
Get latest again
Deal with merge conflicts
Build and verify nothing's broken
Check in
[edit] OK looks like you rephrased this part of the question. Yes, Jeff's right, VS decides to check some files out "for you," like sln and proj files. It also automatically checks out any source file that you edit (that's what you want though, right? although you can change that setting in tools > options > source control)
The proxy apparently takes a while to get ramped up (we don't use it) but once it has cached most of the tree it's supposed to be pretty quick. Can you do some monitoring and find the bottleneck(s)?
Anything else giving you trouble, other than get-latest-on-checkout and speed?
From my understanding you can have multiple TFS Application servers in different locations. They either can both talk to the same SQL Server or you could use SQL Server mirroring. Having your own local TFS server would likely speed up your development times.

Resources