« Agile Panic | Main | My Somewhat Lame New Computer »

April 11, 2007

Why I Work at Microsoft

Mini-Microsoft's most recent posts asks why people stay at Microsoft. For me it is pretty simple. Yes, there are the benefits, free soda, great infrastructure, smart people, etc. But the main reason I work at Microsoft is because I think Microsoft has the opportunity to figure out the correct process for engineering large-scale software. We have the people, we have the customers, we have the technical problems.

Now, it's certainly possible that Microsoft will squander this opportunity. It's not clear that all the leadership of the company is interested in this issue, vs. the short-term issue of pushing out their next release by whatever means are necessary. Even in Engineering Excellence, we're not necessarily entirely focused on solving this problem. BUT in the industry I think Microsoft is as good as it gets in terms of being the hope for figuring it out. So here I stay.

Posted by AdamBa at April 11, 2007 10:37 PM

Trackback Pings

TrackBack URL for this entry:


So my first reaction to this is...yawn. But then I read it again, yawned a few more times and have this to say.

First, the caveat about MSFT leadership squandering the opportunity is spot on. And sadly that is exactly what they are doing across multiple divisions. So tell me, do you still stay in the face of continued mis-management of the opportunity?

Secondly, you are making a huge assumption that what the world, or customers, or businesses need is "large-scale software". I'm not sure that is true much anymore. One of the biggest complaints of software companies as they start by bigger customers isn't so much that the software isn't engineered for large-scale business, but rather they often question the financial viability of the small start up. So probably what is needed, here at MSFT too, is more large-scale financial viability and more small, iterative and innovative products that wow customers...AND are financially backed so as to be relied upon.

Posted by: Yawn at April 12, 2007 02:48 PM

From the point of view of analyzing it, having people make mistakes gives you more to look at (that's my answer as an EE person, not as a shareholder). And for better or for worse, Windows, Office, SQL, etc are big pieces of software.

- adam

Posted by: Adam Barr at April 13, 2007 11:11 AM

There is a difference between monolithic and large-scale. The point is, any problems that arise outside you particular area you just wont see or be able to contribute towards without being seen as meddling trouble-maker. Pity the process is not open, because it's easier for them to just cover their ass if they are lazy or incompetent, instead of being fired, trained up to snuff, or doing the work they are paid to do.

Posted by: Uhg. at April 17, 2007 10:18 PM

FWIW, there was a bit of a ruckus a few years back, when someone leaked a couple of documents on Linux and the FOSS movement - loosely labelled as a movement, of course. Those two documents - the Halloween Documents - _did_ in fact prove that Microsoft knew how to analyze large-scale software products and the teams that produced them, as well as produce them themselves.

The problem I and a lot of others had with those two Microsoft documents was that their focus was entirely on putting a competitor in the large scale software field, out of action.

That I think is a major part of Microsoft's current problem. When crushing competitors/opponents becomes _the_ major large scale project of the company instead of solving customers' problems, any company starts slowly winding up - Novell narrowly missed that fate in the nineties, IBM likewise in the seventies and later in the nineties, etc.

With crushing Google, etc, as the main focus, it is a given that Microsoft will squander its opportunities. And that will be entirely Microsoft's problem, and Microsoft's fault. Or rather, that of its leadership.

Posted by: Wesley Parish at April 28, 2007 05:02 AM

Didn't the Linux guys already figure out how a workable process for engineering large scale software? The Linux kernel is over 300 megabytes of course code, and manages to have quarterly releases. (And each of those quarterly releases now merges more lines of code than went in during the entire 2.3 "development series" that turned the 2.2 kernel into the 2.4 kernel over a period of about 3 years. To increase scalability the kernel developers went to a four-tier structure of developer/maintainer/lieutenant/architect and they also make use of modern distributed source control ala bitkeeper/git/mercurial, which is _nice_.)
Developers develop for the same reason bloggers blog ("pixel-stained technopeasant wretches" that we are). And 99% of it's crap (sturgeon's law), but fighting off sturgeon's law is an ancient business model, from book publishers going through the slush pile to what project maintainers and Linux distros do. Cream skim, cherry pick, polish it up a bit, and put out the next issue. The editor's job is to say no, to reject 99% of the slush pile (sometimes with notes on how to fix it, which newbie authors don't always realize is a gold-plated invitation to resubmit).
What Linux has done is nest the layers. Individual developers get three layers of editorial filtering and cleanup to get their code into the kernel: first from the maintainer for a given file, then from subsystem maintainers (I.E. lieutenants), then from Linus himself. And then the distributions have their own editorial passes, which make local changes to get the release out but feed those changes back upstream through the normal submission process. It's all extremely decentralized and scales marvelously.
There are only four business models on the internet: create content (bloggers), host content (youtube), index content (google), and let users interact with each other (guild chat in World of Warcraft). In Linux, we have individual developers dumping patches onto mailing lists, maintainers do an editorial pass to make packages they dump on sourceforge, and distributions like ubuntu do another editorial pass selecting the packages to put out distro releases with. The chat part (freenode and lots of mailing lists) comes in with both development and tech support.
This scales well enough for Ubuntu to put out two complete releases a year, with daily security updates in between, on less than 0.1% of Microsoft's staff. I know Microsoft is trying to figure out how to do that itself, and you tell me it honestly believes it would be coming up with anything new if it did. But this really isn't the case, Linux is doing it now.

Posted by: Rob Landley at April 30, 2007 09:40 AM