
Working at Microsoft – Day to Day Coding - there
http://foredecker.wordpress.com/2011/02/27/working-at-microsoft-day-to-day-coding/
======
boyter
Reading this almost makes me want to cry.

It's still all to common these days to find developers with 4 year old
machines, comprised of scavanged parts (from people leaving) running Windows
XP.

A level of bureaucracy forcing you to maintain 3 tickets (at least) in 3
different systems to make even a typo fix in a production system with 3 day
minimum turn around time.

Servers with less RAM and resources then your 4 year old desktop. Laptops? Too
expensive so just use this 8 year old IBM one when we need after hours
support. Source control? Use TFS which is the most god awful ticket
manager/source control system the world has ever seen.

Private office? No, shared space, with people having loud meetings behind the
developers at all hours of the work day. Corperate firewall blocking things
like stackoverflow. A view from the office? No, other people can have that,
you look at a concrete wall.

I guess the moral of this is work for a company that values developers. Keep
that in mind while looking for a job if you are one.

~~~
thaumaturgy
And for me, it hilighted some of what I've suspected for a while is wrong with
Windows development.

I own a small company that handles a lot of end-users' various issues.
Although I spend most of my time now coding, I spent more than my fair share
of time working one-on-one with individuals and companies that were having
problems with their systems. I still spend around 10 hours a week doing it.

My primary development machine is an aging laptop that can't even play YouTube
videos any more without stuttering. I hate almost every minute of using it.
It's slow, and limited, and it hangs.

So when I write something, I write it to work well on that laptop, because I
know there are lots -- _lots_ \-- of people out there with similar old
hardware, and to say they're frustrated with computers is an understatement.

How could a Windows developer possibly understand just how frustrating their
product is when they spend all of their time using the most powerful hardware
available?

How could they possibly understand that Windows file sharing in a mixed
environment running SBS 2008 is still complete and miserable and utter
garbage, when they're running on a network that hides those kinds of issues?

Their development process is _great_ for their developers. No argument there,
and I'm totally and unabashedly envious.

It's also terrible and completely wrong for most of their many users.

~~~
InclinedPlane
I don't think that's actually the problem. Windows (and many other MS groups)
have quite excellent performance and integration testing. They generally do a
good job of keeping performance under control. I think the biggest problem is
how they approach performance as a test signoff criteria, usually, rather than
as a budgeted line-item with goals for improvement.

As to situations like what you describe with file sharing in a certain
environment that mostly comes down to insufficient beta testing and straight
up prioritization/de-prioritization of certain issues.

~~~
seldo
Treating performance as a minimum bar that has to be met rather than a goal in
and of itself sounds exactly like the kind of development process that would
produce Windows -- which always feels sluggish if you're using anything other
than the latest hardware.

I don't think Microsoft realizes how enormously performance contributes to
user dissatisfaction with their OS.

As a web developer, I know that adding just a second to a page load massively
diminishes perceived usefulness of a system; Google spends enormous amounts
shaving tens of milliseconds off their page displays.

At the level of an operating system, that kind of user sensitivity to
performance must be at least the same if not magnified. It seems like
performance, especially on older hardware, should be far more of a priority
for Microsoft than it apparently is.

~~~
pragmatic
Consider that you can go to Bestbuy (or your local computer retailer or
choice) and buy a $500 laptop capable of running Windows 7. A Mac is 2 to 5
times that. (Highest price PC at Bestbuy $1200, highest priced Mac ~$2200)
(Macbook is $1000, pc is $300-$500).

I installed Windows 7 on 2 laptops of family members. These laptops were $300
from Walmart. Windows 7 runs just fine.

I installed Windows 7 on an Asus EEE pc. Runs about as well as Windows XP
(only computer where I can tell it runs a littler slower).

Considering a ~$800 ipad that isn't a full computer...

I fail to grasp what kind of performance you expect to get out of Windows 7,
while at the same time having a full featured OS at the same time running on
_affordable_ hardware.

~~~
BCM43
I can run a fully featured Linux system on a 800mhz laptop with 1gb of ram.

------
latch
An assumption? We've been told pretty directly how complicated the process is
(often with pride).

See the 14 steps which turn a 5 minute code change into a multi-man-month-
mammoth:
[http://blogs.msdn.com/b/ericlippert/archive/2003/10/28/53298...](http://blogs.msdn.com/b/ericlippert/archive/2003/10/28/53298.aspx)

Or the now infamous Windows Shutdown "crapfest":
[http://moishelettvin.blogspot.com/2006/11/windows-
shutdown-c...](http://moishelettvin.blogspot.com/2006/11/windows-shutdown-
crapfest.html)

There's more. And I have no problem with the author stating how great coding
is (because he has an office and a nice computer!). However, while your right
hand is telling us how great it is and we shouldn't _assume_ otherwise, your
left hand is telling us how horrible it is.

~~~
andywood
This blog post is mainly about the tools developers use day-to-day while
they're in coding mode. Tools and development processes do tend to be well
thought out and efficient at MS.

That's not really related to the organizational dynamics that come into play
for planning products and features. That tends to be complicated, involving a
lot of people, meetings, and debate. (I'm not defending it, just saying that's
how it is.) That 14 steps isn't about a code change; it's about the end-to-end
design, implementation, and shipping of a feature, expressed in the most
detailed, far-reaching way possible, to make a point about how things operate
in a huge organization.

Both points of view are accurate, IMHO. When you're strictly coding, things
are pretty efficient. Not too surprisingly, those were the times I enjoyed the
most. But it's equally true that at MS, coding is only a small piece of a
larger, somewhat slow-moving process. And sure, all that other overhead can
get tedious, even exasperating at times. It's just a separate subject from
what the OP is writing about here. The _coding_ part is typically quite fun
and autonomous.

~~~
latch
I don't mean to drag this out, since I largely agree with what you are saying,
and it's true that the OP seems to focus on that.

However, his intro blurb specifically says that we are wrong in assuming that
writing software is a "soul-crushing bureaucratic exercise." Which, as you
point out, the post never really says anything more about.

~~~
jasonlotito
Remember, the intro blurb is discussion all the articles he intends to write
on the subject. Together, they intend to _show_ you how the intro is true. As
it stands, he has two articles on the topic. Most people are only reading the
one (the one which is linked). Even in that, the introduction is a common
introduction for all the pieces (the two so far, so I imagine the others as
well). That the original article focuses on coding doesn't mean he's ignoring
other areas. Rather, that other areas simply haven't been written about.

------
pedalpete
I've never read a post by Richard before, I don't want to seem like I'm giving
him a hard time, and I'm a happy Windows user, so I'm a big fan of his work.

But this article isn't inspiring from a developer perspective. I've worked in
a big IT department (300 people I think),as well as start-ups, so I'm not
completely blind to the structures of different work environments.

When Richard first mentioned that everybody has an office, and that he was
allowed to paint his, I thought about how uninspiring that is. Same with
describing his hardware. Maybe it's just me, maybe it's Richard, but this
article did very little to inspire me to go work for Microsoft.

I was hoping for some insight into code planning, the specific challenges
faced by building the most popular (at least the most heavily used) desktop
consumer operating system.

Richard makes it all sound very routine.

~~~
InclinedPlane
Microsoft treats developers very well. From offices, to hardware, to free gym
memberships and health care coverage, to the idea that you're generally not
expected to work more than 40 hours a week, it's all great. But that can't and
doesn't replace the need for healthy corporate culture and good, intelligent,
pragmatic leadership, a lot of which has increasingly been lacking at MS.
You'll have a quad core desktop with 8 gigs of RAM, but that hardly helps you
play the game of office politics that is often required to get bonuses or
promotions (when the company bothers to provide them). It also doesn't help a
corporate culture that is becoming increasingly bureaucratic and process
oriented rather than results oriented.

A lot of talent is and has been evaporating up and out of Microsoft for just
these reasons.

~~~
tallanvor
In the office I work out of only managers have private offices. There are also
a few small offices with 2-4 people, but most work in groups of 6-10.

~~~
JanezStupar
Dude... That is still better than work environment I had to endure - 50
developers in a single open area. If that weren't enough - someone decided to
sit support for an entire team in the middle of this space, rationale being
"that they would like to be close".

6-10 people in a room as long as they are developers is still awesome and
productive environment.

Edit: I don't work for Microsoft - but wouldn't mind to :)

------
pacifi30
The thing here is not about if Microsoft let their developers use all the new
shiny technology but the point to stress here is how much percentage everyday
does a developer at MS actually codes, I bet it wont be more than 20%.

I am so sure of this because being at Amazon since April last year, I havent
coded more then 700 lines of code, bulk of which was supporting new features
in the already behemoth software.

I always wanted to work for a big company and I was super happy when I finally
got a job offer but lately I have realized that the biggest downside of
working for a big company is that you dont code, you just add features in to
all the in use product, attend meeting and specific for Amazon, be on the
pager 24X7.

For all you guys coming fresh out of colleges, head to bay area and join a
start up, ditch these big companies.

~~~
nostrademons
That bad at Amazon? I've been at Google for a little over 2 years and have
written about 160,000 lines of code for them. (And deleted about 30,000.)

Seems like a lot more than I expected, but just looking through my recent
commit history, I wrote 830 lines of code just _last week_ on my _20% project
alone_ , so 1600 lines/week doesn't seem that unreasonable. And here I've been
complaining about how I never have time to get any work done...

~~~
msg
I just had my two year anniversary at Amazon. I've written many more than 700
lines but I bet less than 160K. And yes, deleting code is the best.

I don't know the GP but their post is believable. Some parts of Amazon are
mired in cross-team dependencies. Worse, to get anything done in those
situations, hacks have been piled on top of hacks for tragic years. The right
solution may be waiting in the wings but all the dominoes have to fall first.

There is a lot of variety at Amazon. There are high-pressure, high-reward
teams like Kindle. There is cutting edge stuff at AWS and elsewhere.

My team is a leaf far out on the dependency tree. Approximately, we have only
end users. It's a great situation, even with a pager (shared between five
people, so one week or less a month). Our pager, on the average, does not go
off. We get to ship software every week and we're profitable.

------
plinkplonk
I asked this in the comments section but it disappeared into thin air with no
notification on what was happening(say, held for moderation etc).So I'll ask
it here. Maybe an HN reader who works for MS might know the answer.

From the article,

"All managers have laptops. Most prety good ones."

Do _developers_ (testers etc) have laptops (pretty good ones)? Or are they
"management only" perks? (fwiw all the bodyshopping companies in India follow
the "only suits have laptops" pattern)

~~~
checoivan
Laptops are officially only for managers and Program managers. As a dev/test
you can get a loaner for a presentation or find one, somehow.

~~~
plinkplonk
"Laptops are officially only for managers and Program managers."

Heh! That's what I thought :-p Not surprised to hear MS works that way :-).
Funny way to economise, making laptops status symbols. I think Google gives
devs nice laptops and is probably better off for it.

~~~
nostrademons
The number of hours of work-from-home that Google gets out of those laptops
more than justifies their cost. Hell, I'm posting this from my work laptop,
taking a break from writing out a whole bunch of use cases and product design
decisions.

~~~
lovskogen
What do you do over at Google?

~~~
nostrademons
Very broadly, Search Features. I worked on the visual redesign that launched
last May, and before that some of the search tools (particularly Wonder Wheel
and Related Searches) and a bit on the move from having separate search
properties (books.google.com, blogs.google.com, video.google.com, etc.) to a
single search app. Then I spent about 6 months doing some infrastructure stuff
with the webserver, and I'm now doing some feature work that's in the early
stages of the project.

~~~
lovskogen
Cool. What tools do you use for daily design? I've been slowly moving from
Photoshop to CSS, and want to start using stuff like Antetype early in the
process. I've also figured out that Photoshop is good for finalizing a design
that's been moved around, tested and iterated upon.

------
jdp23
The "individual offices" aspect is interesting. Back in the 1980s and early
1990s, when Microsoft went from success to success and the corporate culture
got really established, software engineering research showed that developers
were more effective with individual offices and big monitors.

By 2005/2006, when I was looking at corporate culture at MS, things had
changed: with the advent of pair programming and agile methods, many designers
and developers are more effective in shared spaces -- and many prefer those
environments. NOT cubicle farms, which are the worst of all world, and NOT
large badly-designed open-spaces ... but there are plenty of other good
options.

However, "individual offices" for devs is now such a status symbol for the
teams that still have them, that people at the management level are very
unwilling to change. One designer I know spent literally a year trying to get
permission to get his 12-person team into an open space. In the end he gave up
and eventually left the company.

~~~
hackinthebochs
>with the advent of pair programming and agile methods, many designers and
developers are more effective in shared spaces

I'd be interested in seeing a source for this. I personally believe any
creative endeavor is better performed in isolation.

~~~
dpritchett
The great thing about offices is that you can go sit in someone else's half
the day if you need to collaborate on something.

------
johnbender
"Most people in Windows have a private office – with a door"

At my office we've made an effort to keep our workspace communal to the point
of removing the 12" dividers that were included with our work tables. This, as
you might guess, does result in some distraction but in fostering the
relationships at the office people are more apt to _like_ being there.

I'm curious how other large companies and startups handle this.

[UPDATE] Its important to note that we let people work from home whenever they
like. So, in the case where they really need to focus, they have the freedom
to do so.

~~~
kenjackson
I've worked in both environments. Honestly, the best environment, IMO, is
working from home -- office is second. Shared office spaces are a distant
fourth.

I'm the type of person who needs a lot of solitude at some times, and at other
times, I love to blast music, pace, juggle, and gorge on chips.

When I need the solitude, when I'm in the zone, I don't want you taking a call
from your gf, or deciding with some other guys in the office where to eat
lunch.

Likewise, I may need to spend 12 hours doing nothing that looks productive.
Just kind of thinking as I listen to music and do something mindless like pay
bills. I feel like at even the most liberal of open floor plan offices I've
felt inhibited if I spent a day or two doing what _looks like_ screwing
around. And don't get me started on pair programming.

~~~
X-Istence
I guess I am lucky, I can spend some time looking like I am screwing around or
doing mundane tasks so long as I get my work done on time.

~~~
geedee77
This is the exact opposite to me. I spend my full day working, hit (or better)
all deadlines, come in about 2 hours early and I still get grief from the big
boss for leaving on-time!

------
dikbrouwer
I'm a bit confused by this post. The author seems to celebrate a private
office. I strongly prefer open work spaces that you share with others, as do
many companies I've worked with/seen. Care to share your opinion? I'm
curious...

~~~
absconditus
In my experience open spaces are preferred by those who are less competent and
want to bother me all day with questions.

~~~
nostrademons
You never ask people questions when coding?

~~~
prodigal_erik
My favorite argument comes from
<http://www.joelonsoftware.com/articles/fog0000000068.html> : "Mutt can't
remember the name of the Unicode version of the strcpy function. He could look
it up, which takes 30 seconds, or he could ask Jeff, which takes 15 seconds.
Since he's sitting right next to Jeff, he asks Jeff. Jeff gets distracted and
loses 15 minutes of productivity (to save Mutt 15 seconds)."

If a question isn't an emergency, I queue it up by sending email. If it is, I
ask in person, fully realizing I'm fucking up their day and hoping that doing
so really is in the best interest of the company. I also only check my email a
couple of times per day and wear heavy closed headphones for coding, because
those elusive moments of flow are about half of what I live for.

~~~
danenania
"fucking up their day"

This is interesting--I would never feel this strongly about being interrupted
unless someone was being overtly rude or annoying. I want to be productive,
but I don't feel obligated to plow forward relentlessly hour after hour. If
someone breaks my flow to ask a reasonable question, I don't think of it as a
big deal. I think true flow is a lot less fragile than many give it credit
for. It doesn't vanish anytime a pin drops nearby.

I think there's something to be said for the benefits of a less serious and
more relaxed mindset. Working steadily, but not getting all caught up in "how
productive am I?" like you're an assembly line robot. Coding is as much an art
as a job and often you can be more productive by playing ping pong and
chatting for 6 hours then having an insight that saves you 100 hours in the
long run because your mind makes a lateral leap about the architecture that
almost definitely wouldn't have happened if you had just sat at your desk
typing all day.

I still see the benefits of private offices because it can be very beneficial
to have the option of silence and intense focus when that is what you need to
get over a hump, but it also seems like a lot of programmers are missing the
great potential rewards of real creative collaboration--probably because they
are used to collaborating in an uptight business-guy kind of way. Instead,
they should take a cue from other creative people like artists, poets, and
musicians, and allow their minds be free a good portion time through
relaxation, speaking freely, and _gasp_ having plenty of thoroughly
unproductive fun. The gains in inspiration will easily outweigh the lack of
perspiration, and life will become more enjoyable to boot. Isn't that
ultimately the point of all this toil anyway?

~~~
arethuza
For me it really depends on what the question is - if I was in the middle of
coding and someone asked me a coding related question (especially about
whatever we were working on) then that really wouldn't require a context
switch.

However, if someone non-technical comes and asks me something (which usually
requires a lot of parsing) then that will require a context switch and I will
loose a chunk of productivity.

~~~
danenania
Some of it for me is pure selfishness. I just care a lot more overall about
having an interesting day than being productive. An interesting day includes
work and solving problems, but it also includes conversation on both technical
and random human topics, connecting with people on a deeper than working
level, and just plain screwing around. Luckily this all tends to balance out
(at least), because maintaining high spirits and an active imagination gives a
boost to productivity that's at least as strong as having a private office and
slogging away in it stoically every day for 10 hours.

------
prodigal_erik
I'm startled to see actual use of Visual Studio. When I was there a few years
ago, literally every dev I met shunned it in favor of vim (or rarely emacs)
and build.exe and windbg, despite pleas from DevDiv for any feedback.

------
0xEA
4 PMs to 5 devs seems like overkill. why do this?

~~~
whakojacko
Not sure why, but from what I hear from friends at MSFT, an approximately
equal number of devs, qas, and pms is very standard.

~~~
kenjackson
I've heard the ratio is dev::test::pm ~= 4::4::1

------
sbierwagen

      My paint job is well done and tasefull and failities didn’t fuss at me about it.
    
      They key point is tha tthis is up tot the team (or team’s) that own the code.
    
      This all sounds great, but everthign isn’t unicorns and ponies every day: 
      There are problems to be sure – somtimes the bug data base is slow,
    

Would have been cool if he had spell-checked this before posting it.

~~~
daviding
I'm not sure what is the more naff joke; to go with 'And _this_ is why Windows
needs a native spellchecker' or 'Obvious over-reliance on static language
compilers'. I'll go with neither, as it's a good read.

------
jfriedly
If anyone still wants to read this, the page has been taken down for some
reason but I pulled the cached copy from google before they lost it:
[http://opensource.osu.edu/~jfriedly/mirrors/working-at-
micro...](http://opensource.osu.edu/~jfriedly/mirrors/working-at-microsoft-
day-to-day-coding.html)

------
krig
Nothing about his description really does it for me except the prospect of
being able to play Skyrim on my work machine when it comes out.

I don't like open spaces, but being all alone in an office seems pretty
horrible as well: Wouldn't you rather work from home, then? Ah, you say, but
then people can't knock on your door to ask questions. Which, again, seems
like it's making things worse, I don't want to sit in a closet waiting for
people to knock on my door...

Around here we work on laptops, coding questions are handled via irc, most of
the devs (not that many, <10 total) share a room but there's plenty of space
for going elsewhere to get privacy when the hack is strong.

edit: laptops with monitor/keyboard at workstations, that is. I don't want to
imply that everyone is hunched over a laptop all the time.

------
T-hawk
Using whatever editor or CLI you want sounds like a nice touch, might not be
so expected in such a big company.

Does this extend to browsers? Is it open to use Firefox or Opera or Chrome as
your main personal web browser, or is there a corporate mandate to use
Internet Explorer on every desktop within Microsoft?

(I know the OP on wordpress may not read this here, but any other input is
welcome)

~~~
ejames
It's typical for Microsofties to use IE, search on Bing, etc. simply for
dogfooding purposes, but it's not a specific requirement.

It does draw some raised eyebrows if you show up at the office with, say, a
personal laptop that's a MacBook and a paired iPhone, but it's at the level of
good-natured ribbing rather than actual managerial disapproval or job
problems. I would usually say "Yes, but I convinced a family member to buy an
XBox 360, so my corporate loyalty karma evens out!"

------
iam
Everyone certainly does not get their own office. The way it works is that
people are given offices sorted by their seniority (years at Microsoft, not
your pay grade). So it goes:

* 2 people in a non-windowed office

* 1 person in a non-windowed office

* 1 person in a windowed office

* 1 person in a corner windowed office.. etc

and people just starting out do end up getting paired up with someone else.

~~~
paulcam
Entirely depends on team and building. I wasn't doubled up until my 3rd year
at MSFT. Even then, it was due to cramped space (bldg 9).

------
anon-e-moose
If developers always have the fastest machines available, how will they test
or care about speed? I hope they have automated benchmarks of common tasks at
least.

(Although it is obviously good to have things compile as fast as possible.)

~~~
boyter
In the case of Windows im sure they have a large test suite which runs
benchmarks over tasks to weed out the non performant areas. Not only that in
the later builds im sure its tested on thousands of systems to ensure that
this code is weeded out in most cases.

Honestly, giving your developers a slow machine to "encourage" them to write
faster code is a fallacy. The average user is not running multiple databases,
multiple IDE's, debuggers, editors, multiple browsers, help documents and all
the other programs they require to get stuff done. By all means make the test
machine match what the users have but invest (yes it is an investment) in a
fast machine for your developers.

If nothing else it will make them feel appreciated which will return more then
the $1000 odd it will cost to spec their machine up from your users base
model.

------
rstraver
It sounds like a startup situation :)

When you've got enough experience - sitting in your little silent dungeon -
you'll find yourself longing for those hectic environments again...

------
projectileboy
The author seems to be pounding his chest about how efficient the MSFT code
world is, but I was struck by how _in_ efficient it all seemed. Is that just
me?

~~~
fierarul
If you think about the human and technical scale of what they are doing there,
it seems pretty efficient to me.

------
fibonacci1
I have interned at Microsoft. No intern has a private office. In fact, many
interns do not work in offices at all.

~~~
paulcam
Team/building dependent. On my team, the vast majority of interns get a
private office. When they get doubled, they get doubled into a window office.

------
listrophy
I turned down Microsoft when they recruited me in college. Wow, what a great
decision.

Now, I run a software firm where no one has an office, everyone pairs
(including owners and interns), we have a /slightly/ better ratio than 1 test
per 100 SLOC, etc.

~~~
adbge
> we have a /slightly/ better ratio than 1 test per 100 SLOC, etc.

Has TDD really resulted in _this_ becoming a status symbol? :P

~~~
nostrademons
Problem is that all status symbols in the programming world are meaningless,
so in the absence of any useful metrics, we latch onto useless ones.

Tests/LOC at least measures _something_ , even if it is imperfect. It's
probably better than measuring LOC themselves, which are often a long term
cost for the company, not a benefit.

~~~
stuhacking
but, Tests/LLOC seems to state even less than LLOC. LLOC gives an indication
of the complexity of the application (or a component).

All Tests/LLOC seems to state is that some lines of code exist and
potentially, some test cases are testing them.

~~~
nostrademons
It's also a measure of test granularity, i.e. for a module of given
complexity, how many test cases cover it?

~~~
stuhacking
We can see _what_ it measures. I'm just saying that it's a pretty nebulous
metric when used out of context. Taking 2 numbers and condensing them into 1
(à la Megapixels) is an exercise in marketing.

------
kingsidharth
Is it just me or he needed to use some Spell. Check? Oh he was on Windows, as
buggy as it gets (code or writing).

~~~
Johngibb
As much as this comment nosedived at the end, I have to agree that his typos
and misspellings detracted from the article for me. A basic proofread would
have prevented this from feeling like it wasn't too well thought out...

