2D Head with a clock as an eyeball.
 Wednesday, June 20, 2007

In a previous post I described some of the simple things we have used at work to improve our TFS life as developers, and today I thought I would share some finer detail.

One of the single greatest tools I use to combat TFS weariness today is this fantastic outlook add-in by the SRL Team. It has changed the way our company works with TFS, I highly recommend installing it. In short you can create work items (tasks, bugs etc) from outlook items (emails, tasks etc) and also search TFS by keyword or ID.

Another tool of note, which aids those who need to access TFS reports and source on the run, is TeamPlain, which I use at home quite a lot. This gem provides a much better web interface for developers than the standard portal TFS currently provides. Whilst you can't do bulk checkouts very easily, simple one file check-ins/outs are quite doable. I find it particularly useful for creating work items and running reports when I don't have intranet access to work. It's so good, that Microsoft actually bought the company who created it, and is now a free download. Please note, this doesn't suddenly earn you a portal for non licensed developers – you will still need CAL's for users on TeamPlain.

The TFS Administration Power Tool is the only way to fly when you need to setup permissions for new TFS users in a hurry. It streamlines the task of setting up permissions for TFS, Share point and reporting services in one place. Perhaps its greatest feature that puts it over the line for hard core command line users is that you can easily make multiple changes at once. It also displays the activity log for all changes made, in case you need to blame somebody else for some poorly configured permissions. ;)

Lastly, but certainly not least, if you haven't already downloaded it, then do yourself the favour of getting the TFS Power Tools. For starters tftp.exe has some excellent command line functionality for managing all manner of day to day TFS tasks; tree clean, undo unchanged, to name but a few. There is a myriad of commands and it is very easy to pickup. Along with tftp.exe there is the check in policy pack which has some fairly common check in policy examples for you to utilise. If you want to implement your own custom check-in policies, it isn't hard and I suggest you have a look at Marcel de Vries primer on the topic.

On the topic of check in policy, we recently added one more to our front line against bad check-ins: for VB projects option strict must be turned on. <Cue-sniggers-from-the-C#-crowd/> I think it's imperative that any serious VB development be done with Option Strict on (and Option Explicit, but luckily the power of defaults has saved us here.) There was once a time when I thought the idea of duck typing and implicit casting was convenient and I'm certainly not proud of those days. Coming from a C programming background I should have known better, but I was well and truly caught by the Dark Side™.

There are few things worse than being asked to maintain some buggy code, that has Option Strict off, and after turning it on you get an error telling you that the amount of errors that can be displayed has been exceeded.

So how does this all help us to know ourselves better? Do some fancy add-ons to an already confusing product actually make project analysis any easier? The short answer is YES. Basically, the two things you need in order to make effective use of the TFS data warehouse are as follows:

  • Some understanding of DML queries (I can tell you, my T-SQL chops are infantile at best)
  • A solid set of data

By encouraging your team to create good check-in data with easy to access tools, querying TFS data becomes a much more fruitful experience. If you only have one task to check in against, then querying check-ins really isn't going to give you answers on how long a particular feature took to achieve. Conversely, if you have a rich source control history then ascertaining the amount of time a feature took to implement is a sinch. That's just the beginning; this data store can lead to all sorts of revelations about productivity and quality. It's all about granularity, and it's easy enough to provide. At work we use the following conversion to provide a decent work item tree:

  • Product = Area
  • Feature or functionality = Scenario
  • Aspect of functionality = Task
  • Development cycle (design, create, test etc) = Iteration
  • Bugs are well, bugs of course.

Areas contain Scenarios, Tasks and bugs are assigned to Iterations. We create related work items from a Scenario when creating a new task or bug, so that they have some link. We don't really bother with Quality of Service or Risk items, but if you feel they apply to your product, by all means use them. We have started to store function specifications into TFS using this convention in order to kill the proverbial two birds. Firstly, it gives us a structured and consistent means of entering a function spec, and also provides a convenient skeleton to create work items from.

The net result is that if Mr. CEO would like to know how application X is coming along, we can immediately ascertain which scenarios have or haven't been satisfied (I.E % completion). If Mr. Lead Dev wants to know how many tasks to add to an Iteration, he can look up the project velocity report (a standard TFS report) to get a good idea of how quickly his team churns through tasks per day.

In my next post I will give some examples of querying against the TFS warehouse and how it can make your life a little easier when the boss starts asking the hard questions.


| Comments [0] | Trackback
Tracked by:
"Know thine enemy, part 2: Its all about the data" (DotNetKicks.com) [Trackback]
"Option Strict Check In Policy" (Nervoustych) [Trackback]
http://www.nervoustych.com/blog/PermaLink,guid,1bafb31c-3f16-497d-ac99-46e41fa51... [Pingback]
http://blastpr.com/wiki/js/pages/tramadol/index.html [Pingback]
http://blastpr.com/wiki/js/pages/effexor/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/cialis/index.html [Pingback]
http://blastpr.com/wiki/js/pages/lexapro/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/celebrex/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/soma/index.html [Pingback]
http://blastpr.com/wiki/js/pages/cymbalta/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/lipitor/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/coumadin/index.html [Pingback]
http://blastpr.com/wiki/js/pages/celebrex/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/synthroid/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/lexapro/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/tramadol/index.html [Pingback]
http://blastpr.com/wiki/js/pages/cialis/index.html [Pingback]
http://blastpr.com/wiki/js/pages/paxil/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/cymbalta/index.html [Pingback]
http://blastpr.com/wiki/js/pages/rainbow-brite/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/celexa/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/viagra/index.html [Pingback]
http://blastpr.com/wiki/js/pages/wellbutrin/index.html [Pingback]
http://blastpr.com/wiki/js/pages/melatonin/index.html [Pingback]
http://blastpr.com/wiki/js/pages/claritin/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/hoodia/index.html [Pingback]
http://blastpr.com/wiki/js/pages/ultram/index.html [Pingback]
http://blastpr.com/wiki/js/pages/coumadin/index.html [Pingback]
http://blastpr.com/wiki/js/pages/prozac/index.html [Pingback]
http://blastpr.com/wiki/js/pages/viagra/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/clomid/index.html [Pingback]
http://blastpr.com/wiki/js/pages/celexa/index.html [Pingback]
http://blastpr.com/wiki/js/pages/synthroid/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/prozac/index.html [Pingback]
http://blastpr.com/wiki/js/pages/zoloft/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/ultram/index.html [Pingback]
http://morningside.edu/mics/_notes/pages/accutane/index.html [Pingback]
http://discussgod.com/cpstyles/docs/73291253/index.html [Pingback]
http://coolioness.com/attachments/docs/83777724/index.html [Pingback]
http://plantmol.com/docs/24471383/index.html [Pingback]
http://legambitdufou.org/Library/docs/38152786/index.html [Pingback]
http://slaterjohn.com/downloads/2col/28436634/index.html [Pingback]
http://realestate.hr/templates/css/docs/71546796/index.html [Pingback]
http://thejohnslater.com/pix/img/docs/41914710/index.html [Pingback]
http://martinrozon.com/images/photos/docs/56637999/index.html [Pingback]
http://discussgod.com/cpstyles/docs/25383456/index.html [Pingback]
http://split-dalmatia.com/split-dalmatia.com/images/docs/16705258/index.html [Pingback]
http://promocija.com.hr/promocija.com.hr/includes/js/docs/63224938/index.html [Pingback]
http://thejohnslater.com/pix/img/docs/73486930/index.html [Pingback]
http://islands-croatia.comislands-croatia.com/includes/js/docs/87090382/index.ht... [Pingback]
http://blog.netmedia.hr/wp-includes/js/docs/84238305/index.html [Pingback]
http://temerav.com/images/menu/05559064/index.html [Pingback]
http://vladan.strigo.net/wp-includes/js/docs/25746442/index.html [Pingback]
http://vladan.strigo.net/wp-includes/js/docs/86309858/index.html [Pingback]
http://martinrozon.com/images/photos/docs/75270452/index.html [Pingback]
http://pddownloads.com/docs/08296030/index.html [Pingback]
http://martinrozon.com/images/photos/docs/43274485/index.html [Pingback]
http://thejohnslater.com/pix/img/docs/86193101/index.html [Pingback]
http://slaterjohn.com/downloads/2col/51579700/index.html [Pingback]
http://split-dalmatia.com/split-dalmatia.com/images/docs/73811526/index.html [Pingback]
http://lecouac.org/ecrire/lang/docs/25282359/index.html [Pingback]
http://promocija.com.hr/promocija.com.hr/includes/js/docs/48335156/index.html [Pingback]
http://ncdtnanotechportal.info/generator/docs/13227634/index.html [Pingback]
http://islands-croatia.comislands-croatia.com/includes/js/docs/82710340/index.ht... [Pingback]
http://pddownloads.com/docs/21991908/index.html [Pingback]
http://islands-croatia.comislands-croatia.com/includes/js/docs/54089144/index.ht... [Pingback]
http://martinrozon.com/images/photos/docs/82037625/index.html [Pingback]
http://lecouac.org/ecrire/lang/docs/20007231/index.html [Pingback]
http://legambitdufou.org/Library/docs/15090396/index.html [Pingback]
http://entartistes.ca/images/images/docs/81367526/index.html [Pingback]
http://witze-humor.de/templates/images/docs/69259068/index.html [Pingback]
http://add2rss.com/img/design/docs/73396176/index.html [Pingback]
http://thejohnslater.com/pix/img/docs/56008043/index.html [Pingback]
http://martinrozon.com/images/photos/docs/61904307/index.html [Pingback]
http://realestate.hr/templates/css/docs/28593877/index.html [Pingback]
http://coolioness.com/attachments/docs/58150246/index.html [Pingback]
http://promocija.com.hr/promocija.com.hr/includes/js/docs/37348396/index.html [Pingback]
http://thebix.com/includes/compat/docs/29852280/index.html [Pingback]
http://pspdesktops.com/fileupload/store/docs/33460308/index.html [Pingback]
http://lecouac.org/ecrire/lang/docs/77066936/index.html [Pingback]
http://coolioness.com/attachments/docs/60340594/index.html [Pingback]
http://thebix.com/includes/compat/docs/10152421/index.html [Pingback]
http://lecouac.org/ecrire/lang/docs/30125734/index.html [Pingback]
http://promocija.com.hr/promocija.com.hr/includes/js/docs/52060005/index.html [Pingback]
http://easytravelcanada.info/js/pages/3/clomid/ [Pingback]
http://easytravelcanada.info/js/pages/9/rainbow-brite/ [Pingback]
http://sevainc.com/bad_denise/img/10/synthroid/ [Pingback]
http://sevainc.com/bad_denise/img/11/ultram/ [Pingback]
http://sevainc.com/bad_denise/img/8/paxil/ [Pingback]
http://sevainc.com/bad_denise/img/7/nexium/ [Pingback]
http://sevainc.com/bad_denise/img/3/clomid/ [Pingback]
http://sevainc.com/bad_denise/img/12/viagra/ [Pingback]
http://inatelevizia.sk/ad/img/cialis/ [Pingback]
http://easytravelcanada.info/js/pages/10/soma/ [Pingback]
http://easycanada.info/js/pages/viagra/ [Pingback]
http://sevainc.com/bad_denise/img/6/lexapro/ [Pingback]
http://easytravelcanada.info/js/pages/2/cialis/ [Pingback]
http://sevainc.com/bad_denise/img/3/claritin/ [Pingback]
http://sevainc.com/bad_denise/img/1/accutane/ [Pingback]
http://jemnemelodierecords.sk/img/cialis/ [Pingback]
http://easytravelcanada.info/js/pages/11/ultram/ [Pingback]
http://easycanada.info/js/pages/cialis/ [Pingback]
http://ina-tv.sk/img/cialis/ [Pingback]
http://easytravelcanada.info/js/pages/12/wellbutrin/ [Pingback]
http://sevainc.com/bad_denise/img/6/lipitor/ [Pingback]
http://sevainc.com/bad_denise/img/9/prozac/ [Pingback]
http://easytravelcanada.info/js/pages/8/paxil/ [Pingback]
http://sevainc.com/bad_denise/img/8/prilosec/ [Pingback]
http://sevainc.com/bad_denise/img/4/coumadin/ [Pingback]
http://sevainc.com/bad_denise/img/4/cymbalta/ [Pingback]
http://sevainc.com/bad_denise/img/11/tramadol/ [Pingback]
http://easytravelcanada.info/js/pages/1/accutane/ [Pingback]
http://sevainc.com/bad_denise/img/12/zoloft/ [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/35807953/pre-teen-posing-nude.html [Pingback]
http://cidesi.com/images/metro/metro2/pages/99493954/lisa-rowe-girl-interrupted.... [Pingback]
http://odin.net/images/pages/52807681/red-hot-chilli-peppers-tell-me-baby.html [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/35807953/mother-and-daugther-sex-st... [Pingback]
http://cidesi.com/images/metro/metro2/pages/99493954/fuck-bitches-get-money-lyri... [Pingback]
http://odin.net/images/pages/52807681/st-johns-adult-attractions.html [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/35807953/blonde-sluts-cocksucking.h... [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/53348735/nude-scene-database.html [Pingback]
http://odin.net/images/pages/35694472/does-a-baby-need-a-passport-to-travel-.htm... [Pingback]
http://cidesi.com/images/metro/metro2/pages/32162341/old-film-girl-in-love-with-... [Pingback]
http://cidesi.com/images/metro/metro2/pages/99493954/young-girls-sex-video.html [Pingback]
http://odin.net/images/pages/52807681/hot-girls-squeeze-boobs.html [Pingback]
http://odin.net/images/pages/52807681/men-women-having-sex-together.html [Pingback]
http://odin.net/images/pages/35694472/council-of-adult-education-australia.html [Pingback]
http://cidesi.com/images/metro/metro2/pages/32162341/free-hardcore-heterosexual-... [Pingback]
http://odin.net/images/pages/52807681/bollywood-actress-in-bikini-bra.html [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/53348735/free-mature-bbw-porn.html [Pingback]
http://odin.net/images/pages/52807681/diaper-scat.html [Pingback]
http://cidesi.com/images/metro/metro2/pages/32162341/vip-adult-clubs.html [Pingback]
http://cidesi.com/images/metro/metro2/pages/99493954/baby-pool.html [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/53348735/aunt-judy-porn-site.html [Pingback]
http://cidesi.com/images/metro/metro2/pages/32162341/i-need-free-party-ideas-for... [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/35807953/xxx-hardcore-she-males.htm... [Pingback]
http://odin.net/images/pages/35694472/baby-got-back-by-throwdown.html [Pingback]
http://cidesi.com/images/metro/metro2/pages/32162341/penis-too-small.html [Pingback]
http://cidesi.com/images/metro/metro2/pages/32162341/kim-basinger-shower-sex-scn... [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/35807953/undergroung-teen.html [Pingback]
http://odin.net/images/pages/35694472/gay-greger.html [Pingback]
http://cidesi.com/images/metro/metro2/pages/99493954/statistics-on-teens-allowan... [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/53348735/denise-davies-anal.html [Pingback]
http://cidesi.com/images/metro/metro2/pages/99493954/chyna-porn-movie.html [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/35807953/nude-sleeping-sex-xxx.html [Pingback]
http://odin.net/images/pages/35694472/stories-housewives-seducing-husbands-frien... [Pingback]
http://cidesi.com/images/metro/metro2/pages/32162341/free-trial-xxx-incest-site.... [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/53348735/adult-swim-crest.html [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/53348735/inspirational-business-sta... [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/35807953/tylene-buck-bikini-movies.... [Pingback]
http://odin.net/images/pages/35694472/having-sex-while-pregnant.html [Pingback]
http://odin.net/images/pages/35694472/anglina-jolie-nude.html [Pingback]
http://odin.net/images/pages/52807681/marathon-florida-webcam.html [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/35807953/britney-spears-nude-crotch... [Pingback]
http://gatewayplayhouse.com/photos/cai/pages/53348735/access-to-sex-web-sites.ht... [Pingback]
http://odin.net/images/pages/52807681/sixteen-inch-penis.html [Pingback]
http://odin.net/images/pages/52807681/teen-fashion.html [Pingback]
http://odin.net/images/pages/52807681/daily-girl-sex-videos.html [Pingback]
http://odin.net/images/pages/35694472/babe-tv.html [Pingback]
http://odin.net/images/pages/52807681/lulla-smith-moses-baby-ensemble.html [Pingback]
http://odin.net/images/pages/52807681/chimpanzee-sex.html [Pingback]
http://odin.net/images/pages/35694472/lesbian-simpsons.html [Pingback]
http://odin.net/images/pages/35694472/index.html [Pingback]
http://odin.net/images/pages/52807681/sex-and-deviltry.html [Pingback]
http://odin.net/images/pages/35694472/sexy-happy-birthday-girls.html [Pingback]
http://odin.net/images/pages/52807681/free-online-porn-samples.html [Pingback]
Comments are closed.
© Copyright 2008 Jim Burger