Sunday, October 14, 2007

Comparing the Microsoft and Google tool chains

About six months ago I left Microsoft for Google. One of the big differences between the two companies is the tool chains that they use. Microsoft mostly uses its own tools, many of which they also offer to sale to third parties, while Google uses mostly open-source tools. I thought people might be interested in seeing the differences. Note that my experience may not be representative of most Microsoft or Google employees, because I was not working in the main-line part of Microsoft (I was in the Xbox team), and I am not currently working in the main-line part of Google. So in both cases I am not familiar with the specialized tools that each company has developed for doing its mainline work.

Here's a table comparing the tools I used at each company:

Tool
Microsoft
Google
Opinions
IDE
Visual Studio
Eclipse 3.3
I give Visual Studio the edge on debugging UI and IntelliSense. But Eclipse has some nice features, such as showing errors in the scroll bar.
Languages
C++, C#
C/C++, Java
Microsoft C++ is better than Gnu C++, and C# is better than Java. But it's a 10% difference, not a 100% difference.
Build System
NMAKE
GNU make
GNU make's better -- at least it seems to take less code to implement fancy build rules.
Source Code Control System
Internal tool (similar to perforce)
perforce
It's a wash - they're both very similar to each other.
Bug tracking
Internal tool "Project Studio"
Internal tool "Buganizer"
Google's system has more integration into email. For example, if a bug is opened against you, you get an email, and if you reply to the email your reply is automatically appended to the bug report.

Also, Google's system is web-based, which makes it more convenient to use.
Email
Outlook 2007
gmail
Overall I like gmail, but Outlook does have one feature I really miss: I set up a special folder for all the "checkin mails", that was sorted by name. This made it very easy to scan through people's checkins. gmail only allows mail to be sorted by time, which is less convenient for scanning checkin mails.

I'm pretty sure that Google gives employees more email storage space than Microsoft does, but I don't remember the exact numbers at Microsoft. I do know that after 6 months at Google I'm at 1% of my quota, whereas at Microsoft, after 10 years, I was always bumping up against my quota limit.
Web Browser
Internet Explorer
Firefox
Firefox has some great plug-ins, such as Ad Blocker Plus. but IE had the edge on printing and stability.
Office Suite
Office 2007
Google Docs
Office 2007 has a superior UI and far more features. Google Docs is "good enough" for programming docs, and I like the web integration very much.
OS
Vista Ultimate
Mac OS / Ubuntu Linux
I like Ubuntu a lot more than I thought I would. I like Mac OS a lot less than I thought I would. And Vista is fine, too.
Hardware
Dual-Proc Xeon x 2, no laptop
Quad-Proc Xeon, Dual Proc Xeon, Macbook Pro laptop
Google is more generous with hardware, especially in giving most employees their own laptops. And of course Microsoft only gives Mac hardware to people who write Mac apps.
Screens
Dual 1280x1024 21" CRTs
Single 30 inch 2560 x 1600 LCD or two 24-inch 1920 x 1200 LCDs
I love the large LCD screen. Actually I disliked the Microsoft CRTs so much that I went out and bought a 20 inch 1600x1200 LCD with my own money. For $800 (that was a few years ago, when they first came out.)
Office Space
Large private office with a window
Small desk in shared 8-person interior office. No window.
Having a private office is nice, but there are advantages to sharing an office with people who work on the same project. Google issues noise-canceling headphones to help reduce distractions. I'd have to say that Microsoft has the edge here, but Google is not nearly as bad as I thought it would be.

Overall I'd say the two tool chains are roughly equivalent. I found it pretty easy to transition. I was productive at Google after just a few days of training. By far the biggest qualitative difference is due to the giant HP 2560 x 1600 LCD monitor I'm using now. It's wonderful to have so much contiguous desk space. To be fair to Microsoft, I believe that new employees at Microsoft are now being issued 20" 1600 x 1200 LCDs, and many programmers manage to scrounge a second LCD. But Google's much more generous at outfitting programmers with hardware than Microsoft.

1 comment:

Invictu said...

I was looking for an answer to know if a 30 inch 2560 x 1600 LCD would be, simply put, great to have while programming using visual studio for instance, and i have found this page wich gave me the answer i wanted:) thanks a lot, i will start my savings...i would love to have one two.