One person’s bloat is someone else’s feature

Most people are familiar with the way that indicators work in a car: you have a stalk sticking out of the steering wheel, and you knock it up or down depending on whether you want to indicate right or left. After you’ve finished your turn, the indicator will automatically turn off.

On a motorbike, it’s a bit different. There’s a control on the left handlebar, so you move that with your thumb. However, turning is mainly done by leaning, rather than just using the handlebars, so the bike doesn’t really know when you’ve finished; this means that you have to turn the indicator off yourself. When I first took motorbike lessons, the school bike had a horizontal slider for the indicators, with three possible positions: left, centre, right. As you’d expect, left and right would indicate in those directions while the centre position meant that the indicators were off. The snag was that it was quite easy to overcompensate. For instance, I’d intend to move the control from right to centre, but I’d push it too far and wind up indicating to the left. Bear in mind that you wear gloves on a bike, which reduces the amount you can feel, and you can’t hear a gentle ticking noise like you can in a car. Looking down at the controls is strongly discouraged, so I did make mistakes every so often. When I bought my first bike, it was the same model as the school bike (a Suzuki GN125) but from a later year. One subtle change was the way that the indicator worked: the slider control would now spring back to the centre after you pushed it left or right, and to turn it off you pushed it inwards. It’s just a small thing, but it made my life easier for a feature that I used frequently.

It’s unusual to see motorbike adverts at all, but car adverts rarely mention anything like this; they prefer to focus on glamorous locations (and actors). I think there’s a similar issue with computer programs: the most useful changes don’t get much publicity, as compared to the superficial changes (e.g. the “Aero” interface in Vista).

Taking a specific example, when I started my current job I went around to all the machines making sure that the default locale was set to “English (UK)” rather than “English (US)”. In Windows NT 4.0, there’s no way to view the current default, so the only way to be sure was to assign the value I wanted (which required a reboot). In Windows 2000, it does show the current default value, so that’s a nice little improvement which saved me some time. In Windows XP, you can change the default without rebooting, which is even better. Now, I realise that this isn’t going to be a selling point for the average person; how often are you really going to change the regional options on your home PC? Similarly, in a corporate environment you can do automated installations with all the correct settings, so it’s not going to be a long term issue in that situation. Still, it helped me when I was walking to 100 machines in turn, and I’m glad that the Microsoft programmers kept tweaking that functionality.

I’ve often heard people refer to the “80/20 rule”, i.e. the theory that 80% of people only use 20% of the features in a given application; the implication is that you could avoid bloat if you just focussed on that 20%. Personally, I’m a bit suspicious of glib statistics like this. However, even assuming that the rule is true, I agree with Joel Spolsky: it’s never the same 20%. I think that Unicode support is a good example of this.

I’ve been working as a computer programmer since 1994 (on and off), and for most of that time I’ve been writing in-house applications. The key advantage of these is that I know a lot about the target environment, e.g. what version(s) of Windows they’ll be using. However, at my last job I wrote an application which was deployed in various foreign countries, so it had to be localised. The German version was pretty straightforward, since I just needed to load/save strings in a different language. However, the Korean version was a lot more complicated, due to character sets. The basic idea here is that you replace each letter with a number when you save it, e.g. “A” is 65. In ANSI, there are 256 possible letters, so that’s enough room for the whole of the English alphabet (upper and lower case), along with digits, punctuation marks, and a few spares. For other European languages (e.g. Greek or Cyrillic), you can use a different set of letters, but still keep the total number under 256, so that’s fine. However, in the “CJK” Asian languages (Chinese/Japanese/Korean), there are simply too many symbols for that. The original solution was to have different versions of Windows for different countries: the English version would use ANSI, while the Asian version would use MBCS (Multi-Byte Character Set). That’s ok, as long as you don’t want to transfer data files between the two platforms. If you do want to send files back and forth, it’s nasty. So, enter Unicode: you have one big set of symbols (letters, numbers, etc.) which can handle every language at once.

Office 97 was the first version to support Unicode, and this had a side-effect: data files now took up twice as much space, because it used 2 bytes per letter rather than 1 byte. That wasn’t a huge problem, given that hard drives are always getting bigger and cheaper, but a lot of people complained about this “bloat”. Presumably they either didn’t understand why the files had grown, or they just didn’t care, since this wasn’t a change that benefitted them directly. There was an interesting article in the Wall Street Journal in 1999, talking about Microsoft adding Unicode support for polytonic letters (from Ancient Greek). The entire article is quoted here (probably in breach of copyright), and I particularly liked this excerpt:

And while it may not earn Microsoft a lot of money, it has earned its Greek-based employees new respect. “When my mother heard about this, she told me that she was proud of me,” said Christodoulos Papaphotis, 28, product manager for Office and Windows at Microsoft’s Greek unit.

The key point here is that if you’re writing software with a large customer base then that will affect your priorities. Here are a few interesting articles by Microsoft employees which illustrate that principle:

Why isn’t my time zone highlighted on the world map?
In Windows 95, you could click on a world map to choose your time zone. However, certain national borders are disputed, which led to the fun and games of geopolitics…

How many Microsoft employees does it take to change a lightbulb?
In a big product like Windows, you can’t just change a few lines of code; this change has to be documented, tested, etc. (There’s a similar post here: *bilities.)

The UI design minefield – er… flower field??
I used to play Minesweeper a lot on my first PC, but I hadn’t tried it lately. It turns out that it’s still there on Vista, along with some improved graphics and sound effects. However, some people felt that it was insensitive to the victims of real landmines, so you can now change the appearance to be a flower field instead.

Leave a Reply

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