Why’d Vista take so long to produce? Here’s one explanation.

Software developer Joel Spolsky wrote a very interesting article on how ridiculous the user interface for shutting down your PC is under Windows Vista:

I’m sure there’s a whole team of UI designers, programmers, and testers who worked very hard on the OFF button in Windows Vista, but seriously, is this the best you could come up with?

Every time you want to leave your computer, you have to choose between nine, count them, nine options: two icons and seven menu items. The two icons, I think, are shortcuts to menu items. I’m guessing the lock icon does the same thing as the lock menu item, but I’m not sure which menu item the on/off icon corresponds to.

On many laptops, there are also four FN+Key combinations to power off, hibernate, sleep, etc. That brings us up to 13 choices, and, oh, yeah, there’s an on-off button, 14, and you can close the lid, 15. A total of fifteen different ways to shut down a laptop that you’re expected to choose from.

He goes on to suggest possible ways this could have been simplified right down to a single button, though I have to admit I’m not sure what’s wrong with the way Windows XP handles things already with two icons on the start menu—Log Off and Shut Down—which provide you with a few additional options when you click on them. Two clicks, tops, and you’re done.

Anyway, the article is particularly interesting because it prompted a former Microsoft programmer who worked on that very feature by the name of Moishe Lettvin to write up a blog entry in which he explains how working on this rather small bit of code required a small army to implement:

So just on my team, these are the people who came to every single planning meeting about this feature:

  • 1 program manager
  • 1 developer
  • 1 developer lead
  • 2 testers
  • 1 test lead
  • 1 UI designer
  • 1 user experience expert
  • 8 people total

These planning meetings happened every week, for the entire year I worked on Windows.

In addition to the above, we had dependencies on the shell team (the guys who wrote, designed and tested the rest of the Start menu), and on the kernel team (who promised to deliver functionality to make our shutdown UI as clean and simple as we wanted it). The relevant part of the shell team was about the same size as our team, as was the relevant part of kernel team.

So that nets us a conservative estimate of 24 people involved in this feature. Also each team of 8 was separated by 6 layers of management from the leads, so let’s add them in too, giving us 24 + (6 * 3) + 1 (the shared manager) 43 total people with a voice in this feature. Twenty-four of them were connected sorta closely to the code, and of those twenty four there were exactly zero with final say in how the feature worked. Somewhere in those other 17 was somebody who did have final say but who that was I have no idea since when I left the team—after a year—there was still no decision about exactly how this feature would work.

By the way “feature” is much too strong a word; a better description would be “menu”. Really. By the time I left the team the total code that I’d written for this “feature” was a couple hundred lines, tops.

But here’s how the design process worked: approximately every 4 weeks, at our weekly meeting, our PM would say, “the shell team disagrees with how this looks/feels/works” and/or “the kernel team has decided to include/not include some functionality which lets us/prevents us from doing this particular thing”. And then in our weekly meeting we’d spent approximately 90 minutes discussing how our feature—er, menu—should look based on this “new” information. Then at our next weekly meeting we’d spend another 90 minutes arguing about the design, then at the next weekly meeting we’d do the same, and at the next weekly meeting we’d agree on something… just in time to get some other missing piece of information from the shell or kernel team, and start the whole process again.

You think that’s impressive, go read about the central code repository system Microsoft uses for an even better understanding of why it took so long to develop Vista. This prompted Joel to follow up with another comment on Microsoft’s problem:

Every piece of evidence I’ve heard from developers inside Microsoft supports my theory that the company has become completely tangled up in bureaucracy, layers of management, meetings ad infinitum, and overstaffing. The only way Microsoft has managed to hire so many people has been by lowering their hiring standards significantly. In the early nineties Microsoft looked at IBM, especially the bloated OS/2 team, as a case study of what not to do; somehow in the fifteen year period from 1991 – 2006 they became the bloated monster that takes five years to ship an incoherent upgrade to their flagship product.

I’ve played around a bit with the Release Candidate of Vista and I have to admit that the new shutdown interface left me perplexed for a moment or two until I figured out where the hell the menu was and the overall experience left me wondering why it took 6 years to develop Vista. There’s certainly improvement in many parts of Vista, but there’s also plenty that could be improved upon and given the time it took to put together you’re left feeling like it should be a helluva lot better rather than just somewhat better in certain areas. Now I know why I had that feeling.

In the long run it may turn out that the biggest obstacle to Microsoft’s continued dominance of the OS market may come from within Microsoft itself. If the development process continues in this vein then the length of time between new OSes will only grow and that will open up opportunities for someone else to hit on an innovation that makes switching away not such a crazy idea.

8 thoughts on “Why’d Vista take so long to produce? Here’s one explanation.

  1. I switched to Ubuntu Linux a couple months ago, much better than Microshit Broken Windows when you figure it out, just has some compatability issues, and only for things that are made for Windows.  Comes with a bunch of free stuff too.  Go open source!

  2. sml –
    I had some trouble with Ubuntu causing data corruption on a separate physical drive.  It caused me to have to completely format the drive on two separate occasions because the OS got “stuck” writing to the drive, and the second time I lost a significant amount of data. 
    I really liked Ubuntu, though it does still have a steep learning curve and the average user will just find it terrifying.

    I finally came to the conclusion that I will use whatever is easiest at the end of the day, and unfortunately, that is still Windows.  Most of the open source software on Linux is currently available on Windows as well, and my copy of Windows XP cost me less than the price of a sandwich at some places.  Unfortunately I’m gonna go with the argument that most users will use, that is to say, Windows is just easier to use.

  3. I’m still learning Linux myself, and I’ve never had any problems with data corruption on Ubuntu (Dapper Drake distro), although I only have one hard drive on my computer. I did screw up my install and had to format my computer (but had stuff backed up) and Ubuntu does require command line knowledge. The ironic thing that I’ve heard is that Ubuntu is a beginners linux distribution.

    I have World of Warcraft set up on Linux (that was a real pain in the ass) and have no need for a windows partition. Yes, people are going to use what is most familiar with them (AOL, for example), but learning Linux has been rather rewarding, but I can see where you are coming from. I couldn’t find anyone in town who used linux so I ended up having to find out everything by myself; a very interesting experience.

  4. SML: that’s awesome that you took the step to learn Linux.  Good for you.  If you are currently working in the IT field, this also gives you a leg up when applying for jobs in the future.

    Ubuntu is the Linux for noobs.  While knowing the command line helps, especially when doing administrative tasks, you don’t have to know any command line stuff to do browsing or word processing.  This is one main reasons Ubuntu was created, so now IT people like myself have a stable OS to give to our grandparents and others.  And I know what the retort to that is, but if the user, such as my grandparents, haven’t yet become indoctrinated into Windows, they will have just as easy a time using Windows, MAC, or Linux.  Why not give em the free one?

    Out of all the Linux distros I have used Ubuntu is the easiest to use, and has some of the greatest support and third party apps I have seen.  The only reason I am going to teach myself Suse in the near future is because it is one of the more common Linux Server distros.

    Sort of off topic, I think it would be great if our kids learned Linux in school rather than MS.  My taxes I send to the schools go straight to M$‘s pocket since most school districts are using M$.  And if you can’t step away from Windows, that is fine I understand, but why not at least use Open Office instead of M$ Office.  The differences are truly minimal and the children can still learn the same things they would learn in a Windows environment.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.