January 19, 2010
Atul Gawande Visits MicrosoftAtul Gawande, who I have blogged about in the past, came to Microsoft last Monday on his book tour for The Checklist Manifesto.
He spoke for a little bit and then took questions. If you've read his book there wasn't anything particularly new in what he said, although it was interesting to hear some of the stories directly from him. He has said that about 20% of doctors resist the idea of checklists, so during Q&A I asked him about the adoption of checklists (and similar moves away from "fighter pilot" mode) among resisters in industries like aviation and construction. He said that part of it was the older generation retiring, but there also tended to be a point where the government stepped in and imposed rules, which then led to everybody needing to adopt a checklist.
I realized, however, that we have been looking at checklists for software in the wrong way. A typical checklist we have from EE might be a code review checklist which had items like:
- Do all variables conform to the team's coding conventions?
- Does every method have an XML comment describing its return code?
- Does the code avoid using reinterpret_cast?
The problem with these items is that each of them is something you have to check for on almost every line, which means you wind up looking at a little bit of code, then the checklist, then the code, etc. Or you wind up memorizing the checklist, but if you can hold all that stuff in your mind, you might forget something occasionally, which is what a checklist is designed to avoid. As Gawande explains, checklists are not meant for "heat of battle" kind of checks--that is where your existing expertise come in.
Instead, checklists are for use during "pause points"--natural points where people have a moment to consider a checklist, such as the beginning and end of activities--and are for checking the very simple things that "everybody knows" but that people sometimes forget because they have so much to keep in their heads. The proper way to construct a code review checklist would be to conduct a root-cause analysis of issues that slipped through earlier code reviews, but following Gawande's advice, it would include items like:
- Has the reviewer rebuilt the code from the shelved files to ensure that every change is included?
- Did the author email his unit test results to the reviewer?
- After the review, did the reviewer email his results to the coderev alias?
I'm making that up, but hopefully you get the idea. These are really simple things that people mostly do right, but sometimes mess up, and there is a natural time to do them that is NOT when your head is buried in the code.
January 05, 2010
The Importance of ExperimentingAtul Gawande recently wrote a New Yorker article entitled "Testing, Testing". He explains how agriculture in the United States became dramatically more efficient in the early part of last century. The government did not come in with a central plan for how to run farms; instead, it found farmers willing to experiment with new ideas, and then it used their successes to promote the ideas that worked. As a quote in the article explains, "What a man hears he may doubt, what he sees he may possibly doubt, but what he does himself he cannot doubt." Gawande is using this example to explain that the proposed US health care bill, which is small on big ideas for reducing costs, but big on small pilots for reducing costs, is not such a bad thing. But as is often the case with the medical profession (see here and here and here and here), there are a lot of parallels with software development.
In Engineering Excellence at Microsoft, I think we often come across as being the central government telling other people what to do, with no experimental results to back it up. Here is a recent comment on Mini-Microsoft: "What's up with the EE team? I was listening to a presentation by Alan & most of his ideas are old (some blatantly taken from James Whittaker). Can we get some originality & accountability in that team?" Now, we have been talking about piloting more things ourselves (and encouraging others to pilot more things), but the point does hit home, and is especially important at Microsoft, about which the quote (from Gawande's article) "there was a deep-seated fear of risk and the uncertainties of change; many farmers dismissed new ideas as 'book farming.'" could be directly applied (c/farm/engineering team/). People at Microsoft have a virtually infinite ability to convince themselves that their team faces unique challenges, and therefore they have nothing to learn from other teams that have been successful (I think Steven Sinofsky's book is partly about the challenge of fighting that belief among the different teams in Windows).
Gawande writes, "There are, in human affairs, two kinds of problems: those which are amenable to a technical solution and those which are not." As it happens I recently took a course on "Adaptive Leadership", based on the book Leadership on the Line, which makes the same distinction--it talks about "technical challenges" and "adaptive challenges", with the adaptive ones being the tough ones that don't have a known solution. My favorite quote from the book is: "Leadership is the art of disappointing people at a rate they can tolerate" (see examples under "health care bill, disappointment with Barack Obama over"). The claim is that solving adaptive challenges, by their nature, is going to be disruptive: things that can be solved by business-as-usual are by definition merely technical challenges. I think many in EE expect that we can figure out all the answers on how to develop software and all we have left is the technical challenge of spreading the word. But the more time I spend here, the more I am convinced that the pilot program approach that Gawande talks about is a much better way to go. I think this will disappoint some people; hopefully they will be able to tolerate it.
January 01, 2010
The New New Microsoft StoreDuring the holidays I was down in California and we went to the Shops at Mission Viego mall to eat at Ferrell's. While we were walking through the mall, I was intrigued to see this banner hanging in an atrium:
Yup, sure enough this was the location of one of the new Microsoft retail stores--only the second one in the country, according to Wikipedia.
Microsoft had done a good job advertising the store in the mall; in addition to the banner, those colored signs on the railing glass are ads for the store, and there were also stickers on the food court tables and ads on electronic billboards inside the mall. This is the front view of the store:
and here is the inside:
The merchandise is set up on tables, with an attempt to categorize them, for example these are "Medium laptops":
There is a place to get questions answered:
the obligatory Surface machines:
and the also-obligatory Xbox demo area set up to look like a living room (which they had also replicated in a seating area in the mall in front of the store, I assume as part of the initial advertising for the place):
Naturally, you might draw some comparison to a certain other store, such as this example which happens to be just a few locations down the mall from the Microsoft Store:
(Let's run that Microsoft Store interior shot again for comparison:)
While there are some obvious differences (our tables are natural wood, theirs are white), there are also similarities: the way the merchandise is laid out, the army of bright-t-shirt-wearing staffers, the answer station, etc. (the store also has a small theatre in the back, which I haven't seen in Apple stores, where they give talks on topics like sharing photos and intro to Windows 7).
I don't think there is anything wrong with this, any more than it's wrong for a Honda showroom to look a lot like a Toyota showroom. Apple has figured out a good way to get people to buy computers and get problems fixed, so why not take a similar approach? In fact, when I think back to my teenage years haunting computer stores like Futur Byte in downtown Montreal, it's more amazing that those store were able to sell anything at all: they had some machines laid out to play with, but nobody to show them to you. It was entirely geared towards people who already knew what computer they wanted and just needed a place (in those pre-Internet days) to make the actual purchase. Presumably the owners of the stores, who were computer experts themselves, had the thought "What kind of store would I want", and the answer was what they produced.
Now people realize that a lot of folks who are buying computers are a bit hesitant about which one to buy, and appreciate having a cheerful t-shirt-clad assistant walk them through the decision. In fact, the real precedent for this type of store is a car dealer, but more like a car dealer in the old days, when there was a proliferation of models that changed from year to year, and no readily available source of information on them. In this environment a salesman expected to begin every customer conversation with some variant of "So, what will you be using the car for?" (In a flip-flop which I think might actually meet the book definition of irony, the automobile industry has changed enough, due to consolidation and other factors, that a car dealer is more like an old-fashioned computer store--every time I've bought a car I went into the dealer knowing exactly which model and accessories I wanted, and only needed the salesman to write the order).
As it happens, Microsoft tried the direct retail route once before, with a store called microsoftSF in San Francisco which opened in 1999. You can read the press announcement about the opening, and also an article about it shutting down a couple of years later. It must be ordained that I stumble upon every Microsoft attempt at a retail presence, because I also visited the microsoftSF store, presumably about ten years ago. As proof, I offer this photo of a mousepad I bought there:
Here is a (blurry cell-phone camera, like all the others) close-up of the logo:
You can tell from the press release about microsoftSF, which matches my recollection, that back then the store was set up to sell Microsoft software; it wasn't trying to sell entire solutions like the new Microsoft Stores are. I think the new approach is the right one and I expect the store, which was quite busy when I visited, to be successful. The theatre idea, in particular, is good enough that I expect Apple to borrow it back from us.
The only quibble I have is with the "Microsoft Signature" brand, which is marketed as a mysterious special sauce that we include on computers sold at the Store. I couldn't see anything on the table displays that explained what it was; in a booklet they handed out detailing the services available at the store, it explains that the computer is "modified for even more reliability and streamlined to be as fast as it can be." Then it lists the various Microsoft software that is included with the Signature models--Windows Live Essentials, IE8, etc. In other words, as this geek.com article points out, the computers come without the manufacturer's crapware, but they do come loaded with our stuff...I won't call it our crapware, since it's basically things that a) you would likely download very soon anyway or b) things that shouldn't slow down your computer if you don't use them. But still, to continue the car dealer analogy, to a typical consumer it might sound A WHOLE LOT like the rust-proof undercoating and window tinting that car salesman try to pack onto your new car (for your benefit, natch), and which people nowadays have mostly been trained to say no to, on the understanding that the dealers are really using it to further their own aims (a last attempt to extract $$$ from your wallet after you've used your Consumer Reports dealer cost information to squeeze their profit to a minimum). I know the stuff is free and is actually useful to a lot of people, but I think it might be best if Microsoft rebadged it as an option (similar to how Store employees will install, for free, any other software that you buy at the same time as the computer)--rather than an unadulterated benefit.