Friday, July 6, 2007

Feature Creep Accelerates Entropy

Many folks cruising around Digg recently have seen the numerous articles pointing to the claims by Steorn that their Orbo device can produce "free" energy, in direct violation of the Second Law of Thermodynamics. Basically, the device claims to produce more energy than it uses.

Scientists everywhere are choking on their degrees, and with good reason. Such a device would be either (a) a ridiculous grab for attention based completely on fantasy, or (b) a radical shift in our understanding of thermodynamics.

But this post isn't about the Orbo device. It's about a key principle of the Second Law of Thermodynamics: Entropy. Specifically, we're interested in how entropy affects software. To see where I'm coming from, however, let's review:

A measure of the amount of energy in a physical system not available to do work. As a physical system becomes more disordered, and its energy becomes more evenly distributed, that energy becomes less able to do work. For example, a car rolling along a road has kinetic energy that could do work (by carrying or colliding with something, for example); as friction slows it down and its energy is distributed to its surroundings as heat, it loses this ability. The amount of entropy is often thought of as the amount of disorder in a system.

entropy. Dictionary.com. The American Heritage® Science Dictionary. Houghton Mifflin Company. http://dictionary.reference.com/browse/entropy (accessed: July 06, 2007).

 

The car, rolling down the road, only has so much energy to work with. Some of that energy is kinetic (forward motion), and some is being dissipated as friction on the tires and by the air blowing past the car. But there's a finite amount of energy involved. If the driver taps the brakes, more energy is transferred to the brakes, but it's the same amount of energy. The car simply slows down, which has the net effect of reducing the severity of an impact with a tree.

So what the heck does this have to do with software?

All software suffers from entropy. You can only cram so many features into it before it has become so large that it has more unusable features than it has usable features. The code itself, at that point, becomes a chaotic mish-mash of bits and pieces of work cobbled together by people who came and went over time, riddled with cracks where their styles, philosophies, and standards didn't quite mesh well. The quality of the source code itself begins to degrade, becoming less and less maintainable, sprinkled with routines, variables, classes, and modules that are never used. The older the product gets, the more pronounced the entropy effect will be, until someone either cans the project, or demands a full rewrite.

Users tend to have intense, often emotional bonds with their favorite products. Those feelings tend to border on the fanatical when those products are easy and simple to use. They get really upset when you unnecessarily complicate them.

Not surprisingly, the products that seem the most resistant to entropy are the ones with the fewest features. They just work. Light switches are a wonderful example of a device that resists the effects of entropy. You just flip the switch, and the light comes on. But then, down the road, someone fancified them with dimmers. Now the knob pops off. Sometimes, the dimmer breaks. You need special bulbs. People cry out for plain switches. So the dimmer rarely gets used. Entropy claimed it.

Toasters, similarly, are a simple device that resist the effects of entropy. Insert bread; push a lever; electrical current is applied to the heating element; the rack pops up, and you have toast. It's simple. But when we complicated it with toaster ovens, microwaves, and bagel toasters, things got tricky. More features, like programmable times, and self-cleaning, and defrosting, and popcorn timers became complex and we couldn't figure out how to use them. So they became unusable. Entropy claimed them.

In software, similar things happen all the time. We toil for hours to get our features just right. We labor over their design, making sure that this feature we've envisioned is perfect, because we know that users will love it, they need it, they absolutely have to have it. But the truth is that users love simplicity. And the more features you add to a system, the sooner entropy will claim it.

Microsoft Word, for instance, has more features than anyone could possibly use in their lifetime. Yet an entire army of people labored for weeks and months to get them just right. Microsoft Office 2007 is a shining example of unusable energy outweighing the usable energy. It's the poster child for the entropy effect among software products.

When you're designing products, as I do for a living, think carefully about feature creep. The fewer features your product has, the better the chances are that those features will be used. Increasing the number of features increases the chances that most of them will be unused. It's entropy at its best.

2 comments:

Anonymous said...

Office 2007? Really? Seriously, have you used it?

I know that sound snarky, but I'm incredulous. The o2k7 team made INCREDIBLE strides towards usability in 2007. I'm suprised you'd call it "a shining example of unusable energy outweighing the usable energy." 2003, certainly. XP, definately. But 2007? It's like the Corvette of office apps.

And regarding the billions of tons of features, they're REQUIRED now. Not because I need them or you need them, but because everyone has a different 10% that they consider to be essential. Since Microsoft wants to sell to everyone, that means they have to have everyone's 10%.

In 2k7, they went to great lengths to make sure that the most used features were prominent and everyone's features were available. I don't respect MS for much, but I respect the HELL out of them for 2k7.

Mike Hofer said...

Actually, I use 2007 every day. I maintain my point that it is a bloated piece of software that contains far too any features for any single user to effectively use.

In fact, I would be willing to wager that an exhaustive review of Microsoft's online database would reveal that there are, in fact, features in Office 2007 that are not used at all, but are merely maintained for the simple fear that someone, somewhere, needs it.

Don't get me wrong. I love Office 2007. But it's got WAY TOO MANY FEATURES. It could use a serious cutting back. But I'm not in any position to decide which features should be whacked. That wasn't the point of the article.

The point of the article was that adding new features increases the likelihood that existing features won't be used. You stretch the productivity of your users over a wider area, and eventually productivity approaches zero. Holes begin to appear. But you still have to maintain that code, and you might just have to architect your software around legacy features that no one uses but still exist in the codebase, impacting developer productivity.

That's software entropy. An increase in features leads to a decrease in usable energy (both to the users and the developers).