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.
|