Like many of you my engineering organization is spread out around the globe.  With some recent relocations we’ve hit a point where we can no longer have a staff meeting slot that actually works for everyone.  Jeff Beehler (our Chief of Staff for Visual Studio) just sent out a great chart demonstrating the issue as we searched for a good time to meet:


We use several different techniques to help make things work (not exhaustive). 

For keeping the team in sync, every meeting has a Live Meeting link in the invite.  My “All Hands” meetings are also done with a Live Meeting link and in some cases I’ll repeat the content in person when I’m visiting a dev center.

For engineering purposes we (obviously) make heavy use of TFS to track features, source, etc.  Product teams work in their own “PU branches” for reasonable isolation and changes are integrated at the central branch on a regular basis.  Standard sets of tests and verifications are run as code goes up / down in the system to help prevent breaks across the system.  Making these kind of scenarios easier was part of the motivation behind our new testing features in VS2010.  There are similar benefits with the new architecture features (like layer validation).  Etc…

Have you developed best practices for working in a geo distributed environment?