Fifteen Ways to Shut Down

[Updated Below] There are 15 ways for someone to shutdown a laptop running Windows Vista. This adds unwarranted complexity to our software. How can we avoid the same problem in our software?
Hat Tip
Joel (on Software) has an article where he lambastes the Vista team for providing 9 different ways to stop using the computer. Add in the hardware options on the laptop (like Fn F3), and closing the screen down or hitting the physical power button, and you get to 15 different ways to shut down.
Inevitably, you are going to think of a long list of intelligent, defensible reasons why each of these options is absolutely, positively essential. Don’t bother. I know. Each additional choice makes complete sense until you find yourself explaining to your uncle that he has to choose between 15 different ways to turn off a laptop.
Joel Spolsky
Make Everybody Nobody Happy
Joel posits that the unreasonable number has grown out of the desire to make everybody happy. We know that too many features makes everyone unhappy. This bloated list of choices is just one manifestation of too-many-features, and it doesn’t make anyone happy.
Inadvertantly Causing The Problem
It is pretty easy to imagine how we might inadvertantly cause this problem.
A structured requirements approach allows us to track and manage different requirements, as well as the implementation of those requirements. In Joel’s example, imagine requirements like the following:
- User secure the computer in order to walk away from it without other people getting access.
- User can shut down the computer such that it will stop consuming power.
- The computer will support rapid switching from one user to another.
Each requirement could drive an independent solution approach. As Joel points out, each requirement, evaluated in isolation, may lead to a different solution. The problem is that we are finding local optima, and not looking at the problems introduced by the complexity of supporting all of these solutions.
Avoiding This Problem
How can we avoid this sort of problem in our own product development? A holistic view of the proposed solution is required to assess if there are too many features. Prioritization of those features will help us reduce the number to a reasonable level.
Incorporating elements of interaction design into our solution approach may be the best way to do this (short of abandoning a structured requirements approach).

Each of the shutdown scenarios leads to a functional requirement. Each element of program design leads to one of the many ways to shut down or lock or restart the computer. Addressing the personal goals of each persona provides us with a cross-feature, holistic perspective. If our target audience includes Joel’s uncle, then we can make sure that our design approach accounts for the appropriate level of complexity and choice.
[Update]
Moishe Lettvin, one of the developers on the shutdown team for Vista, formerly at Microsoft, has written an article about the organizational and situational challenges faced by the team. He titled the article The Windows Shutdown Crapfest. That should give you a feel for how the now-Googler feels about the experience. There were 43 people involved, and they spent over a year. And the source code control system was frightening. Check out the comment thread on Moishe’s article too - it includes comments from other Microsoft and knowledgable anonymous people. Hat Tip to Scoble. Also, a followup from Moishe.
Summary
Multiple requirements can lead to multiple, locally-optimized solutions or features. A holistic view needs to be taken to assure that we aren’t introducing too much complexity with these variations of similar features. Interaction design gives us a big-picture perspective to make sure we aren’t making our software too hard for our target users to use.


(5 votes, average: 4 out of 5)

November 25th, 2006 at 12:57 pm
Feature ticklist trap…
Microsoft needs Windows Vista to be a success, and it will only be that if seen by users as being a worthwhile step forward. But it needs to fight its way back out of the feature ticklist trap if it wants to ensure user adoption. I hope that there ar…..
November 27th, 2006 at 10:44 pm
You make a fundamental assumption that the various shutdown states are redundant. They aren’t. For better or worse, PC architectures (including Mac) have a large number of not-in-use states, each consumes substantially different amount of power. Joel missed this big time. Imagine a busines guy coming in and stating “you know, there’s not much difference between TCP and UDP, and if someone just thought about things they could be merged and that would make programming so much straightforward.”
Joel’s solution is to collapse log off and power off together? In other words, if you wanted to log off, you’d re-start the machine? Are you kidding me?
Vista’s solution makes complete sense: One key access to a state that 99% of the folks are looking for, and an extra mouse click if you want an advanced that that requires a bit of intelligence to understand. This is how all consumer products are designed. My wife has never been below the top level menus on Tivo. I have. She will never venture beyond the top level power button choice on Vista. I will.
PS. If you only knew how persona-driven MSFT was, you’d realize how simplistic your argument above was.
November 28th, 2006 at 1:53 am
Thanks, anonymous. FTR, I never assumed the states were redundant.
Are you suggesting that it is a bad idea to look at the overall cost of having 15 ways to shut down versus the benefits of those 15 ways?
Or are you suggesting that this analysis was done, and the decision was still to have 15 ways? I did not get that impression from Moishe’s article.
November 28th, 2006 at 2:03 pm
Redundant ways to achieve the same goals is not *necessarily* a bad thing, as long as the shutdown code itself does not appear in multiple places (and I would bet that the code is not redundant).
Someone might say “for ease of use, it sure would be nice if I could shut down the system by doing X”. You can explain that he can do Y instead, but X might actually make sense.
And no, your uncle does NOT, I repeat NOT, have to “decide between 15 ways to shut down the system”. Explain one or two of them. Or if he discovers one way on his own, that’s fine; let him use that.
I don’t have to choose between 500 programming languages when I write software; I don’t know how to code in 495 of them. And I don’t plan to learn.
Don’t claim something is complex when it might not be.
December 4th, 2006 at 9:16 pm
“Joel’s solution is to collapse log off and power off together? In other words, if you wanted to log off, you’d re-start the machine? Are you kidding me?”
First, no, he didn’t say a “log-off” would imply a “power-off”.
Second, and more importantly, his point is “to log off” is not the goal of the USER, it is the translation of the goal (I’m done for now. Goodbye.) into technospeak and artificial distinctions.
Yes, there are multiple different power states between “off” and “on”. Should a user be deciding which state to go into? Why? *I* don’t care about any of those power states. I, honestly, can trust a well-crafted algorithm to figure out that the longer I’ve been away from the computer the further down that slope of power states it can go, eventually hitting 100% fully “off” at some point.
He misses a few uses here: first of course being that you, the user, often know more than the computer does about when the computer will be needed again, so you know better than it if hibernate makes more sense than sleep right now. Still, I think he’s a lot closer to being right than any solution which exposes the myriad of hardware power states to the user for direct (and, quite frankly, ignorant) control.
What’d be *better* would be some way to indicate, “I’m going to be gone for three hours. See you then.” or “I want you to be up and running at 6:00 AM sharp!” Because that’s what the computer needs to know in order to make the right decision about how far asleep it should go. The UI on that, though … good luck!
December 4th, 2006 at 10:06 pm
Thanks for the deep thoughts guys - and thanks for checking out Tyner Blain, hope to see you around more!
Really is an interesting issue, and one that causes us to think about how important the “unimportant” things really are.