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
(Bad Programs for this category include; Sun Star Office
, and Netscape
). (Good programs in this category include; Netpositive
, 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
or even OS
(Bad Programs for this category include; Internet Explorer
, Windows Media Player
, and AOL
). (Good programs in this category include; Winipcfg
, 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 editor
s). (Good programs in this category include; MAME
, 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
, 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
, and Norton Utilities
6. There is no reason for your software to run all of the time unless it has to.
that should not run all of the time includes; Media Player
s, Instant Message
Packages, and CD recording
7. The uninstaller for your program should remove all traces or your program.
Including all registry
information, Log Files
s, and the directory
of the application itself.
8. Don't invent file formats for no reason.
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
/Corporate IT Department
doesn't like your new idea.
You can always release it as an add on
< ************** 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
untouched by human hands
smiled down upon with great joy and happiness
at server time
Friday, March 29, 2002 at 10:50:37
Thursday, May 27, 2004 at 10:32:35 PM
Removed final line that asked people to node their own comments