I've now been out of Microsoft for one work week, and I'm spending a little time reflecting on the 6+ years I spent there and where things went right and wrong.
I didn't actually look to work there. My first job out of college (I had a couple during and between college stints) was at Quark, in Denver. I left there in '98 to found a software company that morphed into pure consulting. We did quite well, although nothing like what we had talked about when we started. Weird ambitions, no solid business plan, just the financial backup plan with consulting gigs that ended up being the mainstay of the business. Lucrative, gave me a number of skills (such as public speaking, teaching, professional writing) I might not have picked up otherwise, but it didn't have a future as a company per se.
When Microsoft contacted me in 2000 I was very comfortable working for myself, negotiating with clients, and managing my own destiny. I was a Unix/Linux type who had to say the least a poor view of Microsoft. You know the type. After a particularly good set of interviews it took many rounds of negotiations before they finally came up with an offer I could not reasonably refuse.
Things started out quite well (indeed my first year rocked), although I did have my second boss two weeks after I started. This would become a common theme as re-orgs and other changes had me report to something like seven different managers in the first two years, and make my way from one division (which got axed when its product was cut) to another (Office) to another (Windows).
After finally shipping real products to real customers on the Windows Shell (at the time I was the dev lead for Windows Messenger due to more organizational weirdness) while that org was in the midst of the doomed Longhorn throes. I went to tackle what I thought was one of the biggest problems the company had in Windows org developer productivity by joining the Windows Build Engineering team.
Later I talked to my favorite former manager (the one I moved to two weeks after my start), and I agree with him that it was a good move, although the changes I tried to make were killed by large scale organizational politics. He asked the most obvious question asked ("why weren't you able to convince them?"), and since I have spent more time working on communication and consensus building skills. Painful growth, but good growth.
After a relatively short time I decided I was a product guy, not an infrastructure guy, and went to a new (to Microsoft) graphics product code named Acrylic (Developer Division, I officially made the rounds). I believe the working name now is Microsoft Expression Graphic Designer, but it changes all the time so YMMV. I spent a year there getting the product ready to ship under the parameters given to me in by far the most dysfunctional team I have ever seen, let alone been apart of.
My review that year did... not go well. So I looked around the company again (this is when I met with my favorite manager I mentioned above), and based on advice and opportunities decided by best fit was with the MSN Messenger team. I joined them as a senior engineer in charge of everything but nothing specific.
And that's how I spent the last year. I think I made a pretty big impact on that team, my review this year went well (better than I expected), but given how the 2-3 years before that had gone and the re-orgapalooza that was my first couple years with the company, I decided to get back to my real nature and get out of the massive company and see what else was out there.
When people talk about Microsoft they often talk about the echo chamber, and how you get so caught up with what is going on internally that it is easy to forget there's a world outside that isn't centered around org politics and the bleeding edge technology being written as you speak. There was a conscious effort to improve that in the time I was there, but it is definitely still true. I got to meet with real live customers and external partners a small handful of times when I was with the company. I can only imagine how bad it was before I got there.
Overall I think Microsoft is the best big company in the world to work for. The benefits are just incredible, when they have enough office space the working environment is very good and helps productivity, and the people (especially in the product groups) are top notch. I would work there again under the right circumstances, I didn't leave out of bitterness, just to force myself to take risks with my career and to make sure I grow.
Furthermore, I learned a ton during this whole process. I'm a much stronger developer, I have an end-to-end understanding of what it takes to ship world class software to the mass market, and I can work well with many different types of people. I don't regret taking the job, I love the Seattle area (except for the driving...) and overall it has been very positive for my life and my career.
I just hope the next stage is as good or better!