Small pond vs. Big pond

It has been more than six months since I left Microsoft to join Skytap, as honeymoon fever fades, I may compare the two ponds from the engineer perspective in a less subjective way:

Development Cycles

Microsoft Office follows the traditional waterfall approach:

I think this workflow makes perfect sense for Microsoft Office, a market dominator with rooted user expectation, just as the Milo Criterion states: > Products must mature no faster than the rate at which users can adapt.

Skytap takes a less formal approach as we are service-oriented: - Bug fixes and minor improvements are shipped in monthly base. - The long-last features are usually driven from the marketing side, then consolidated to requirements by developers. - As testing team compose less than 10% of engineering work force, test-driven-development(TDD) is highly encouraged. Mockups and fixtures are comprehensively used to for cross-component testing. - Besides testability; deployability, maintainability and serviceability are also planned ahead. - Dogfooding in the internal staging environment. - Deploy it!

Programming languages and Tools

In Microsoft Office, client applications are developed mainly in C/C++, a in-house foundation library takes place of STL and boost for historical reason. Server side uses C# and .NET out of surprise.

In Skytap, the backend service is developed in Python, the web frontend is in Ruby. Some services are developed in C/C++ for the sake of performance. We also have some legacy code in Java.

In Microsoft Office Graphics, most developer use Visual Studio for everything, I know some developers (including myself) prefer Vim. There are also some diehard windbg users as well.

In Skytap, most developers prefer Emacs, two guys use Vi/Vim, several use Eclipse, at least one guy uses TextMate.


In Microsoft, each developer is equipped with at least two dev box in case the overnight build fails; one mail machine for running Outlook. Two 22" monitors are hooked up with KVM for console switch. You may occasionally check out the virtual machine from build lab for Hotfix.

In Skytap, each developer is equipped with MacBook Pro 15" and HP ZR30w 30" monitor. The dev stack is running in the HP ProLiant server or in the cloud.


In Microsoft, you have unlimited access for Microsoft products for your day-to-day work, and MSDN subscription for technology preview.

In Skytap, you have unlimited limited resources to run virtual machines in the cloud.

The two ponds are so drastically different, which pond do you prefer?

By the way, Skytap are still hiring. Feel free drop me a line if you are confident with your programming skill in python/ruby/HTML/javascript/etc and/or your expertise on network/database/distributed computing.