The top level management at Microsoft spend a lot of time keeping the rest of us focused on the mission, making sure that we never lose sight of the end goal, and that its all about the 'customer', not the fantastical whims of a few developers.  Still, being one of those fantasy led whimsical developers, I have got to admit the siren song of self gratification is hard to keep at bay.  Every time I sit down at my desk or stare at a white board I am compelled to imagine products and features that likely have no place in the real world.  I just can't help it.  I'm like a kid in a candy shop. 

Knowing this about myself and others, I expect that as a group we can easily succumb to unnecessary distraction.  So its quite telling to take a look at the proceeding of an average C# design meeting from an analytical perspective.  You see, before I showed up on the scene, before the product team started focusing on data, there was a sort of apathy toward customers.  Now it has all changed.  I can tell by taking a look at past meeting notes.  You'd be hard pressed to find a customer anywhere in them at all.

Now, if you could take a look at my track record here at the company, you'd find a strong customer focus.  The time working on Xen/C-Omega, the ObjectSpaces years, the .Net data and XML frameworks, and even good ol' abused but used ADO.  Every time we talked about these guys, every time we designed a feature or examined a flaw, it was always about the customer, customer, customer!

Imagine my surprise when I joined up with the C# rabble.  In these meetings, nary a customer in sight.  When someone walked up to the board to write down a snippet of code, it was always the same old anti-customer, developer whimsy that got spit out.

public class Foo {
  public int X;
  public string Y;
}

Foo?  What the heck is a Foo?  That's the sort of self gratifying stuff I'm talking about; not even an attempt at grounding the discussion on real customer needs. That all changed when I started slapping down code up on the board.

public class Customer {
  public int Id;
  public string Name;
}

Finally, we were talking about customers.  People starting asking the hard questions, like what about 'Bar', customers don't have Bar's, they have things like addresses and orders, don't they?  I could see it their faces.  It was like a light suddenly turned on. 

The next day everyone showed up wearing Khakis and Polo shirts.

But I digress.

Matt