top | item 2269988

Working at Microsoft – Day to Day Coding

288 points| there | 15 years ago |foredecker.wordpress.com | reply

164 comments

order
[+] boyter|15 years ago|reply
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.

[+] jasonkester|15 years ago|reply
Don't sweat it. We all worked there for a couple years.

It's called "getting experience", and the key is to remember you're supposed to move on after you've built enough stuff to demonstrate your worth to the next place. This is what the beginning of everybody's development career looks like.

Grit your teeth and get through it. It gets good later on.

[+] thaumaturgy|15 years ago|reply
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.

[+] mfukar|15 years ago|reply
What about new machines running Windows XP? That's just sad.
[+] megablast|15 years ago|reply
You choose were you want to work. Lots of places do this, my last few places in small firms bought me brand new computers when I started, and let 2 let me choose exactly what I wanted. It depends how important the company sees IT/how good a manager you have.
[+] latch|15 years ago|reply
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...

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

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|15 years ago|reply
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.

[+] paulcam|15 years ago|reply
I think you might be misinterpreting the first post you linked. He's not bragging about how complicated it is. He's also not complaining about how tricky it is. There are always things in the Windows org that could use improvement (otherwise, I'd be out of a job). However, the vast majority of processes exist to fulfill requirements that very few software projects have to deal with.

Consider that Windows ships in over a hundred languages to hundreds of millions of people. I'm not sure how many languages Linux ships in (I'd bet quite a few), but Linux contributors don't have to worry about getting arrested for drawing map lines wrong: http://blogs.msdn.com/b/alexbarn/archive/2004/08/20/217602.a...

Do we ship software without testing? No. Do we ship software that isn't globalized? No. Do we just hack something together, check it in, and call it a day? No. These aren't the kinds of practices that lead to a stable platform.

Mistakes get made (at all levels of the management chain), but they tend to be the exception in my experience.

[+] kulkarnic|15 years ago|reply
Well, you are confusing "complicated" with "difficult". While this is true in general, automation reduces the difficulty of working with a complicated system.

For instance, the build system is extremely "complicated". But all you really need to do is to make sure your code compiles, you pass all your local tests, and the BVTs, and you are good to go (oh, and a code review; anyone who objects to a code review is probably shouldn't be coding).

When, you, as a developer, satisfy those local conditions, the system automatically works at the global level.

Don't get me wrong, complexity is an evil that I'd rather avoid, but it is a necessary evil for creating systems that are useful in the real world; and it is an evil that can be tamed with automation.

[Full disclosure: as a former MSFT employee, my thoughts are heavily influenced by the company.]

[+] bkhl|15 years ago|reply
Those blogs were posted in 2003 and 2006. We are in year 2011. 5 years in tech industry is like 20 years in other industries. Just sayin'
[+] pedalpete|15 years ago|reply
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.

[+] pacifi30|15 years ago|reply
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.

[+] plinkplonk|15 years ago|reply
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)

[+] jdp23|15 years ago|reply
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.

[+] stevenbedrick|15 years ago|reply
I just started a post-doc position, and for the first time in my career have my own office, and quite a nice one, at that. It is absolutely fabulous. Besides the obvious benefits, the biggest unexpected positive aspect of having my own office is that I can have a discussion with a student or co-worker without worrying about disturbing those around me.
[+] hackinthebochs|15 years ago|reply
>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.

[+] johnbender|15 years ago|reply
"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.

[+] dikbrouwer|15 years ago|reply
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...
[+] Locke1689|15 years ago|reply
I shared an office in one situation, worked in an open space in another, and had a private office in a third. Private office was by far the best situation. Being able to grab complete silence when necessary was amazing. Private offices end up being the best about 90% of the time. When you do need to collaborate, conference rooms are available and using laptops isn't hard. Most offices can also support about 2-3 other co-developers with ease.

If I had a choice I would choose a private office every time.

[+] rdouble|15 years ago|reply
I've worked at startups with open plans for the past 12 years. At every one, it starts out ok when there are less than 10 people. As soon as there's about 20, almost all of the important programming work is done after hours when all the loud people are no longer there. The only thing that gets done during the day (programming wise) is putting out fires. I've come to the conclusion that half the reason startups require "insane hours" is because during the day, the programmers are distracted and only working at 20% capacity.
[+] maximilianburke|15 years ago|reply
I've done both and much prefer offices. It's much easier to collaborate in an office than it is to drown out distracting noise from a shared workspace. Offices don't keep you from being able to swing by someone's desk or have someone drop by yours, unless you shut your door for a reason.

My current area at work is open and I have to on occasion bring ear plugs to keep the noise down to a level where I can concentrate. There are group meetings, conference calls on speakerphone, and loud personal conversations happening all the time. IMO, if it comes to needing ear plugs then the one purported benefit of working in an open area is lost since you can't really be sharing/collaborative if you've closed yourself off.

[+] plinkplonk|15 years ago|reply
"The author seems to celebrate a private office. Care to share your opinion? I'm curious..."

From experience, my most preferred to least preferred office options are

(1) Work from home (2) private soundproof office with a door (3) shared sound proof office (2 or 3 people in a medium/large room) with a door(4) open work spaces with a maximum of 5-8 people (5) standard cube (6) crowded and noisy "open work spaces" where you can't hear yourself think / get interrupted all the time, especially the "agile" version with enforced pairing and the "buzz of conversation" and so on.

The best options give you silence. The least inundate you in noise.

[+] absconditus|15 years ago|reply
In my experience open spaces are preferred by those who are less competent and want to bother me all day with questions.
[+] theoj|15 years ago|reply
The idea is that developers should have a quiet, distraction-free space to do their coding. With open spaces and cubicles you hear other people's conversations and you cannot reach the deep focused attention that you need to produce good, bug-free code.
[+] petercooper|15 years ago|reply
Different strokes for different folks. And not only that, sometimes people vary in their preferences depending on the context. I like working alone at night most of the time but sometimes a busy coffee shop really does the trick.
[+] SkyMarshal|15 years ago|reply
It's all explained in the book Peopleware, along with years of data to back the conclusions.
[+] seanalltogether|15 years ago|reply
I'm right there with you. The informal collaboration possible in an open space is so much more productive for me.
[+] redthrowaway|15 years ago|reply
Ideally, I'd like both: an open space to collaborate in, and a quiet place tucked away from interruptions and distractions to code in.
[+] duhmain|15 years ago|reply
Open office spaces are great! For socializing, that is. If you actually want to get work done, peace and quiet is a must.
[+] prodigal_erik|15 years ago|reply
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|15 years ago|reply
4 PMs to 5 devs seems like overkill. why do this?
[+] whakojacko|15 years ago|reply
Not sure why, but from what I hear from friends at MSFT, an approximately equal number of devs, qas, and pms is very standard.
[+] sbierwagen|15 years ago|reply

  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|15 years ago|reply
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.
[+] krig|15 years ago|reply
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|15 years ago|reply
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)

[+] iam|15 years ago|reply
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|15 years ago|reply
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|15 years ago|reply
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.)

[+] rstraver|15 years ago|reply
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|15 years ago|reply
The author seems to be pounding his chest about how efficient the MSFT code world is, but I was struck by how inefficient it all seemed. Is that just me?
[+] fibonacci1|15 years ago|reply
I have interned at Microsoft. No intern has a private office. In fact, many interns do not work in offices at all.