What's it like to work at Microsoft? Better still, what do the people who write software at Microsoft actually do? This annotated collection of software development columns, originally written for internal consumption, is a fascinating view of what's infuriating, what's inspiring and what's plain bizarre (Frisbee golf morale events, for example).
Hard Code calls itself "the brutal truth about coding, testing and project management", and there's lots of nitty-gritty detail at that level (written in a feisty, 'I dare you to argue with me' style punctuated by pithy footnotes explaining the more cryptic internal Microsoft references). It's also an intriguing look at how Microsoft develops software, the way the Windows team is run (and how Steven Sinofsky changed that), and what the people who work on products at Microsoft care and argue about.
I M Wright is the alter ego of Eric Brechner, whose title is the rather fluffy Director of Development Excellence, working most recently on Xbox.com services. However, there's nothing fluffy about the writing, or the topics he chooses. For developers and managers this is an excellent guide to hiring, managing and motivating developers and creating productive rather than dysfunctional teams, that you can dip in and out of (helped by the comprehensive index). It's worth reading just for the column on the different approaches of 'techies' and 'fuzzies' (Brechner's typically provocative term for most non-developers) and the suggestions about writing resilient code that restarts if there's an error.
For Microsoft-watchers, it lifts the lid on a usually opaque world where software that millions of people will use is created, tested — and argued over. For every slick PowerPoint or carefully-crafted usage scenario you see promoting a Microsoft product, it's salutary to remember that there are passionate and independent developers hard at work on the code. Official Microsoft blogs give you the story after the features have been decided on and turned into a product. What Brechner is acerbically refining on is the process of making the sausage.
Along the way he busts a lot of myths. Few teams at Microsoft still do the lengthy and stressful 'death march' coding marathons of decades past. Agile programming techniques are common at Microsoft: Scrum is popular, but many teams use a scenario-focused variant called Feature Crews that started in Microsoft Office (and Brechner rightly points out that projects need to be managed differently at different levels of scale and abstraction). Bing and the Microsoft Ad platform are the first teams to do continuous deployment on a production platform — the Bing Geospatial team has new releases every two weeks.
It's interesting to discover how to get a promotion or a pay rise at Microsoft, but more instructive to understand what executives do at Microsoft. This Brechner summarises as conceiving and driving a vision (including convincing people inside Microsoft as well as outside), working on the relationships to make the vision happen, and replanning to keep the vision up-to-date and keep people convinced.
Brechner makes interesting points about how moving to the cloud and services is changing the way Microsoft has to develop products, advocating faster and smaller updates to services to keep up. He also digs into the way the Windows division is run. At the end of Vista development he wrote a column suggesting that "the org chart [should] look like the architecture". The comments here explain how closely that matches the way Steven Sinofsky reorganised the Windows team, with product groups for each major component — each with a group product manager, development manager and test manager reporting to a director of development, who in turn reports directly to Sinofsky. That's a very flat reporting structure, which you can view as giving you either the fewest possible number of managers in the hierarchy or a firm level of control from the top, depending on how you feel about the vision of Windows.
Although his harshest words are reserved for internal idiocy, some of the harder-hitting columns compare Microsoft to Google and Apple. Microsoft is middle-aged, Brechner admits, but he thinks the advantages of maturity outweigh the dangers. "Sometimes we get caught flatfooted by terrific innovation from our competitors… but we've learned not to have quick and thoughtless reactions. Instead we study the problem, deeply understand the larger opportunity and respond with significant innovations of our own… like Kinect."
He's unashamedly convinced that the Microsoft approach is better than what he sees as the top-down micromanagement of Apple or the disjointed developer-directed approach of Google. Having said that, he doesn't pull his punches when it comes to buggy Microsoft code or features that are inconsistent or badly designed. He also makes some excellent points about the worst bugs being introduced by fixes and improvements that are rushed through just before a product is released.
On Apple, he says: "Apple's innovations don't utilize bleeding edge technology. Instead they craft innovative new experiences from proven technology". And while he admits that Google always is making incremental improvements in their products, "they haven't yet shown they can make revolutionary improvements in customer experience". Android he sees as little more than a platform for Google ads because "Google isn't on devices to make the most of the devices; they are on devices to make the most of their ads".
There's plenty of criticism of Microsoft too, and Brechner's discussion of innovation explains a disconnect we've often seen with Microsoft products that include a wealth of new features but don't feel new and fresh. "We are so eager to promote our own individual new, small ideas that we fail to create compelling new experiences. You can't market a plethora of disconnected features to a broad audience, so our individual innovations are left unnoticed."
The popular view of Microsoft is of large, faceless teams of developers, but Brechner points out that "[our] internal mythos is all about the individual hero rewriting the kernel memory protection scheme over a sleepless weekend" and also that "Microsoft's values of independence, passion and boldness are how we see ourselves…not how the company projects itself to customers".
Insularity has always been a problem for Microsoft, although Brechner touches only briefly on this. Other problems that face the company are beyond the scope of the book. Although he promotes important internal changes in development practice and the way development teams are run, Hard Code isn't a blueprint for remaking Microsoft — despite the aggressive tone in which the book is written. But it is a fascinating glimpse inside the cubicle, where the motto remains "change the world through software".
I M Wright's Hard Code: a decade of hard-won lessons from Microsoft, second edition
By Eric Brechner