I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

October 18, 2007

Are Features The Enemy?

Mark Minasi is mad as hell, and he's not going to take it any more. In his online book The Software Conspiracy, he examines in great detail the paradox I struggled with yesterday-- new features are used to sell software, but they're also the primary reason that software spoils over time.

If a computer magazine publishes a roundup of word processors, the central piece of that article will be the "feature matrix," a table showing what word processing programs have which features. With just a glance, the reader can quickly see which word processors have the richest sets of features, and which have the least features. You can see an imaginary example in the following table:

MyWord 2.1BugWord 2.0SmartWords 3.0
Can boldface textX X 
Runs on the Atari 520 X 
Automatically indents first line of a paragraph X  
Includes game for practicing touch typing  XX
Lets you design your own characters  XX
Generates document tables of contentsX   
Can do rotating 3D bullet points in color  XX
Can do bulleted listsX   
Supports Cyrillic symbol set X  
Includes Malaysian translater X X

It looks like BugWord 2.0 is the clear value -- there are lots more check boxes in its column. However, a closer look reveals that it lacks some very basic and useful word processing features, which MyWord 2.1 has. But the easy-to-interpret visual nature of a feature matrix seems to mean that the magazine's message is: Features are good, and the more the better. As Internet Week senior executive editor Wayne Rash, a veteran of the computer press, says, "Look at something like PC Magazine, you'll see this huge comparison chart. Every conceivable feature any product could ever do shows up, and if a package has that particular feature, then there's a little black dot next to that product. What companies want is to have all the little black dots filled in because it makes their software look better."

Mark maintains that software companies give bugs in their existing software a low priority, while developing new features for the next version is considered critically important. As a result, quality suffers. He trots out this Bill Gates quote as a prime example:

There are no significant bugs in our released software that any significant number of users want fixed... The reason we come up with new versions is not to fix bugs. It's absolutely not. It's the stupidest reason to buy a new version I ever heard... And so, in no sense, is stability a reason to move to a new version. It's never a reason.

It's hard to argue with the logic. Customers will pay for new features. But customers will never pay companies to fix bugs in their software. Unscrupulous software companies can exploit this by fixing bugs in the next version, which just so happens to be jam packed full of exciting new features that will induce customers to upgrade.

Unlike Mark, I'm not so worried about bugs. All software has bugs, and if you accrue enough of them, your users will eventually revolt. Yes, the financial incentives for fixing bugs are weak, but the market seems to work properly when faced with buggy software.

A much deeper concern, for me, is the subtle, creeping feature-itis that destroys my favorite software. It's the worst kind of affliction-- a degenerative disease that sets in over time. As I've regrettably discovered in many, many years of using software, adding more features rarely results in better software. The commercial software market, insofar as it forces vendors to engage in bullet point product feature one-upsmanship, could be actively harming the very users it is trying to satisfy.

And the worst part, the absolute worst part, is that customers are complicit in the disease, too. Customers ask for those new features. And customers will use the dreaded "feature matrix" as a basis for comparing what applications they'll buy. Little do they know that they're slowly killing the very software that they love.

Today, as I was starting up WinAmp, I was blasted by this upgrade dialog.

WinAmp update dialog

Do I care about any of these new features? No, not really. Album art sounds interesting, but the rest are completely useless to me. I don't have to upgrade, of course, and there's nothing forcing me to upgrade. Yet. My concern here isn't for myself, however. It's for WinAmp. For every new all-singing, all-dancing feature, WinAmp becomes progressively slower, even larger, and more complicated. Add enough well-intentioned "features", and eventually WinAmp will destroy itself.

Sometimes, I wonder if the current commercial software model is doomed. The neverending feature treadmill it puts us on almost always results in extinction. Either the application eventually becomes so bloated and ineffective that smaller, nimbler competitors replace it, or the application slowly implodes under its own weight. In either case, nothing is truly fixed; the cycle starts anew. Something always has to give in the current model. Precious few commercial software packages are still around after 10 years, and most of the ones that are feel like dinosaurs.

Perhaps we should stop blindly measuring software as a bundle of features, as some kind of endless, digital all-you-can eat buffet. Instead, we could measure software by results-- how productive or effective it makes us at whatever task we're doing. Of course, measuring productivity and results is hard, whereas counting bullets on a giant feature matrix is brainlessly easy. Maybe that's exactly the kind of cop-out that got us where we are today.

Posted by Jeff Atwood    View blog reactions
« Why Does Software Spoil?
Let's Play Planning Poker! »
Comments

I would have to say that Windows Vista is a perfect example of this. They rewrote most of the codebase and ended up with a marginally more useful but multiplicatively slower and more bloated OS.

AndyCR on October 19, 2007 5:27 PM

Hey Now Jeff,
If features are the enemy they may make software spoil. I've enjoyed your last two posts.
Coding Horror Fan,
Catto

Catto on October 19, 2007 5:53 PM

Feature creep is the only valid argument for a subscription model that I've heard so far. $30 for a product version that gets new features every other year, or $5 a year for a product that retains its feature set but becomes more refined and stable.

It would have to be less as you aren't developing the new features and some people will always avoid upgrading with the existing system... So people that upgrade every time actually get a better deal, and everyone benefits from better software (in theory, but debatable).

Pete on October 19, 2007 5:59 PM

The problem is that unless the software has all of the features that you need to do your job, you will have to be constantly jumping between software packages to get you job done, and that means less productivity.

One of the problems with features that are added to software, is that the developers try to make it obvious that there are new features. This means more menus, more tool bars and buttons.

Instead, they need to ask themselves, if a new feature is indeed called for, what can we do to make it as unobtrusive as possible without making it hard to find. Obviously, the actual execution of that is going to be different depending on what kind of functionality is in question.

Of course, that only addresses features that make it into the software. I think that the development process in place should make it difficult to put features into the system. Not impossible, but just structured in a way that makes sure that features are vetted for relevance and other criteria.

kettch on October 19, 2007 6:01 PM

That's why one of my favorite developer programs is pixie. nattyware.com/pixie.html

It's an 8kb executable that requires no install. It does one thing very well and isn't bloated with useless features.

james on October 19, 2007 6:07 PM

I bought a laptop recently that had Vista pre-loaded. This was my first experience with the new Microsoft OS. After running into so many jams designed to protect users from themselves, I've systematically disabled feature after feature in order to return to a windows-xp-esque operating system.

While I'm on the subject.. who in their right mind needs a useless inbuilt game where you have to design cakes? As I mentioned yesterday in the last post about plugins being utilised to fulfill feature requirements - windows could be the BIGGEST beneficiary of this model.

Please, no 'switch to linux' replies.. it's primarily used as a .NET development machine.

`Josh on October 19, 2007 6:09 PM

The current commercial software model is doomed.
The problem with software is that it doesn't get old and break down, so the only reason to buy new software is if it's better at doing a task than previous software.

Eventually a piece of software will reach a point where it has all the features and is stable enough that it is optimal for it's task. At this point it is impossible to sell a user a new version because there is no reason to upgrade. So companies start making up new useless features so they can continue to sell the existing code base.

Microsoft is having this trouble currently. Windows 95 was buggy so people upgraded to window 98. Windows 98 was less buggy but still buggy, so people upgraded to XP. XP is very stable, and that's basically all people want from their operating system so Microsoft is having a hard time selling Vista. They have buddle a whole lot of extra stuff that isn't related to being an operating system: webbrowser, media player, anti-malware detection, games, 3d wiz bang interfaces.

Jesse McNelis on October 19, 2007 6:10 PM

I don't think this is simply a problem with the commercial software model. OSS, FreeWare and ShareWare are just as guilty of packing more and more features into an app until it becomes bloated, slow and complex. In fact that's one of the biggest problems with the Linux distros: they come with many versions of the same kind of app (browsers, editors, mail programs, etc.)

I think we - the developers - are mostly at fault. We like to add new cool features more than we like to fix bugs or remove older unnecessary features.

David Avraamides on October 19, 2007 6:20 PM

Bill Gates is lying or at least his minions are not following what he preaches... If you check out the comments from some MS tech support guys in this thread in reaction to users of Visual Studio 2005 complaining about various bugs in the software...

http://www.microsoftweblog.com/2005/11/05/problems-with-visual-studio-2005/

... some of them actually suggest (towards the latter part of the thread) installing and using Visual Studio 2008 as it fixes bugs, delivers much improved performance, etc., compared to VS 2005. They don't seem to realize that VS 2008 is still in Beta and will probably have bugs of its own when released.

How can developers produce bug free code if they are not given the time to master the tools they use? IMO, development tools should be given enough time to mature before being superseded yet again by a new version every 2 to 3 years.

cyclo on October 19, 2007 6:33 PM

I can understand why new features are continuously added. If companies didn't add new features then their income would stop once their original product version saturated the market. I'm wondering if the only solution to the problem that can potentially keep everyone happy is something along the plug-in model. Develop the core features of a product along with a very robust and extensive plug-in model. Then you can develop all those "super cool" new features as plug-ins which customers can pick and choose "a la carte" style.

Also, I think a great analogy to the software problem you are describing is that of cable tv services. My cable company may advertise "over 200 channels!" (and they sure as hell charge me for all of them) but I probably watch less than 20 and probably only 5 of those get watched regularly. Unfortunately there's no way for me to pick and pay for the channels I want. I think the first cable company to offer the ability to pick and choose channels and pay accordingly is going to steal some serious market share in areas where customers are lucky enough to have multiple cable companies to pick from.

Tom Tutko on October 19, 2007 6:39 PM

> One of the problems with features that are added to software, is that the developers try to make it obvious that there are new features. This means more menus, more tool bars and buttons.

But isn't this unwanted feature visibility a direct consequence of the commercial model? You can't *sell* features that your salespeople can't demonstrate, that potential customers can't see.

Jeff Atwood on October 19, 2007 6:43 PM

I completely agree.

In fact, I'm having a problem right now convincing the PHB to let us spend some time working out some of the horrible usability problems in one of our applications, rather than adding some extremely complicated new features that few people will use.

The biggest objection we're facing is that changing the user interface will mean our current userbase will have to learn new habits. It's a situation to which I'm not entirely insensitive, but the alternative to fixing up the glaring problems is to continue adding bells and whistles and hope nobody notices.

I guess it's is a pretty common problem, and probably explains why a lot of commercial software appears to completely fail to fix obvious interface problems while constantly piling on sexy new features..

Dan on October 19, 2007 6:55 PM

I don't know if you've read 37Signals' "Getting Real" ... These guys are doing it right in that aspect, they keep their webapps as simple as possible, the feature list is reduced, but the experience is great. Your posts reminded me of a chapter in the book where they talk about adding new features and asking themselves "Is it absolutely necessary to add X feature?"

* PS. My english isn't perfect, sorry

Paulo on October 19, 2007 6:59 PM

The WinAmp upgrade was actually useful for me. I had a problem with the media library window disappearing after watching a video. I could only fix this by either switching to the classic skin (which leaves a TON of open space between the main window, playlist, etc. and the media library) or by reinstalling. I have had no problems whatsoever from the Bento skin, and the arrangement is a bit more suited to my needs, so in this case more features = doubleplusgood.

J. Fryman on October 19, 2007 7:15 PM

@Jeff "Sometimes, I wonder if the current commercial software model is doomed. The neverending feature treadmill it puts us on almost always results in extinction. Either the application eventually becomes so bloated and ineffective that smaller, nimbler competitors replace it, or the application slowly implodes under its own weight. In either case, nothing is truly fixed; the cycle starts anew."

I think XP is in some ways proof to the contrary. For all of its bugs and services packs and patches over the years, it is still my primary development platform. I believe it was released just about 6 years ago, and it has reigned for a long time. Vista's arrival came with really little fanfare and while I love my iMac and OSX, my bread and butter is developing on XP. It has been a fairly solid OS (at least for me) and definitely doesn't suffer from a bloated feature list.

However, MS Office has repeatedly been upgraded over the years and, quite honestly, I can do just fine with Office 97. Heck, notepad is often sufficient for quick text documents.

Where I do like lots of features is in my development environment. I really like Visual Studio and it has a lot of nice features. The Refactoring options are really useful and provide me with functions I never thought I'd need, and now cannot live without.

Totally agree with Paint Shop Pro - it got slower and slower as the version number went up. I just started using Paint.Net on the PC and it is really pretty good.

Matthew Cuba on October 19, 2007 7:34 PM

In my opinion only those features which have been requested by a majority of the users have to be considered. In the case of Winamp - I have been waiting for a long time for inbuilt support for Album Art. Although the other features seem superficial, you have to remember that they do offer a Lite version of Winamp with minimal features. A good example of allowing the user base to dictate which features to add next is the <a href="http://www.s60.com/business/productinfo/wishlist/displayWishList.do" >Symbian 60 Wishlist</a>.

Rohit Arondekar on October 19, 2007 7:40 PM

Users have that short list of features they want. The problem is that no two users have the same list. So to satisfy everyone (because everyone believes that their list is *the* list), you get bloat.

The solution IMO is to go the plug-in route - make the core software do the barest bones necessary (WinAmp needs to play music), and then extend via plug-ins. Want album art? Then add that part. Don't want MP3 surround sound? Then skip it.

If it's built well enough, you can still have all the bullet points without the bloat.

(BTW, album art is pretty cool, on the iTunePod at least - it's turning my pile of music back into the CDs I remember them being)

A Gould on October 19, 2007 8:03 PM

"the market seems to work properly when faced with buggy software"

Oh, REALLY!

"Sometimes, I wonder if the current commercial software model is doomed."

DUH! Is that obvious, already?

Paulo: I read the "Getting Real" book myself, two days ago. Should be a must-have for any developer, and especially for any manager in the field.

Felix Pleşoianu on October 19, 2007 8:08 PM

That's why I have always loved the Unix philosophy of little tools to do specific tasks

ubersoldat on October 19, 2007 8:20 PM

Even though I'm no Apple fan boy, I got to admit that people are eagerly awaiting every new product they release - just look at all the anticipation for Leopard, which is due next week. Apple add sex to the equation, and this is obviously a *good* reason people line up to buy your product. And lean is sexy these days ...

Food for thought.

Zenja on October 19, 2007 8:25 PM

I guess I agree in principle with the last 2 posts, but there are some very notable exceptions. I happen to think that the current version of Word is the best. I love full screen viewing and the ribbon frigging rocks (for mouse or key users). It seems to load quickly and the zillion features I don't use aren't in my face.
Similar thing with visual studio. Many of the new features make me wonder how I did w/o them. I don't use Eclipse so I'm not sure how that compares, but I'll trade the lag and memory footprint for those features any day.

Brad on October 19, 2007 8:35 PM

Agreed on Word 2007. From Word 95 to 2003 I didn't see much difference...and after a few days using 2007 I'd hate to give it up.

Steve on October 19, 2007 9:32 PM

What we're really talking about here is a failure in change management.

This is a great post, and it reminds us that change management isn't just about how a change IS to be implemented and source versioning systems, but perhaps more importantly, IF a change SHOULD be implemented.

Unfortunately, as most of us seem to agree, immediate (perceived) business needs often supersede such product maintenance issues. This type of issue seems to be more prevalent in software with a large, or poorly defined, target user group, and in highly competitive software markets. I'd be interested in hearing how many people have witnessed a similar trend in more custom development.

kettch said:"I think that the development process in place should make it difficult to put features into the system. Not impossible, but just structured in a way that makes sure that features are vetted for relevance and other criteria."

I certainly agree that all features should be vetted for relevance, but I'd be cautious of creating an architecture that is explicitly hard to extend.

Jeff, maybe an article that could act as an overview of change management and software maintenance techniques would be helpful? I know I'd like to hear your (further in some cases) thoughts on that subject.

mwalts on October 19, 2007 9:35 PM

This will get better as the cost of experiencing software decreases and decreases. Feature matrices were essential in the old days of PC Magazine and boxed retail software.

Nowadays, you can easily see a few screens or try something out. Sometimes "the feel" of a particular of an application will win a person over, as apposed to the specific features it has or does not have.

I don't think think "features" sell cars, for example. I think the purchase is mostly emotional. A well documented case is the PT Cruiser, a car that was not, by any means, technically sophisticated yet sold extremely well.

Yarone on October 19, 2007 9:52 PM

Maybe, the challenge is to realize when you've reached the maximum potential and utility of a product, and to channel that momentum and success into creating something entirely new. Successful product vendors fixate on capitalizing on their success for too long while overlooking other opportunities.

Kris on October 19, 2007 10:21 PM

Jeff,

That goes for all the tools that we use for development.
eg VB classic MFC -> Winforms -> WPF -> ?

By the software gets matured, it is killed.
Do you think the bombarding of new release is justified (WPF, WF, WCF, Silverlight, linq, ajax, mvc for asp.net & what not)?

I am not sure, how many people in .net space will get to work on .net 3.0 very soon. .net 1.1, 2.0, 3.0 & the list goes on.

I would love to see .net 15 years from now. Sometimes, I feel people at MS experiment & release products only to compete with other tool vendors rather than coming up with something small & growing it over the time.

The poor developer is always in a mad rush to learn things & not lag behind. More the buzzword, better it is :(

Kalpesh on October 19, 2007 10:39 PM

This is hardly an issue limited to software. Bought a digital camera lately? They come with manuals as thick as your thumb to describe all the many features you'll never use. For that matter, the notion that every generation of cameras has to Support! More! Pixels! is silly for most people, who mostly print (when they do at all) something like a 4x6 print. If they can even figure out how to download the pictures to their computer, he said snottily.

I don't entirely agree that customers are asking for all these new features. Some, sure, but how many people demanded (for example) that (to pick one) Canon include a feature to create tinted photos automatically, or configurable shutter sounds, or a dozen other because-they're-cool features? Those sound like Engineers Gone Wild to me. And, as noted, to be able to have more checkboxes in the reviews.

mike on October 20, 2007 12:03 AM

That's why people smarter then us invented plugins. You can always release new plugins and let customer decide which features to buy/get. You can also remove a plugin you don't need/want anymore.

Goran on October 20, 2007 12:25 AM

And then I remember how people who bought a non-iPod were bashing iPod users because they didn't have radio or voice recorder, or some other feature that they-have-but-iPod-didn't. In the end, it results that they don't use these features so much either (note: I do NOT have an iPod).

Changing the subject, a use nobody talked about for the comparison chart is to look for the feature that they need and then see what program bundles that. Is as if this way of thought wasn't obvious and people needed to do an extra step to realise it.

I think it's a bit related to when someone writes a document and indents manually the first line of the paragraph by inserting spaces instead of tuning the paragraph style. Is like they don't make the separation between the content and the presentation because it's an extra step and they aren't used to do it, no matter how many times you told them how it should be done they will keep this way-of-less-ressistance (after all, they are only writing a page or two and it's not hard to change that by hand, and the comparison chart is for buying something that you won't have to buy very frequently).

----

Josh:
> Please, no 'switch to linux' replies.. it's primarily used as a .NET development machine.
>

Then switch to Mono first (yes, Mono runs on Windows too!!!) XD

maeghith on October 20, 2007 1:39 AM

I recall working for one company that was working hard to add the
marketing bullet points and I asked just how many customers were
likely to use the feature. The dev team admitted that the answer
was no-one, but the bullet was on the shopping list for
large institutional buyers.

On another note, your comment about "the market seems to work
properly when faced with buggy software.":

... but not without expense..... I worked for another company who
found a software vendor just didn't seem to care about fixing the
bugs. This prompted a migration from one POS (point of sale) vendor to another which was quite expensive, painful, and disruptive.

It would have been cheaper to pay for the fixes specifically as consulting fees to the vendor, but they just were not interested.
Weird.

Eric on October 20, 2007 1:48 AM

I've always wished there were a way to recalculate an 'overall score' based on my OWN weights for various features on a feature matrix.
(I'm thinking of consumer reports matrices, but it would apply to feature lists too).

That way I'd know which product had the best mix of features that I needed.


But to look at a feature list without examining which features you
need is just another form of 'tipping' (ie: short-cut the decision analysis process) in this case towards the one with most features.

This kind of thing happens all the time:
picking a book because it's in Oprah's book club.
buying a honda or toyota based on reputation (or a maytag... opps).
picking a doctor because a friend has the same one.

Eric on October 20, 2007 1:58 AM

"But customers will never pay companies to fix bugs in their software."

Well that's the Open Source support contract idea screwed, then, isn't it?

Geri on October 20, 2007 2:49 AM

I don't think you are right. As already told in comments, different users want different features.

You told about uTorrent client recently, if I remember correctly, and was happy it has all detailed statistics and info.For many people, this is not needed and only make looking uTorrent more complex.

I think real problem is usability and bugs. This is where most apps really suck.
As for features, the best atnibloating solution is firefox one: add-ins.

Vladekk on October 20, 2007 3:41 AM

ACDsee anyone ?
what was once a neat little piece of software strikes me as the best example of a program that has been completely killed by featuritis...

hopefully http://oldversion.com/program.php?n=acdsee still has the lightweight old versions ^^

Bob ArdKor on October 20, 2007 3:45 AM

It seems that the commercial model will eventually have to evolve into something similar to the open source approach of doing things: the software itself will probably stop being the main product or software companies and the focus will move towards services. As far as I know, this is the model that open-sourced based companies have been using for a while now to make profit...

Stathis Sideris on October 20, 2007 5:14 AM

"But customers will never pay companies to fix bugs in their software."

Borland/CodeGear expects its customers to pay for bugfixes. Poor Delphi 8, 2005, 2006 guys out there...

Daniel Lehmann on October 20, 2007 8:06 AM

Features aren't the enemy, features that no one (or not enough people) care about are the enemy.

TM on October 20, 2007 8:24 AM

I think the Bill Gates quote about upgrading not being necessary just to fix bugs is quite humorous.

Considering that his development tools rarely get bug fixes. Remember VS2002 with the "Check for upgrades" menu choice that never ever found one single upgrade? I always wanted to see the source code around that one.

Every single bug we ran across was fixed in VS2003 (supposedly), too many to list them all, the source code reformatting when you switched between design view and source view annoying me the most.

So staying at the older version was never an option for us because the product was flat out unusable. Thanks Bill.

----

Feature bloat is a direct reflection of the way software is reviewed. Developers have merely reacted to the marketplace.

Feature lists are just ONE way to look at software, there are many metrics that reviewers ignore, so in the end dev's just pile on the features. It’s similar to computer books; everyone just wants the biggest thickest book on the shelf for its perceived value.

Why don’t reviewers measure other metrics such as Space Occupied on Disk, Load Times and Interface Usability?

Why don’t they benchmark how long it takes a complete beginner to figure out how to complete major tasks? Or experienced users of the last version?

Change the review metrics and the software will change, I guarantee it.

Davide on October 20, 2007 8:39 AM

It looks like Microsoft may have learned a lesson with the bloat of Vista. There building a scaled down version called MinWin that will only contain the essential pieces needed to run the OS. Only 25megs!

Story here...
http://www.crn.com/software/202404947

Donny V. on October 20, 2007 8:44 AM

I like those feature charts, but only because I know how to use them: eliminate all the rows with features you don't care about, then pick the one with the most bullet points (you might want to give different weights to more important features as well).

Some applications give you a checklist of plugins to choose from; I'd like to see a checklist of features. You'd get all the bugfixes and optimizations in each new version, but keep as many (i.e. as few) features as you want. Skinnable interfaces and Web 2.0 social features would be the first to leave my list...

Remy O. on October 20, 2007 9:43 AM

> digital all-you-can eat buffet

Haha, good comparison

I miss some oriental kind of thinking/living: Use only what you need.

Lions survive in Africa because they eat what they need, and not more. They could do as many human enterprises: Having great paws, they could endlessly hunt until there is not more left to hunt, and then optimize their hunting technics until there's no more to hunt again, and then hunt other things or migrate. This way, there would be no lions today.

Some say (some not) that this is the reason why many things on the Earth are changing, such as climate, because we start to eat/consume more than we and Earth can digest.

May be software and its all-you-can-eat strategy feeds our sickly hunger because we ask for it: More features, please, dont' mind if I use them or not, I'll sleep better knowing they are there, somewhere in the box.

oscar on October 20, 2007 10:02 AM

I'm not using Winamp anymore. I'm using musikCube. Light, has important feature and you run filter on your music, anyway... just go see the website http://www.musikcube.com/

Maxim on October 20, 2007 10:04 AM

Do you think there is a direct relationship between the number or lines of code and the adverse impact on the usability, sluggishness, downfall of a particular software package?

Are lines of code tantamount to number of features in your opinion?

for a typical business package that might do accounting, track sales, and manage stock, when do the limits of the size (in terms of number of lines of code) start to reach critical mass?

5,000?
10,000?
20,000?
more?

hobbylobby on October 20, 2007 11:20 AM

I've heard that Winamp 5.5 uses less RAM that the previous version, so don't be afraid to download it (although the new skin sucks ass. still you can change it easily...). Nevertheless, I feel the same way with most programs. There is little difference between Office 2000 and Office XP, and later Office 2003. Even worse, they completely changed the interface in 2007 and now it's more difficult to use than before. That's why open-source is better: it takes much longer to spoil.

Alex on October 20, 2007 11:38 AM

> digital all-you-can eat buffet

I agree with Oscar - this is a good comparison.

To take the analogy further...

If I ordered a roast chicken ciabatta in a restaurant, it's entirely likely that it would come with a full salad garnish. If I asked for no onions in my salad they would gladly serve my meal without. I'd still be charged the same, and they would still continue to serve the roast chicken ciabatta with the same salad garnish and onions because the majority of customers want the onions.

However, if most customers make the same request for no onions, then the restaurant would of course stop serving onions with the meal: it's a waste of man hours not to. One has to assume that this is also true of paying vast numbers of developers to build certain features into a particular project.

If, on the other hand, I discovered that the tomatoes in my salad had grown green mould, I would not anticipate the waiter suggesting I pay to have the meal replaced. On the contrary I may even expect a refund or some other compensation for the inconvenience.

This 'gimme features' philosophy stems from our desire for conspicuous consumption: my software's better than yours because it ticks more boxes.

On the other hand it's also about fitness for purpose, and in no other market are we asked to pay in order that faulty goods be replaced.

Deb on October 20, 2007 11:59 AM

The problem with software, is that no ones going to buy a new version, if theres no incentive... Having less features then the competition just doesn't work in the software model. The 37 signals philosophy is to do less then the competition, and it works, they give you what you need, and no more. But thats fine in the subscription based models.

Damian on October 20, 2007 12:10 PM

As much as I agree that winamp has become bloated, at least they did it in a nice way. Almost everything is written as a plugin that can be turned off. The input and output codecs, file writers, CD burning, all the features of the file library, skin support. You can install a very basic install and get pretty close to a pre 3.0 winamp.

I really like this model and think it should be applied more often. Firefox could really use it. If I don't like the tab implementation, sure I can get an addon to run on top and modify it, but why not replace it? If everything was setup as a plugin you could.

Jesse on October 20, 2007 12:23 PM

I'm sure you read the "We just got bought and the new guys threw out our toys, I quit"-story from Winamp.

Anon on October 20, 2007 1:01 PM

Jeff Atwood wrote:

> You can't *sell* features that your salespeople can't demonstrate, that potential customers can't see.

That's not true. A good demo of improved usability (of the features the product already contained), in a real-world workflow, can be very effective. Much more so than, say, a sticker on the side of the box that says "Now with 20% fewer features!"...

Bruce Bullis on October 20, 2007 1:10 PM

Another aspect of feature creep and matrix comparisons is that it becomes very difficult for an upstart to challenge an established application. MS Word may be great for office people, but I know a lot of writers who want something totally different out of a word processor. It would be very hard, though, far a start-up to introduce a word processor for professional writers because its column in the feature matrix would be downright anemic next to the big kid on the block.

Adrian on October 20, 2007 2:41 PM

Hey Jeff, you get a blog reply:
http://gatesvp.blogspot.com/2007/10/sofware-is-service.html

Gates VP on October 20, 2007 3:10 PM

I see Microsoft Word and Office has been mentioned a few times.

They were facing massive feature bloat. The solution? They did a complete interface redesign with the Ribbon (which is actually rather good, Alex).

Sure, it's not Word 1.0, with its tiny feature set and toolbar/menu interface. But they took what was quickly becoming feature-bloated, with feature after feature tacked into the menus (and, shudder, task-panes), and gave it a new lease of life. If only other software companies would do the same.

Features aren't the issue. It's when they get tacked onto the user interface in a higgldy-piggldy manner and bloat the program's speed. I wouldn't mind any of those features being added to WinAMP providing they didn't get in my way when I didn't use them.

I have a certain fondness for the C++ language's philosophy: "only pay for what you use". And if only software had "starts up quickly" as a feature.


Adrian: It's possible to make plugins for Word (and other Office apps). Certainly I think that's better than having to write an entire word processor that's comparable to the Office behemoth.

Andrew Russell on October 20, 2007 4:38 PM

I don't think these last two blog entries could possibly have been more timely, as far as I'm concerned.

In working on NValidate, I was considering downloading the source code for a couple of open source projects so that I could review them to ensure that we provided lots of tests to handle the vast majority of parameter validations that developers perform.

While I may still do that, I'll now think very hard about CONSTRAINING THE TEST SETS to avoid the inevitable implosion (an apt analogy, if ever I heard one, for anyone with any passing familiarity with the physics of mass and gravity and stellar demise).

Once again: Thanks, Jeff.

Mike Hofer on October 20, 2007 9:53 PM

Great post, Jeff! Adding features while not fixing usability issues is one of my top peeves with poorly designed software. Fixing usability makes a lot more difference to how easy it is to actually DO something with the software, which is why I bought the %#$&* program in the first place. I would way rather pay for enhanced usability than for features I don't need.

The problem of reviews that obscure the information buyers need in order to make good buying decisions is not unique to software. Back in the '80s when I rode motorcycles, U.S. motorcycle magazines reviewed bikes, and buyers bought bikes, using a feature set similar to "Can do rotating 3D bullet points in color":

+ Engine displacement
+ Horsepower
+ Acceleration 0 to 60 mph
+ Top speed

Engine displacement is irrelevant, since a bike can have a large-displacement, low-horsepower engine, or a small-displacement, high-hp engine. Need for horsepower depends on what you use the bike for most of the time. A bike (or car) with higher horsepower is significantly faster a little bit of the time, heavier and guzzling more gasoline all of the time. For most people, acceleration is less important than the FEEL of acceleration. A bike that accelerates fast but you don't feel it is boring to ride (80s Honda Interceptor). A bike that accelerates slower but you feel a punch in the gut is more fun to ride. Top speed is relevant to some riders, but most people rarely use it. (Where can YOU ride 150 mph, and how often can you do it?)

Here are some things that make a REAL difference in keeping the bike from gathering dust in the back of the garage. Note that, unlike the list above, these are features that improve your experience of riding and owning the bike MOST OR ALL OF THE TIME:

+ Comfort. If the seat traps you in one position, and the bike buzzes so bad it puts your hands and feet to sleep, the bike won't get ridden much.

+ Wide power band. This is another a comfort issue. A bike with a peaky power band (like a lot of the race bike clones of that era) requires constant gear changes. That's okay if you are riding flat-out for 20 minutes, but a hassle on a long ride. If the bike's not comfy on long rides, you won't ride it as much.

+ Reliability. If it's broke, it won't get ridden. If parts are hard to get, it'll stay broke longer. (Brands with a high degree of parts interchangeability between models, such as BMWs and Moto Guzzis, were a lot easier to get parts for than more popular Japanese brands that changed models every 0.003 seconds.)

+ Easy to work on. This is important even if you hire all the work done, because a bike that is easy to work on will be inexpensive to tune up and maintain. I've seen a lot of bikes sitting in garages because a tune-up cost so much.

+ Low center of gravity. The bike is easier to handle, more fun to ride, less likely to go down, and easier to right if it tips over.

IOW, usability, usability, usability. ;-)

I only ever saw one motorcycle model comparison that took real-world riding into account in this way. To simulate a flat rear tire, a magazine had each of 5 brands of touring bike stop by the side of the road and remove and replace the rear wheel. The Gold Wing was still sitting by the side of the road FIVE HOURS LATER when the BMW crossed into the next state. (The Gold Wing's built-in panniers and loads of bodywork complicated access to the rear wheel. It's high weight also complicated matters.) Just for fun I tested my sport-touring bike and removing the rear wheel took under 3 minutes, including getting the tools out from under the seat. I rode that bike every day year-round.

I LOVE the idea of applying this to software. How long does it take to do X? Pick some real-world job that users are likely to do. Have some users that are familiar with the old software, some that are familiar with a popular competing brand, and some that are newbies. Observe, and keep the stopwatch going.

Another important issue: useful, time-saving features that are so badly implemented that users don't use them. Example: Word's bad parody of style sheets are so poorly implemented that users avoid them. Result: most users don't know how to use style sheets, and don't understand their benefits. Which is too bad, because style sheets are one of the biggest time-savers ever invented.

Some of the best software I've ever used deliberately restricts the feature set to keep the program fast and functional. I like that.

Wilma Keppel on October 20, 2007 9:54 PM

Obviously, BugWord is the best. Because it can run an Atari.

Atario on October 20, 2007 10:25 PM

WinAmp 5.5 is actually better than the last version,with may fixes along with feature,I don't understand how you can just simply complain that it is slow?,especially with your high end machine?.It runs good with a descent configuration , plus you can go back to the basic skin etc if you want.


Do I care about any of these new features? No, not really.


Nobody told you to care unless you really have a reason to.Plus WinAmp is one software were the UI has been consistent for years.Most of the feature were for integration and media management purposes.Almost all the media player sw have these functions.

No WinAmp will not destroy itself.It could have long back with AOL buying it.Stop using WinAmp as an example,why not Windows Media Player?

Jon S on October 20, 2007 10:49 PM

Great blog.
Each one makes me think deep thoughts have gone into it.
99% interesting too.

Thanks.

Dave Pawson on October 21, 2007 1:06 AM

The model is not doomed as long as computers get more powerful and memory and hard drives get cheaper and bigger.

The developer just needs to manage the features properly. Either install them on demand or install everything but load what you need as modules. The features you don't need should not load into memory and should not show up in menus. They are out of your way. This way there's no sign of bloat. Personally I don't care if the whole app takes a lot of disk space. HD space is cheap but I do care to get more features as long as they don't make the app less stable.

Abdu on October 21, 2007 1:48 AM

Using the MyWord example, if you find version 2.1 the most useful, don't upgrade. That solves the problem completely (unless there is a specific bug preventing it from being usable).
The problem occurs when MyWord *forces* you to upgrade to the newer versions.

My favourite group of software/developers is http://www.suckless.org/wiki/
Why? They don't prize themselves on huge numbers of features, rather they focus on compact, efficient and usable code, and making the current features work as they should.
The applications are limited to 10,000 lines - rather than adding a load more code to fix a problem, you fix the existing code.
http://www.suckless.org/wiki/about describes it better than I can..

dbr on October 21, 2007 1:55 AM

I see that many believe that software or electronics eventually reaches an "optimal" point. I cannot really see how that could be. Businesses and consumers are changing the way they do tasks every day. I do not see how a product that doesn't change could keep up. There will always be new features that perform a task more efficiently or in a novel way; of course, new features that overlap with others or that make old ones obsolete should be dropped. That seems obvious, but I've seen products with ancient features that no one uses and are only because people are used to seeing them (floppy disk drive, anyone?).

As far as the "feature matrix," I see a problem with software that tries to be a catch-all for every feature that ever was. It never works. When I need a product, I have specific features in mind to do specific tasks. Then I go to buy that product and become frustrated because the one feature that I need (and on the top of my list, no less) is not even offered by most of the products. They are all so busy competing to have the most useless features that they forget to innovate and focus on what customers really need to do a particular task.

A.S.A on October 21, 2007 7:48 AM

Dang, as I was reading your post, I was actually thinking about how that happened with Winamp. It used to be fast, now it takes forever to start up and load a song. I fnally gave up on it. It used to be my favorite! Then I saw you use Winamp as an example. Right on!I hope those idiots at nullsoft read your article, and wake us up from the nightmare that Winamp has become!

TooSlow on October 21, 2007 9:33 AM

Somewhat missing the point here but...

The last thing on earth I want my word processor to do is automatically do anything.

So automatically indenting the first line of a paragraph is a huge nuisance. Especially when I am not typing a letter. Properly indenting pseudo code or bulleted lists in a design type document is nearly impossible with-out first turning off all of Word's automatic features.

grrr on October 21, 2007 9:48 AM

The two last posts talk about the new features, and why them spoils a software. There is other consecuence in the development of new features. The New Features always is a productor of bugs in our software. With this observation, we have a trilogy about the problems of new features ;-)

PD: Great Blog!, Congratulations Jeff! X-D. I Read you from Chile X-D

I am Sancho on October 21, 2007 10:19 AM

there's no reason though why you can't make feature bullets from bugfixes:

* improved compatibility of file uploader
* streamlined interface
* now doing x is 30% faster
* better compatibility with format y

Sander on October 21, 2007 11:50 AM

Features are the enemy - of developers. In the world of software "products", they are essential. You simply can't sell "more stable" since customers expect what they bought last time was already stable. Yes, maybe it lacked features, but those that were implemented were implemented properly, right? Imagine an auto company saying "buy this year's model of X - the brakes work way better than they did in last year's model."

So although we developers hate the fact that the requirements for a given release of the product include primarily new features and little if any "refactoring" or "framework re-architecture" it is a fact of life we must get used to.

Michael Junkin on October 21, 2007 12:37 PM

Abdu writes: "The model is not doomed as long as computers get more powerful and memory and hard drives get cheaper and bigger."

I disagree. HUMAN ATTENTION is not getting bigger. In any interface situation, attention is usually the most important bottleneck. It's not that people CAN'T use feature X; it's that knowing that feature X exists, finding it, learning how to use it properly, and REMEMBERING where to find it and how to use it, all require mental overhead. A person's mental overhead is limited. I can't just walk into CompUSA and upgrade my brain's memory, attention, and comprehension units.

So the software designer's job, in general, to minimize the mental overhead that the user requires to get the job done. The less mental overhead for the user, the more attention they have left to (a) use the program features they DO understand and remember, and (b) actually get some work done.

Mental overhead is reduced when a user can learn a feature, keyboard shortcut, etc. in one program, then apply it consistently in other programs.

Mental overhead is also reduced when the context supplies cues that help the user remember what to do. Limiting the cues to what's appropriate in that context helps. It's like the difference between walking into a kitchen and finding a kitchen (consistent context cues; you know what to do and what your options are), and walking into a kitchen and finding a kitchen, toilet, leather couch, porch swing, doorbell, and a patch of lawn. Yes, it's got more features -- BUT YOU HAVE TO THINK BEFORE YOU CAN USE THEM! That makes ALL the features harder to use.

I think Jeff is right: The more we can make "What will increase user productivity?" match "What will sell more software?", the better off everyone will be.

Wilma Keppel on October 21, 2007 2:15 PM

I'm still using WinAmp 2.71 although it can't playback all of today's formats. But it starts lightning fast and has the smallest memory footprint than any other music player I've fumbled with.

oo on October 21, 2007 2:53 PM

Could this feature bloating be compared to multiple sequels of a good movie?

Steve on October 21, 2007 5:45 PM

It's not the developers or managers faults completely.

The real source for all the suckiness is the users. Developers are only guilty of doing what the user (says he )wants.

vk on October 21, 2007 9:45 PM

i noticed that many of the examples you used in your last 2 posts were "freeware" suppported by some sort of ads (aim, media players, etc.)

it seems to me that feature-creep is a logical outgrowth of this software model. if you want to support your software with ads you need your software to be used by as many people as possible.

therefore, the goal becomes to pack as many features as possible into your software to get as many people as possible to spend as much time as possible using it. an instant messenger client that can send messages, check email, read rss feeds, order movies, play music, remind you to feed the dog, post to your blog and cook dinner makes perfect sense in this context.

the model works well since most computer users don't understand that "big" software necessarily runs slower (all else equal) than "small" software and so they upgrade and continue to choose their software based on feature matrices without a second thought.

of course it would be more efficient to have programs that do one or a few things well, but then that would make it harder to make money from in-software ads.

george on October 21, 2007 10:55 PM

Simplicity is highly overrated. Joel has a nice one on this:

http://www.joelonsoftware.com/items/2006/12/09.html

Martin on October 22, 2007 12:54 AM

I must confess: I think it's natural. Like evolution. Mammals become bigger, larger, expanding in their biological niche until a specialized predator comes along and kills them off. By overeating the predator himself follows the same cycle and so on and on. :-)
I don't think that is negative at all. It'll get us all new kinds of software. Think of an large OS..

Daniel on October 22, 2007 2:05 AM

Ahh Software bloat. Even today I probably use less than 1% of all the wonderful 'features' in Word and Excel. Ok, with every upgrade it looks slightly nicer but I doubt I actually *use* any of it except maybe in the first five minutes of prodding around to see whats new.

Gary Williams on October 22, 2007 3:08 AM

Simplicity is a very complex abstraction.

On Day 2 of this year's ACCU Conference there was a session on simplicity in software given by Peter Sommerclad, Kelvin Henney and Giovanni Asproni. The Laws of Simplicity, as formulated by John Maeda, were introduced as a starting point for for the workshop. One of these rules is:
Failure - Some things cannot be made simpler.

One aspect of this is that some tasks cannot be made simpler.
Einstein: "Everything should be made as simple as possible, but not simpler."

Does adding a feature make an application more complex or simpler?
Does adding a feature make an application more complex or simpler to use?
Does adding a feature make an application simpler to market for the sales department?

Simon on October 22, 2007 3:09 AM

Abdu writes: "The model is not doomed as long as computers get more powerful and memory and hard drives get cheaper and bigger."

Rubbish. I used to use VC4 and it was great, I could have several copies open at the same time on a box with 16Mb ram and it was responsive and did enough for me to code effectively. Now I have VS2005 on a box with 1Gb RAM and I cannot open 2 copies because moving from one to the other requires a 5 minute swap-fest. My productivity has actually decreased using the new tool.

For developers VC6 was the pinnacle of development IDEs. The new ones (and yes, new stuff every 3 years for some stupid reason... probably that the previous version was not as good as it should have been) have been simply a waste of time and effort all round.

AndyB on October 22, 2007 5:30 AM

2 points I'd like to add:

1. software sometimes spoils intentionally to sell support or sell new software, code is not something that actually degrades like other products, take the tread on tires for example. because of this they force it to break with updates, licenses, subscriptions, ending support, wga, etc.

2. people make software, and people don't usually know what the hell they want, out of boredom they are prone to change something even when it works right, for eternity they are searching for the greener grass

shane on October 22, 2007 6:17 AM

Users don't know what they want. Yes, we've added features to the software that we know are useless, and we advise our customers (after they've bought it) not to use said features, but the other companies' marketing team said how much they needed feature X or feature Y. Of course, we've been doing this niche software for long enough to know - the customer would never REALLY want to do x in their office - unless they want an angry mob at their doors. So, we add feature X, then make it hard to find.

Nchantim on October 22, 2007 7:12 AM

So, who decides how many features is too many? I see a lot of posts here from (presumably) software development types complaining about feature bloat, and yet you must realize that software use by development types is an entirely different process than its use by a more general computing population. You all have a level of focus and mastery over your tools that most computer users do not. Features that you find useless or annoying may actually be very helpful to others. It may also be comforting for them to know that certain features exist, even if they aren't currently using them, particularly if they are not confident in their ability to manage multiple applications and whatnot.

Feature bloat is in the eye of the beholder. Experts get a kick out of announcing the miniscule memory footprint of the text editor they use; average users do not. Average users want to be able to do the most amount of stuff with the minimum amount of mucking around. There is an argument that the increasing complexity of interfaces to manage the "bloat" is problematic, but features themselves are not bad.

miked on October 22, 2007 7:51 AM

You have to leave a few bugs in. Otherwise people wouldn't have the incentive to move to (buy) the next version. :-) Granted, I've never heard anyone say this, but I'm just a s/w developer. From my vantage point, management has 0always worked hard to schedule fixing the most disruptive bugs and still meet the release date. I also work on electrical engineering software and so we have to add features to keep up with technology changes.

Les on October 22, 2007 10:36 AM

> some kind of endless, digital all-you-can eat buffet

No, this is what it _should_ be, not what it is today. If it was a buffet, you could pick only the features that you need, and leave behind all of the stuff you don't care about. Instead, what we have is a take-it-or-leave-it bundle more like an airline snack box, where the vendor decides what's in it, and not the consumer.

Martin Cooper on October 22, 2007 10:42 AM


It happens so that I'm a part of the team which I'm afraid is developing maybe the largest application for Windows CE in the world (in terms of the LOC): 30MB of DLLs. It's slooow.

Big customers ($10^6+) do buy products using feature matrix. Moreover, such customers do not use the product personally, so they don't feel the pain.

But I do believe, the main problem is "but it works" attitude among developers and managers and customers(!). Nobody really cares how it's implemented. Nobody thinks how to implement it faster, easier to extend and support. Nobody thinks about the future. And when the future comes, and there is a feature request, it's implemented - just by copying and pasting of 200K of source code.

Industry should have invented "Code Review Certificate" which would certify that code is at least acceptable.

Vyacheslav on October 22, 2007 11:10 AM

No, programmers are the enemy.

I bet you are mad now... But it's the truth.
Applications evolve over time but unlike nature, when a mistake is made in evolution the software very often lives on, instead of dying like it should. Maybe this is because there are not enough 'predators' in the software environment, yet.
What makes bad software? Bad programmers. I know, I know, you are all up in arms about this but just hear me out.

How many times have you looked at a legacy piece of code and scratched your head and said to yourself, "What was this guy/gal thinking?". Probably hundreds, right before you decided to slash and burn.
The point is, not only does feature overload destroy application but also bad programmers, bad designers, bad project managers (the ones that insist on un-realistic deadlines) and overall bad planning.
This happens too many times and results in marginal software at best and terrible software at worst, especially if it's feature laden.
But ultimately, it's our job as programmers/software engineers to make it work and consequently, the quality of a piece of software is directly related to the quality of the programmer/software engineer that wrote it.
So I guess like Harry Truman said "The buck stops here..." and when it comes to software, it very often stops on our, the developers, keyboards.

Mac on October 22, 2007 12:02 PM

"Of course, measuring productivity and results is hard, whereas counting bullets on a giant feature matrix is brainlessly easy"

Welcome to the world of capitalism. Follow the money trail and you'll have your answer. Businesses need to survive; they do this buy selling more products. They sell more products by subjecting us to these clever little marketing campaigns that tell us our life isn't complete without the "New" and "Improved" widget. They tell us it will cure cancer and give us a better woody. And of course, we buy it...

This problem isn't just with software, it's every product out there. I mean, my God, how much softer and bigger can toilet paper get? I'm perfectly happy with toilet paper version 1.0.

Mark on October 22, 2007 1:29 PM

I attended a talk not too long ago by Jared Spool, a guy who's been in the usability biz quite a while now. He postulated that there are three "eras" of software development:

1. The technology phase, where the business is driven by the novelty of a technical solution - ANY technical solution. This is now largely past, but think of the first word processors or the first commercial websites. Just that they existed and worked was enough to drive demand.

2. The feature phase, where the business is driven by competing feature list. This is exactly what you are describing in your posts. This phase starts out in "big list" mode that focuses on volume of features, but eventually migrates to "right size" mode which focuses on the exact selection of features. But features are still the focus.

3. The experience phase, where the market is mature enough that they finally begin to focus on the user experience as the key market differentiator and driver of competitive advantage. This seems to be very much the focus of companies like 37signals who aren't stuck with one foot firmly planted in the pre-dot-com era. But even MS can be seen moving in this direction with ideas such as the MSOffice ribbon.

If this model holds true (and I'm far from convinced that it will, no matter how much I wish it were so) then what we are seeing is an evolution away from "featuritis" and the resultant bloat that eventually kills applications. So perhaps, with an appropriate focus on user needs as the driver of development, implosion is not inevitable... at least for the products that come from companies who "get it."

Jim Doria on October 22, 2007 2:16 PM

I think that the issue of software bloat is especially bad in the commercial operating system market. Just look at how much disk space and RAM both Vista and Mac OS X are using.

And why is it happening? Because new features are the only reason to buy new operating systems. How many people would have bought a new copy of XP or Mac OS X if the only new features were fewer bugs and more security? While geeks might appreciate what was done, I suspect most people wouldn't.

The funny this is, I actually don't mind Apple and Microsoft including so much middleware with their OSes, as I think it provides good value to consumers but good god man, at least give us power users a hidden option of not installing it! Not everyone needs Internet Explorer/Safari, or Media Player/iTunes, or Calendar/iCal, or Windows Mail/Mail. And I really don't need hundreds of megabytes of wallpapers.

MS and Apple really need to take a more modular approach to their OSes. It's not like their don't have software installation systems in place.

Jeff Flowers on October 22, 2007 3:11 PM

Oh, and let me say that I am a former Mac OS X user, now Vista user. I like them both; they are both just too bloated.

Jeff Flowers on October 22, 2007 3:12 PM

I might seem like a good idea to integrate features from one product into another, but you run into bloatedness when that happens. Sometimes, these features might actually conflict.

Example:
If you have Adobe Acrobat reader installed, you can view pdf files right in your browser. The one thing that ticks me off the most is when I want to open a new tab while viewing a pdf. Unfortunately, ctrl+t is sent straight to the pdf, rather than firefox, and my new tab doesn't open. I don't understand why it would be this way. I'm in Firefox, let me open a new tab with a keyboard shortcut.

Matt on October 22, 2007 10:01 PM

Not sure if it's been mentioned, but something that automatically indents the first line of a paragraph is a really shitty word processor.

Not only is it something you wouldn't always want to normally do, it's considered generally bad style to do so these days. When was the last time you received something with an indented paragraph?

Cheesecake on October 22, 2007 10:11 PM

I think it is the second time You talk about Winamp and how bloated it gets with every new version. Well i have to say that all those features are optional. Winamp does have a long history of plugin usage and it is no problem for it if You won't install plugins that You simply do not want to use. With only substantial plugins for playing music i think Winamp5 is around the same as Winamp2, at least in size.

Besides that i agree with Your statements.

lukaszp on October 23, 2007 2:07 AM

I gotta agree. You only have to look as far as Visual Studio 2005 type products to see how it can turn any machine into a 286...and I barely use any of it. All I want is decent IDE with integrated debugging and a nice editor. It's not rocket surgery!

Russ on October 23, 2007 4:24 AM

I've seen Word mentioned here (both as good and bad) it is the best example of raging featureitis I have ever seen ...

But more importantly what is it :
Is it a text editor, no it's more than that (and it's a bad text editor)
Is is a document writer, no not for long documents
Is it a desktop publishing system, no it (amazingly) has missing features...

Oh and the ribbon bar, it's a love or hate it thing (hate it because it's unfamiliar, love it because it shows the things you use and hides but still allows you to find the things you don't) but essentially its a workaround to hide the massive number of features that are underused by most people

If it becomes software as a service then I can envisage going to lunch and coming back and spending an hour finding out how to use the upgraded version of my application...

Jaster on October 23, 2007 6:15 AM

Excellent post. As a further example, I had occasion some days ago, to install and use the free 'realplayer' app and this after a long time of not having used it at all. It was ghastly!! Rather than launch the little video window it bloated up into a browser-ish window and started spitting java hideousness at me. Ugh! I quickly shut it down and uninstalled it. I didn't need it that bad.

Now, I wasn't all that enamoured of it when it was just a straight video player. But it was something I could live with. This? Not so much.

I think the very malleability of software, it's ease of creation and morphing, is it's very best and very worst, ahem, feature. I think this often translates from softwares into a companies DNA (why does microsoft need to compete with apple hardware with zune? Seems downright insane don't it...? Why does google need to have a finger in every pie??) Can't y'all just done one thing well???

Petr on October 23, 2007 2:00 PM

>You only have to look as far as Visual Studio 2005 type products
>to see how it can turn any machine into a 286...and I barely use
>any of it. All I want is decent IDE with integrated debugging
>and a nice editor. It's not rocket surgery!

This already exists, it's called Visual C++ 6.0. I'm continually amazed at how popular this nearly ten-year-old product remains today (I saw it in use only yesterday during a coding tutorial). We have an open-source product that builds with various compilers, and every time we ask the user base whether we can finally deprecate VC++ 6.0 we get a flood of requests to continue to support it. It seems as is MS has two compiler products, Visual Studio <current-year> and Visual Studio 6.0, with <current-year> changing from time to time, but VC++ 6.0 remaining for eternity. I think the only thing that can kill this is when the last 32-bit Windows PC is finally shut down, and the reason for that is that it's better than most of its successors.

Dave on October 26, 2007 3:40 AM

>It seems as if MS has two compiler products, Visual Studio and
>Visual Studio 6.0, with changing from time to time, but VC++ 6.0
>remaining for eternity. I think the only thing that can kill
>this is when the last 32-bit Windows PC is finally shut down,
>and the reason for that is that it's better than most of its
>successors.

And that'll make no sense at all due to the blog software's stripping of text inside angle brackets (sigh). What it originally said (with angle-bracket bits replaced) was:

"It seems as if MS has two compiler products, Visual Studio [release-year] and Visual Studio 6.0, with [release-year] changing from time to time, but 6.0 remaining for eternity. I think the only thing that can kill this is when the last 32-bit Windows PC is finally shut down".

Dave on October 26, 2007 3:43 AM

I read something about an old version of Google Groups (I think that's what it was). The developers were trying to choose between two ways of sorting or organizing the data, and they couldn't come to a consensus about which one they should go with. So they shipped a beta with NEITHER. They then got 100 e-mails asking for method A, and only 1 asking for method B. That made the decison clear to them: they went ahead and implemented method A. Classically, they would have shipped with both features and had to support the one that nobody used until the end of time. I have used this tactic myself on Paint.NET a few times, purposely implementing a feature at a minimal or incomplete level just to see what type of feedback I would get. It works quite well.

Rick Brewster on October 26, 2007 11:36 AM

Firefox is the most perfect piece of software ever written, it is simple, customizable, and if an user wants to have hundreds of features in it, they just go to the addons central and download what they want. It is intended to fit all the tastes and at the same time be light and fast.

And you can use winamp in the same way if you want, just open the preferences dialog, browse through the installed plugins and disable what you don't want. I already uninstalled that dashboard that sucks all my bandwidth and some other things that I don't use.

Good article!

Cris, from Argentina.

Cris on October 26, 2007 10:29 PM

I completely agree ... and I returned to winamp 2.91

Max on October 30, 2007 2:32 PM

There is another way and your point of feature matrix is spot on. In a pretty mature market, the dots are not what's going to make you go: "WOW, that's a neat product". So, what separates a product from the competitors? I believe one of the main separators are the quality attributes of the software. Intuitiveness/usability (=low training costs), scalability, productivity are some examples of quality attributes. The only software process I have come across that deals with product qualities in good way is Evolutionary Project Management (Evo). Check out www.gilb.com or buy some books by Tom Gilb.

In short, Evo starts with the product qualities, features comes as a result of these. Our company has been using Evo for 4 years now, and we are happy with it.

If we acknowledge that product qualities are important to, we should spend some time on defining them and not just refer to them as vague “non-functional requirements”. We must set quantifiable goals for product qualities, and measure progress.

This is a short-short description of how our company in a pragmatic way tries to deal with product quality.

Step 1: Identify the stakeholders for your new product/module. Who has most impact to declare success/failure.

Step 2: Discover the stakeholders’ real needs (Stakeholder value)
If you ask one of your stakeholders what their requirements are for a piece of new software, the response will probably include statements like this: “When pressing the red button X, the system should do Y and Z”. This may be true, but hopefully there is more to it than that. If we get responses like this, we must ask: “Why?”. Most likely, there is a business reason behind the statement. Maybe it’s a replacement of a manual work process which aims to boost productivity. These are the real needs of the stakeholders, and it’s our responsibility to identify them. The “buttons” are designs/features to achieve business reasons.
Example: For a company that are to deploy a software product to 5000 employees, Low training cost would probably be an important stakeholder value.

Step 3: Define the product qualities
These are closely linked to stakeholder values, but there can be several produc qualities addressing the same stakeholder value. Example of product quality:
Usability.Productivity
Scale: Time in minutes to set up a [Defined Report] (What to measure)
Past: 65 minutes Goal: 25 minutes
Meter: Candidates with [Advanced reporting experience] performed a set of predefined steps to produce a standard [Defined Report].(How to measure)

Step 4. Once these qualities are defined, you can run away implementing features that supports these qualities or maybe even take away features that confuses your users, maybe you need to do some performance tuning on your algorithms etc. As long as you know the reason (=business) for what you are doing you're fine. Split the deliverables into short cycles (1-3 weeks) and measure your progress. Stop when you're done, be proud.

Sorry for the length of the comment..

Trond Johansen - Norway on November 5, 2007 6:03 AM

You say: "But customers will never pay companies to fix bugs in their software"


Yeah, no shit sherlock: THEY ALREADY PAID FOR THAT WHEN THEY BOUGHT THE FIRST VERSION AND YOU SOLD THEM JUNK INSTEAD.

Why the hell should they ever consider giving you more money when you haven't yet made good on the last transaction?

Jason Kennerly on January 11, 2008 12:56 PM

I gotta agree. You only have to look as far as Visual Studio 2005 type products to see how it can turn any machine into a 286...and I barely use any of it. All I want is decent IDE with integrated debugging and a nice editor. It's not rocket surgery!
http://sadushki.ru/

Suzanne on August 7, 2008 10:35 AM

Excellent post. As a further example, I had occasion some days ago, to install and use the free 'realplayer' app and this after a long time of not having used it at all. It was ghastly!! Rather than launch the little video window it bloated up into a browser-ish window and started spitting java hideousness at me. Ugh! I quickly shut it down and uninstalled it. I didn't need it that bad.
http://masterstroyki.ru/

Olen on January 28, 2009 8:05 AM
Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.