Working at Microsoft, the Inside Scoop
bariswheel writes "Responding to the public interest, a long-time Apple and UNIX user/programmer, and a JPL/Caltech veteran, writes an insightful, articulate essay on the good, the bad, and the in-between experiences of working at Microsoft; concentrating on focus, unreality, company leadership, managers, source code, benefits and compensation, free soft drinks, work/life balance, Microsoft's not evil, and influence."
It's just unavailable if the referall is slashdot.com, try copying and pasting the link into a different tab.
http://mirrordot.org/stories/fd94ec5aeadb1073126ec 3d15ec58564/index.html
Working at Microsoft
Home Photos Writing Software Links About Résumé RSS
It seems like there's a lot of public interest in what it's like to work at Microsoft. Here's my personal persepctive on the good (+), the bad (-), and the in-between (=).
Background
As a long-time Apple and UNIX user/programmer, I never aspired to work at Microsoft. (And I'm still a little surprised to be here.) I've never despised Microsoft like so many people seem to do -- it's just that Microsoft products weren't a part of my world.
Then my wife got a job at Microsoft, so I needed to leave Caltech/JPL to work in Seattle. I didn't actually apply to Microsoft -- a friend of ours who worked there circulated my résumé and Microsoft responded rapidly and set up a last-minute interview. Although I had five other offers, Microsoft made the best impression.
And so, here I am. I've been working at Microsoft since October, 1999 as a full-time Software Design Engineer. In that time, I've worked for three teams in two divisions, and had six or seven different managers. Four products I've worked on have shipped, two more are in beta, and I've also "consulted" for many other teams across the company, thereby influencing directly and indirectly a large number of Microsoft's products.
Between my experience and my wife's, I think I've gotten a pretty solid feel for what it's like to work in a product group at Microsoft.
+ Focus
As much as I enjoyed working at Caltech/JPL, it wasn't until I got to Microsoft that I realized that there's an enormous difference between working for a software company and a company where software is just a step towards some other goal (space science, finance, medicine, retail, etc.).
Everyone at Microsoft "gets" software -- the managers, the administrative assistants, the vice presidents... Even many of the "blue collar" workers (cooks, janitors, bus drivers) know something about software -- it's not normal! At NASA, most managers and even some scientists had no real understanding of software or software development. Elevating the common denominator in this way makes Microsoft a wonderful workplace for people who love making software (even if it's far removed from the reality of "the real world", which can cause other problems, like overinflating the importance of software).
= Unreality
As a parent, I've come to understand that there's a wide gray area between overprotecting your children and creating a nuturing environment in which they can develop.
I think Microsoft struggles with a similar problem with its employees. Microsoft provides its employees with a nuturing environment in which they can be most productive. But like children, these employees also need to be grounded in reality and exposed to ideas that can be disruptive or even disturbing. Otherwise a sheltered monoculture can develop that's unhealthy for everyone involved.
It's hard for people who don't work at Microsoft's main campus to understand just how unreal the experience of working there can become. Some employees forget that most of the world doesn't have broadband wireless networking, high-end consumer electronics, luxury vehicles, and enough money that they don't need to live on a budget. Some employees spend so much time using Microsoft products, that they forget about the competition and/or lose touch with typical customers' needs.
+ Personal Freedom
One thing that's worth losing touch with is the strict work environment.
Microsoft gives software developers a lot of personal freedom over both the work and the work environment. I order my own supplies, customize my office as I see fit, schedule my own trips and meetings, and select my own training courses. I choose when I show up for work and when I leave, and what to wear while I'm there. I can eat on campus or off, reheat something from home in the kitchen or scavenge leftovers from meetings. I can even work remotely from home (within reason).
For the most part, I determine what I work
I've worked inside and outside of Microsoft as a Software Engineer in the greater Seattle area since 1996. Microsoft has always been on-par or below industry standards for compensation for the area in the Senior Level Engineer arena. Except for the crazy stock back in the 90's it hasn't been a "get rich" kind of job ever.
However, the work environment at Microsoft is so enjoyable, that personally, I would take a slightly lower wage in order to work there.
I'm glad you asked. I am not always "sure" (the perpetual "the grass is always greener _somewhere else_" problem), but I think I am happy where I am and this is a good fit.
.NET and Winforms now ;). I only view coding as a means to solve a problem.
Before you stop reading - something to be aware of is that MS has a position called "SDE/T" - Software Design Engineer in Test. They've been phasing out the traditional "STE" (software test engineer) role. I've been an SDE/T since my hire date.
I originally interviewed for an SDE role with a couple teams, one of them being NT, and those didn't go well. It was the beginning of the reality check for me about what I knew and what I didn't. There were coding problems they asked me to solve in SDE interviews that I didn't solve acceptably. The recruiter would ask a quesiton like "rate your understanding of C++ on a scale of 1 to 10". Me being the hotshot college jerkoff I was said "9". Then she was like "ok, what do you need to do to become a 10?". Then I thought about it a bit and said something like "write a C++ compiler, hang out in comp.lang.*, etc". Then she asked "so why haven't you done that?"
Oh.
In these developer interviews, they were asking very hardcore questions about programming, sometimes for programming's sake. I don't code for coding's sake. I started coding back in 5th grade on an apple ][. I cut my teeth with turbo pascal and TASM. I graduated to C in 9th grade (via summer camps and stuff). I had plenty of exposure to programming, a good bit of exposure to languages, etc. But i still can't tell you what all of the bitwise operators do in C without looking at a manual. I can't tell you _anything_ about MFC (except that I am glad we have
I don't write code for the sake of coding, and I don't like memorizing the details of uninteresting things (even though I like trivia).
So, when you're interviewing with someone that writes a C optimizer for a living, how can you say that you're a solid "10" at C programming. Compared to who? them? Not unless you've also written a commercially shipping C compiler. When you're talking to the guys that shuffle bits in binary headers in the guts of the kernel, how can you say with a straight face that you get shift-right and shift-left confused because you never use them ? That was me.
That was the perspective I never got until i started at MS. I was used to being at the top of my classes in school and I rarely ran across someone that had the same problem solving skills I had. That's what I came to my MS interviews with.
For an SDE position, they're after someone that is passionte about coding. Someone that lives and breathes it. They want to write code when they're not at work. That's not me. I do some coding at home, but only when there's some especially irksome problem at hand that nobody has a good solution to, and that I think i can pull off. When I'm not at work, I'm more inclined to want to work on my car. The car could be better, and I can't afford to pay a garage to work on it, so I've learned to do it myself. I'll never get ASE certified, but I'll learn how to do what I need to do to a car to accomplish my goals. Nothing more.
The position I have actually has a fair bit of design and coding. But it's not shipping code - it's code that tests or optimizes the testing of the actual shipping product. Automated testing is the name of the game at Microsoft. I was the guy behind the the automated testing system that ran all of the developer tools tests for a couple years. There's a lot of moving parts in that system. It worked in spite of itself (it was all written in VB, ran against a single SQL box, but served thousands of 24/7 automation execution machines.. with hundreds of thousands of automated tests). I knew the code to that thing well.. but not because I liked the code (i didn't), but because I liked what it did. I liked the power it gave our test org, and the quality we could drive into
My opinions are my own, and do not necessarily represent those of my employer.