Web Exclusives:Features
a PAW web exclusive column


March 21, 2001:
Excerpt:
Proudly Serving My Corporate Masters
What I Learned in Ten Years as a Microsoft Programmer

By Adam Barr '88

This excerpt was reprinted with permission. To order the book, go to www.proudlyserving.com

1: Feeding the Engine

On October 26, 1999, it was announced that Microsoft would be one of four new components in the 30 stocks that make up the Dow Jones Industrial Average. This was a long-overdue recognition of the role of technology in the U.S. economy, and in particular of Microsoft's central place in the industry.

But Microsoft was different from the other three newcomers. It has no computer chip manufacturing plants like Intel, no chain of retail stores like Home Depot, no network of phone lines like SBC Communications. Indeed, it's not "industrial" at all. Its product is software; its assembly line the brainpower of its employees. And while companies across America would naturally say their employees are vital to their success, for Microsoft in a large sense the employees are the company.

And that makes Microsoft very particular about who it hires.

In high school I read Tracy Kidder's The Soul of a New Machine, the Pulitzer-Prize-winning book about the race to develop a new minicomputer at a company called Data General. The company had set two teams competing against each other; one team had a large budget and all the elite engineers, and the other got some office space and a pat on the back. The story followed this second team as its members worked crazy hours, sacrificed their personal lives, and took assorted engineering risks to produce a computer, soundly trouncing the "A" team. As I whiled away my college nights in the computer lab at Princeton University, I thought of the Data General employees who had spent their nights working in their own lab. When I began my job search in anticipation of my graduation in 1988, I was eager to abuse myself by working on one of these crazy projects.

Unfortunately, all I got were dull, tedious interviews that left me with corresponding impressions of the companies.

I thought AT&T would be cool. At school I used the Unix operating system, designed at AT&T. Some of my professors were AT&T engineers teaching at Princeton for a semester or two, who regaled us with stories of Bell Labs hi-jinks. AT&T had massive office buildings scattered throughout New Jersey, and I knew that somewhere inside them there were cool people working on cool projects.

In my first AT&T interview I didn't go anywhere near those people. I talked to four or five people who all worked on the same piece of equipment. Each of them spent the first half-hour describing it in great detail (I still remember-how could I forget?-that it was a fancy handset that could be plugged into a phone line to diagnose problems). The rest of the interview consisted of us discussing nothing in particular. I had to make small talk to avoid embarrassing pauses in the conversation. Then it was on to the next interview, for more of the same. Luckily I had recently broken my finger playing hockey, so the cast on my hand gave us something to talk about (I recommend a cast as a great ice-breaker for anyone doing interviews).

The highlight of the day, such as it was, was lunch. The building had a sit-down restaurant, normally off-limits to peon-level employees relegated to the cafeteria. But an interview lunch allowed everyone who was going to meet with the candidate to eat in the restaurant. So I had lunch with six other people, all of whom were more excited to be there than I was. The other thing I remember is that there were monitors in the hallways that constantly displayed the AT&T stock price.

Somewhat alarmed that the food had been the best thing about the place, I came away determined never to work there. It seemed full of bored employees working on boring tasks under a bureaucracy that reached to the sky. I asked one of the employees if he ever worked late, and he said, "Oh, once in a while I have to work until 6." To me, coming out of college, with The Soul of a New Machine ringing in my head, this was exactly the opposite of what I wanted to hear. I wonder if AT&T knew how badly it came across to a gung-ho college kid like me.

I tried interviewing at another AT&T site, but it was the same dreary agenda minus the fancy restaurant. The one unusual interview I had was with a fellow Princeton graduate. He spent the whole interview telling me what a great place AT&T was. Why? Because you didn't work hard and got paid well. Great! This guy also told me that he interviewed with other companies all the time, presumably to make sure there wasn't someplace else paying even more for less work.

After I ultimately accepted a job at a small startup near Princeton, I continued to do some interviews. Sure, I had no intention of working at any of these places, but you got free food, maybe a hotel, a plane ticket if the company was far enough away-more than enough to ease any moral qualms. One of these was at Hewlett-Packard in sunny Silicon Valley. California! I was hopeful because the HP employee who had done my on-campus interview had been pretty hip, which boosted HP several notches in my ranking of companies. Unfortunately the corporate interview was awful. The building I interviewed in was a maze of cubicles. The big conceptual breakthrough was that every employee had a certain type of chair, based on his or her level in the management hierarchy. All managers were then given a visitor's chair that matched the next level below them on the chain. Thus, when you went to talk to your boss, you would be spared the discomforting sensation of sitting in a chair that was a different design from the one you sat in at your own desk.

Hewlett-Packard did do me one favor-they didn't offer me a job, so I never had to feel guilty about flying out there under false pretenses. They also cured me of my "Why not?" attitude toward interviews. Someone from another division within HP, who either didn't know or didn't care that I had already been turned down after my first interview, called to offer me another trip to California for another set of interviews. In fact she tracked me down at my parents' house in Montreal during a vacation. With my Mom in the room I just couldn't bring myself to agree to fly out.

IBM, of all places, managed to create a decent impression. Weeks before my interview, someone in Human Resources sent me a release form to sign stating that by law IBM had to notify me that I was going to be given a standardized test. Impressive, but unfortunately the entire evaluation consisted of that test. The rest of the day was one giant schmooze-fest. Give IBM people credit, they managed to make this seem more palatable than AT&T or HP, despite the fact that the job they were discussing sounded even more mind-numbingly boring than the AT&T one. I actually considered working there! I could imagine the people I talked to singing songs from the IBM songbook, without it seeming corny (this was in 1988, when IBM was near its historic high in employment; now, with the company three-quarters its former size, and having endured painful rounds of layoffs in the early 1990s, this noble feeling may have dissipated).

The most amazing thing IBM did for me was to give me money for dinner, in cash, before I left in the late afternoon. Furthermore it was some ungodly sum, like $16, far more than I could ever spend at McDonald's-and I could keep the extra! The recruiter also said IBM would pay for another night in my hotel if I didn't want to drive back to school in the snowstorm that had developed, but somehow it was the trust embodied in that $16 that got to me. Who said college graduates are hard to impressbut it still wasn't enough to get me to work there.

By the time I graduated from college, I had been using an IBM PC with Microsoft software for almost 6 years. Microsoft was the first company I interviewed with, and the one I desperately wanted to work for. I knew in advance which day the sign-up sheet for Microsoft interviews was going to be posted, and I was the first one on the list.

Microsoft came out to Princeton in force, with a recruiter and four interviewers. They further impressed me by taking some of the candidates out to dinner the night before the on-campus interviews. I managed to snag an invite to this through someone who had been an intern there the previous summer. They took us out to Lahiere's, the toniest restaurant in town. I debated over whether to order caviar, wondering if it would show up on my interview report. One of the interviewers was Nathan Myhrvold, who later became known both as Chief Technology Officer of Microsoft and as a noted gourmet. Nathan solved my dilemma by ordering caviar for the whole table.

The interviews at Career Services the next day were the final proof that Microsoft was the place for me. Instead of going over my resume and making small talk, the Microsoft recruiter jumped right in and started asking me programming questions. And the on-campus interview is merely a preview of the interview you do when you fly back to Redmond.

Microsoft interviews in Redmond for technical positions are structured the same now as they were then. You first meet with a recruiter, who explains how your day is going to go. Next come interviews, typically with three people in the group you are going to work with, then your potential future boss, and then perhaps his or her boss. Whichever of these interviews falls around lunchtime will be turned into a slightly longer lunch interview. If things are going well, you meet with the person up the chain who has the actual authority to hire you; he or she is known as the "as-appropriate" because the meeting only happens if it is appropriate to do so, meaning that there is a chance you are going to get a job offer. After all this you meet with the recruiter again for a wrap-up. The recruiter probably already knows whether you are going to get an offer, but usually keeps mum at that point.

As the pool of people who have worked at Microsoft, interviewed at Microsoft, or read about Microsoft interviews has grown, people have started to have expectations about the significance of the number of interviews they do. The more the better-"three interviews and out" is a very bad sign.

The key thing about all the interviews is that they are "technical."

After some introductory small talk and maybe some discussion about items from the resume, the real fun begins. The candidate is asked between one and three "Microsoft questions"-the kind that earned Microsoft its interviewing reputation. The specifics can vary widely. Logic problems are common. Developers, as programmers are referred to at Microsoft, are almost always asked to code up the solution to a small programming problem on the office whiteboard. (Developers at Microsoft actually have the lofty title of Software Design Engineer, commonly referred to as SDE, but I won't bother with that.) Program managers, who among other things work on determining the appearance of the software, are often asked questions related to user interface design. Testers (officially called Software Test Engineers) are asked how they would test a hypothetical piece of code if it were handed to them. Real answers are expected, but the process by which they are arrived at is also watched. Candidates are expected to ask their own questions to clarify the interviewer's question, think before talking or scribbling, and be prepared to convince the interviewer that a solution is correct.

The interviewer asks the candidate whatever he or she feels like asking that day. Some interviewers will ask the same question of all candidates. Sometimes they will hear of a question that another candidate has been asked and decide to try it out on their own candidates.

My interview with Microsoft went well, in my opinion, except they didn't offer me a job. I had prepared for the interview by working all night on a school assignment, then heading to the airport the next day still not having slept. After a day off in Seattle courtesy of Microsoft, which I was supposed to spend exploring the city but spent most of sleeping, I did the interview at Microsoft, flew home, and immediately went back to the lab at school, pulled another all-nighter, handed in the assignment the next afternoon, then crawled back to my room to sleep. An hour later the phone rang: it was the Microsoft recruiter, telling me they had turned me down.

I probably should have been tipped off to what was coming by my interview dinner. Every candidate got taken out to dinner by a Microsoft person who knew how the interview went but who wasn't supposed to say anything about it. Of course if you wanted to impress someone, you drove him or her across the lake to Seattle for dinner at an expensive restaurant. I got taken to dinner at a Thai restaurant a mile from campus, where a grand total of $20 was spent on me, my gracious dinner host, and two friends that he brought along for backup. He spent most of dinner describing what a great time he had had at a steakhouse with a friend of mine from Princeton, who had interviewed a few weeks before and gotten an offer. He made a point of telling me that they had eaten so much that the two of them exceeded the $75 limit that Microsoft would cover for interview dinners.

Getting hosed just made me want to work there even more. To a candidate coming out of college, a Microsoft interview is a breath of fresh air-stressful, but fun. You come away from the interview thinking, "Wow, if they only hire people who make it through this, I bet there are some pretty smart people working here." This is similar to the strategy described in The Soul of a New Machine, in which the head of the project explains how they wrapped up their interviews with candidates they liked: "We tell him that we only let in the best. Then we let him in."

***

The company I wound up working for right after college was a small startup called Dendrite International, headquartered 45 minutes north of Princeton. Dendrite wrote territory management software for pharmaceutical salesmen, the representatives of large drug companies who make presentations to doctors and hospitals. Dendrite seemed to have accidentally hit on the prototype for the Microsoft interview. The guy who interviewed me on campus was a recent Princeton alum named Dennis Moore. Dendrite had only about 30 employees at the time and no official college recruiting program. Dennis had decided on his own to interview at a few schools and had done the necessary paperwork himself.

He spent the interview drinking Diet Coke and trying to stay awake. He explained that he had been up all night at work and had driven straight to Princeton from there. He looked like hell. All I could think was, "Where do I sign?"

Dendrite wanted me to come in for more interviews. It didn't occur to anyone to offer to rent me a car, and it didn't occur to me to ask, so I borrowed a friend's car and drove up. I met Michael Mee, my future boss, who handed me two pieces of paper with some code on them, then left me alone for a while with instructions to figure out what they did. Then I wandered around and met all the programmers (there were fewer than 10). The whole process was very haphazard but also very compelling. A few days later, Michael called and offered me a job.

When I started at Dendrite, everyone was working insane hours to meet unattainable deadlines-just like in The Soul of a New Machine! I loved it, of course-my own personal death march. The saying was, "Work at Dendrite, lose your girlfriend," although this was mostly wishful thinking since it presupposed a girlfriend being there for the losing. Upper management had no idea what was going on down in the trenches, but this fostered a great "us vs. them" feeling that bound all the programmers into the closest-knit team I have ever been on.

The strange thing in retrospect was that it really was fun. We would work together all day, then go out to dinner together, and then often as not come back to work together. It helped that we were all young, single, and mostly unencumbered with external social lives. It was interesting work, and with so few programmers you got to dabble in everything.

Looking back it is impressive that management was able to get us to work as much as we did. They didn't know much about what specifically we did all day (and night), but they sure knew how many hours we spent doing it, because everybody there had to fill out timecards. Dendrite wasn't paying us for overtime-they just wanted to be able to bill clients for it. A rumor went around that a report was prepared each month detailing how much free labor the company was getting from the programmers, but even that didn't do much to dampen our enthusiasm. Years later I was talking to Dennis about why we all worked so much and he said, "I don't know, I guess we all just liked Michael." This really is the key-if you want programmers to work crazy hours for you, they need to like what they are doing.

Unfortunately the company was growing quickly. Soon Michael and Dennis left, and a more corporate manager was brought in to run the programming department. This pushed the boundary of the clueless zone a little too close to home-programmers hate being second-guessed by management. Despite a core of quality people who remained, the fun atmosphere was gone. In the summer of 1989, a friend of mine got a job at Microsoft as an intern; I went to visit him and wound up interviewing for a job. It was similar to my interview as a student, with a different cast of characters and a different outcome-a job offer. I was about to resign from Dendrite when they announced they wanted to send me to Japan for 3 months. I postponed accepting the Microsoft job and went off to Osaka, but when I got back nothing much had changed at Dendrite. I called back my recruiter and found that the job offer was still open.

Microsoft flew me out for a "sell trip," which is similar to an interview trip except that since you already have an offer, each interview is a low-pressure sales pitch on why you should work for Microsoft. Unfortunately, if you put two programmers in a room with explicit instructions not to discuss technical questions, the result is pretty dull. I persevered to my final interview with Brian Valentine, the as-appropriate, at the time the head of the networking division. As soon as I sat down in his office, Brian crossed his arms, stared at me, and said, "So are you going to work here or not?"

A friend had advised me to ask for more stock options, but instead I meekly settled for a $2,000 signing bonus. In March 1990 I moved out to Seattle to start working for Bill Gates.

***

At Microsoft I got to see recruiting from the other side. It is impossible to overestimate how important interviewing and hiring are to Microsoft. The company is not long on process and training. The approach sometimes referred to as "masses of asses"-achieving results with large numbers of merely adequate people-is nonexistent. Microsoft's past and future success depends entirely on hiring very talented people.

I interviewed my first candidate about four months after I started working there. Microsoft intentionally puts recent hires on the interview schedule of incoming candidates. A lot of the candidates are college seniors and it impresses them to see Microsoft trusting someone just a few years older than them. Plus this fits in with the Microsoft philosophy that you learn by doing. To be on the safe side, interview schedules also include more experienced interviewers.

Microsoft is not very big on training of new employees in general, but it does offer interviewer training. I had signed up for this, but I was asked to do my first interview before the training happened. Nobody seemed too concerned about this, so I went ahead and winged it.

After each interview, the interviewer writes an email giving his or her feedback on how it went and sends it to a list of people that includes the recruiter, the as-appropriate, and all the other people on the interview schedule. So everyone sees everyone else's comments throughout the day. There is a rule in most groups that the first line of this feedback email should be either "hire" or "no hire," followed by a few paragraphs justifying the recommendation. This leads to "hire" and "no hire" being used as nouns when referring to candidates, as in "this guy is a definite no hire." Wishy-washy comments like "lukewarm hire" are not allowed. And saying, "Gosh, I didn't really get a good feel for this candidate, so I'm going to abstain from choosing," would get you nothing but grief and no more interviews.

When I finally attended interviewer training, the instructions handed out included examples of how to write the rest of the feedback, where the "hire"/"no hire" decision was expanded on. You need to be concise, mention what you talked about and what problems the candidate solved, defend your hiring decision, and be fair to the candidate. (In the networking group, you were explicitly prohibited from writing, "If you hire him, I quit.") Included were examples of "bad" feedback, such as this badly defended "hire":

Hire.

Bright, competent, articulate. He could be a developer anywhere in the company. I was unable to press him on his specialties, since they are not mine, but his general problem-solving skills were excellent.

It says hire, but it doesn't explain why in any detail. Get it? Here's a "no hire" that is also a little skimpy on specifics:

Until we started coding, I was impressed with the dude, after flailing for almost 45 minutes on the code, the dudes a wash.

Strong No Hire.

In addition to committing the feedback faux pas of putting the recommendation after the feedback and embellishing it with a contraindicated adjective ("strong"), this doesn't explain what exactly happened. One of the reasons Microsoft wants good feedback is so it can defend itself if anyone ever sues after not being hired. Feedback like the previous one too easily hides biases on the interviewer's part. In this case the sample had email from the recruiter appended, pointing out the flaws and asking for a more complete summary.

Finally there was this classic of the genre:

Recommendation: hire

This guy is as green as grass and completely naive in the ways of the world, but he seems smart enough and does seem like a hard worker to boot.

Where has this guy spent his life? I took him for lunch, and the menu fascinated him. How do you pronounce "quiche" or "croissant"? He'd heard of croissant, but had no idea what either meant. I paid with a credit card. Intriguing enough, but how was the tip handled then? Well, you see, you can specify on this line here...I mentioned that MS did most of its sales outside of the US now, and this seemed incredible. He's been to Europe as a child (his father was in the military) but his knowledge of the world is "I know that when you are in the Orient, don't drink the water."

He's fairly green computer-wise as well. This was a non-technical lunch interview, but when I asked him to describe a program that he had written himself from scratch that he was particularly proud of, it was a struggle. On the other hand, he seems to really dig at trying to find answers to problems, and I really like to see that. He has a Z-80 computer at home with 48K of RAM, and he was programming in assembly language and he kept plugging away until he learned to program interrupts. Then he realized that debugging was going to be tricky with no OS support, but he kept digging until he found a way to do that too.

He don't know DOS, he don't know Intel, he don't know networks, he don't know testing, and he don't know life, but my impression is that except for possibly the last category, he'll learn fast. In other words, he'll fit right in here!

Frankly I'm mystified as to why this was presented as bad feedback. It certainly explains why the decision was "hire"! Maybe the candidate was too much on the "huge potential" side of things and not enough on the "could get something done within 12 months of starting work" side, but you're supposed to be hiring for the long term, and anyway that is a judgment call on the part of the interviewer. Sure, there is too much space spent discussing what a rube the candidate was, but the result is hilarious. In fact, the whole thing might not be actual interview feedback, but the result of someone trying to simulate bad feedback as an example for others.

So the interviewer training provided these examples of how not to write feedback (there are also examples of good feedback, too dull to bother repeating). But these are useful only once you have made the basic "hire" versus "no hire" decision. That is the tricky part. Sure there are some candidates that just blow you away with their ability, and some that are complete no-ops (a "no-op" is a computer instruction that intentionally does nothing, which is useful in some situations where you want to slow the computer down but not a compliment when applied to a person). The vast majority of candidates, however, fall somewhere between those two extremes. There were various tests suggested for resolving the borderline cases in your mind. Do you think the person could do your job? Would you be upset if he went to work for your competitor? But it all boils down to a personal feeling: "Should Microsoft hire this person?"

As I sat down to write my feedback after my first interview, I realized that I wasn't sure what to say. The person certainly seemed qualified, but I knew that most candidates who made it to an interview in Redmond seemed qualified. I realized that I had not been thinking during the interview of the eventual "hire"/"no-hire" decision I would have to make. I had asked him the standard stuff-about his previous job, some technical questions-but nothing stood out; there had been no sudden flash of inspiration. I had seen interview feedback before, and it seemed so self-assured. It was always obvious to the interviewer, and, by implication, to anyone with half a brain, that this candidate was either the greatest thing since sliced bread, or a complete idiot.

The problem was that I could justify either a "hire" or a "no hire." I could emphasize the positive parts of the interview and explain away the bad parts ("He got it wrong, but it was a tough question"), or I could play up the bad parts and criticize the good parts ("He got it right, but I think it was just a guess"). Luckily for me, I was not the first person to interview him that day; the previous interviewer had given him a "hire," so I followed suit and tailored the rest of my feedback to match. Eventually, every interviewer gave him a "hire" except for the as-appropriate. The candidate wound up coming in for more interviews, was hired, and worked at Microsoft for over eight years-which proves something, although I'm not sure what.

Because of indecisive lemmings like me, some groups at Microsoft have experimented with leaving out the hire/no hire decision, or simply not including the other interviewers in the feedback list-which is how many other companies handle things. Unfortunately if you don't see the previous feedback for a candidate you might talk about the same things the previous interviewer did-what we'll call the "AT&T handset syndrome." And leaving out the "hire" or "no hire" isn't much help because the rest of the feedback usually makes it obvious.

Even after I had a lot of interviewing experience I would often be extremely conflicted about whether to vote "hire" or "no hire." The general rule given is that if you have any doubt, you should vote "no hire." Unfortunately it can be hard to be hired at Microsoft if you have even one "no hire" on your feedback. This leads to "feedback inflation" where people vote "hire" because the previous feedback has all been "hire," and nobody wants to be the person who ruins the candidate's chances.

Despite the prohibition against it, people sometimes worked around this problem by writing feedback that is somewhere between "hire" and "no hire." Such as the following, taken from actual feedback I saw over the years: "I wouldn't give him a no hire, but I wouldn't be excited about having him"; "No Hire-this is really close, it's a fairly tough call"; "Hire (with reservations)"; "Weak no hire"; "As a hardnose I say no hire. As a nice guy I might say hire"; "I do not consider him to be a strong hire, but he does juuust pass the bar for me."

Translation: they didn't think the candidate was great, but they didn't want him or her to be tarred with the "no hire" brush. What they wanted to say was, "no hire, unless everyone else thinks hire, in which case don't let me be the person who stops him or her from being hired."

There's one more twist. When you were done interviewing a candidate, you needed to hand him or her off to the next interviewer, either by walking over to the appropriate office, or, more likely as the Microsoft campus grew, calling a shuttle to another building. You needed to give the next interviewer a quick summary of what your feedback was going to be, since you hadn't sent the email version yet. So you had to make a snap hire/no hire judgment right after the interview, before you had much time to think. This encouraged even more of a gut-feeling approach and less of a rational analysis. Sometimes you would tell the next interviewer one thing and on reflection, while you were typing the official feedback email, you would realize you had changed your mind. So you had a choice between sending feedback that justified your initial opinion, even if you no longer agreed with it-thus hardening the opinion into fact-or confusing the hell out of the next interviewer, and looking like a wishy-washy goofus to boot.