I spent a total of 5 years at Microsoft. 2 years as a contractor and 3 years as a full time Engineering Lead. My time at Microsoft had its ups and downs but overall it was a very valuable experience. I am tough on Microsoft, but that’s primarily because I think they can do a lot better. I want to devote a few paragraphs to why one would actually work at Microsoft, because even with all its flaws Microsoft can contribute a lot to someone’s growth.
First thing to remember – Microsoft is a very engineering driven company. It is the best place to learn how to be a great developer, tester or program manager. Most of the groups at Microsoft know exactly how those roles play together and how to train and execute in those disciplines. Microsoft has had some issues delivering breakthrough products lately, but it’s rarely an engineering issue. Windows 7, Windows Phone 7, Xbox, Office, Windows Servers and Visual Studio are stable, extensible, responsive and are a pleasure to use. In the interest of full disclosure I do use an iPhone and a Macbook Pro, but it’s mostly a hardware issue.
When you join Microsoft as an engineer they will train you how to write secure code, how to test it, how to grow in your role and invest in yourself.
Being at Microsoft as an engineering manager or a lead is also a great experience. Microsoft will invest into training you how to hire and terminate, how to deal with various personalities and how to drive your team to excel.
The time I did spend at Microsoft I shipped products, did bug triage and gained intuition about how to manage a release.
There are plenty of reasons not to be at Microsoft and that’s why I left 5 years ago to join DocuSign, however that’s a whole different blog post. I do consider my time on the Windows Team as a Masters in Software Engineering (as opposed to Masters in Computer Science). The curriculum consists of taking classes, doing a lot of homework, working hard, coming into the lab on the weekends, and passing your finals by shipping software.