1. Less is more.
Don't let your application be overwhelmed by hundreds of nearly useless options. This doesn't make for a better application. It simply makes for a more confusing application.
Microsoft Word, (for example), has more options settings and features than any human could possibly need for simple word processing. As does Emacs.
That is why I tend to use Notepad under Windows and Pico under Linux.
(Bad Programs for this category include; Sun Star Office, RealPlayer, and Netscape). (Good programs in this category include; Netpositive, Notepad, and Tux Racer).

2. Include the features that people really want.
Think about the things that annoy you most about your application, then come up with a simple solution.
If you are coding a web browser you should have a button to toggle the loading of images, and another button that toggles the loading of pop up windows. No web browser I know of has both those features. Most of them can do it if you dig through several menus, (sometimes requiring to restart your browser or even OS).
(Bad Programs for this category include; Internet Explorer, Windows Media Player, and AOL). (Good programs in this category include; Winipcfg, Nesticle, and Wordpad).

3. Hide features that don't work.
I can't tell you how many times I have seen something like this on a menu, "Double Mongo Render (Doesn't Work Yet)".
Comment out the code that puts that option on the menu instead of adding the "doesn't work yet" part to the menu. Once you get it working you can uncomment that part of your source code.
(Bad Programs for this category include; DGEN, most Linux programs, and most video game level editors). (Good programs in this category include; MAME, Winamp, and AOL Instant Messenger).

4. Install your application in the right place.
Not in the root directory. Not in a subfolder of a folder named after your company.
Under Microsoft Windows the game "Monkey Party 3" should install to "C:\Program Files\Monkey Party 3\" not to "C:\Games\Coconut Software\MP3\".

(Bad Programs for this category include; Lucasarts Games, Sun Star Office, and AOL). (Good programs in this category include; Winzip, Quicktime, and PC Anywhere).

5. Set the good options by default.
People should not have to turn off your "Message of the Day", "Office Assistant", or "Database Generation Wizard".
Instead make a clearly labeled button so new users can turn on the "Features" if they wish to use them.
I sadly cannot think of any applications that are good in this respect. (Bad ones include; KDE, Microsoft Office, Winzip, and Norton Utilities).

6. There is no reason for your software to run all of the time unless it has to.
Software that should not run all of the time includes; Media Players, Instant Message Programs, Office Packages, and CD recording software.

7. The uninstaller for your program should remove all traces or your program.
Including all registry information, Log Files, dlls, and the directory of the application itself.

8. Don't invent file formats for no reason.
Use Wav, Html, Png, XML, Mpeg, .txt and other cross platform standards. The only reason you should invent a new format is if your programs data cannot be represented by an existing standard.

9. Don't write software that is jealous of competitors software.
Everyone hates browsers and Media Players battling it out for supremacy on their desktop.

10. Listen to your users.
You shouldn't worry about object Foo if 9 out of 10 people you speak to have a concern about item Bar.

11. Don't be afraid to try something new.
Just don't take it personally if the Shareware/Open Source/Corporate IT Department doesn't like your new idea.
You can always release it as an add on or plugin.

< ************** the great self imposed rewrite*************** A very wise editor had started to audit me, and I quickly realized (from his msgs), that I have a lot more bad nodes then I thought. So I am going to rewrite almost all of my nodes (at least the first 500 or so). I will starting at my very first node, and redoing them in order. I will list them here as I redo them. Even my best nodes could probably use a bit of work. So I will leave no node unturned (except my daylogs, which I will simply spellcheck). Comments with stars next to apply to this writeup. This node was rewrote reformatted**************** added to glared at untouched by human hands smiled down upon with great joy and happiness at server time Friday, March 29, 2002 at 10:50:37 UPDATE UPDATE server time Thursday, May 27, 2004 at 10:32:35 PM Removed final line that asked people to node their own comments ******End commentary*******>