Having been at Microsoft for a little over four months now, I've started to get into the swing of the development process here. I've been mostly helping

Something I've noticed is that writing code, performance tuning, or debugging is the easy part.  However, it's often not the most time consuming part of my day.

So what sort of non coding/debugging things take time?

  • Syncing your machine to get the latest builds and code updates (although most people start this before heading home at night.)
  • If the latest build didn't install correctly, figuring out what went wrong.
  • Getting your various IDE & tools settings back after installing the latest build completely wipes out the previous installation.
  • Finding what you're looking for in the vast source trees that are Whidbey and the CLR.
  • Running the same 24 step process to recreate a bug scenario for the 1019th time.
  • Updating pre-checkin tests so that they'll continue to run after your code goes into source control.
  • Figuring out why a particular pre-checkin test fails on your machine, but not for anybody else.
  • Shepherding your submitted code changes through the gauntlet system that ensures build breakers don't get into source control.

In short, there's a lot of process involved in contributing code to a product. I don't see any substantial ways that it could be made better without sacrificing quality. However, so much of it could be done by a reasonably trained monkey.  It could be worse though. An recent email from my fiancee (who's an interior designer) had this to say: Meanwhile I am using my two college degrees and 17 years of work experience to make labels for tile.