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).

ID and Structure

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.


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.

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.

10 thoughts on “Fifteen Ways to Shut Down

  1. 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.

  2. 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.

  3. 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.

  4. “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!

  5. 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.

  6. From an IT administrator’s perspective we need log off, there is no way that Microsoft would ever merge that with a switch user or power off command. It needs to be a seperate command.

    Switching user does allow us to log in as a different user, but without being able to log off, the computer’s resources are still being used on that log in, plus whatever other users are logged in as well.

    Yes, we could just power off and restart and log in as an administrator, but that takes too long. Windows Vista has incredibly quick log off and switch user speeds. Users do not want to be waiting minutes to use their pc’s while the system power’s off and on again. It is far quicker and more convenient to log off, or switch to an administrator log on and then log that administrator login off.

  7. Joel, thanks for chiming in and welcome to Tyner Blain!

    You make a compelling case for why IT administrators have a unique and valuable set of goals, and that they benefit from a different behavior than “normal users.”

    It seems like it would help to hide those administrator-options from a novice user, while making them available to an experienced admin. Something along the lines of being able to right click on an executable and select “Run as…” to take advantage of admin permissions temporarily. I’m not sure what that right answer is, but I suspect it could be easily configured or defaulted (to show / hide) some of the options.

  8. Scott, very good idea, and there is in fact a way you can hide shut down options as per local group policy on windows vista. Not sure if it’s available via group policy on Server 2008 as I use Server 2003. I’d assume it is available in Server 2008 as anything in the local policy of a Vista PC should be available in the group policy of Server 2008.

    Basically, the local policy gives you the option to hide all shut down options except for Switch User, Log Off and Lock. These are far less options than the usual ones available in Vista and I feel it’s quite sufficient for a ‘normal’ user. If they wish to shut down, they can log off and then shut down from the login screen. This policy can be changed for Administrators and Non-Administrators so it’s quite handy.

    To be honest, this debate on shut down options on a Vista PC could go on for ages, and there’s no real definitive answer, but it’s interesting to hear how something so simple as turning off a PC can become so complicated when given too many options.

Leave a Reply

Your email address will not be published. Required fields are marked *