What's an OGF?

You may have seen this "Microsoftism" mentioned beforeĀ - one of our innumerable Three-Letter-Acronyms (TLAs) - the OGF.

But, a casual poke around didn't turn up a summary of what it is and how we use the concept (in MS in general, but here on Team Foundation in particular).

What it stands for depends entirely on who you ask, and what mood they're in. Ostensibly, it stands for "Overall Gut Feel" or maybe "Overall Goodness Factor". When things are looking grim, it's more likely to stand for "Oh God, we're..." (well, you know - that word that comprises the key component of the military acronym SNAFU).

Here's the geek version: OGFs are a system designed to formally recognize and track subjective evaluations of feature/product quality.

Now that I've set your buzzword alarm off, let's try that again. There's a lot of metrics that you can use to objectively evaluate the state of a feature or product - active bugs, bug incoming rate, code churn, etc. etc. But, that's not necessarily what a person's interested in when they ask "what's the state of feature XYZ?" A lot of people just want to know if it's Good, Bad, or Ugly.

So, we create a set of ratings - OGFs. There's one for diff. There's one for shelving. There's one for the Source Control Explorer as a whole. There's one for the 'integrated checkin experience'.

Someone owns each OGF. Their job is to periodically assess, and record, their rating (right now, Excellent, Good, Fair, or Poor - my attempts to get 'Ugly' as an official rating have somehow not been heard). You may be expected to 'back up' a rating - with relevant bugs, usually - but, ultimately, it's "your call" - 'as of build .56, shelving is good'.

Tracking these ratings over time has proven to be a good way to get a 'pulse' of the project. If only 25% of the features are meeting a Good or better OGF, it's obvious that we're a long way from shipping. If 99% are Good or Excellent, it's probably about time to start the "SHIP IT!" chants.

In that respect, you may see one valuable aspect of OGFs - it helps us focus on what needs the most attention. If features X and Y both have 5 bugs, but X is deemed "fair" while Y is still "poor", well, at least one of Y's bugs is probably more important to get fixed. In fact, when we file bugs, we'll mark them as "OGF Blockers" if the bug is sufficiently bad that the affected feature(s) can't meet a 'good' OGF rating. It's sort of funny that we'll take a subjective rating and then turn around and work so hard to objectify it again, but it works. It let's the people not directly touching a feature quickly see the state/quality of that component and some of the reasoning behind it. This lets people "higher-up" figure out where the 'squeaky wheels' are and make sure we're focused on the things we need to do to ship a great product.