We've all used them – programs that either seemed to be designed by a 6-year-old, or that crash regularly, or even those that installed malware. But how does a software developer try his hardest to design the worst possible piece of software? The tips on this page will be sure to help.
This article is written with a humorous twist, but it teaches an important lesson. If you are trying to design the best piece of software out there, avoid the pitfalls on this page.
1. Pay no attention to performance – assume everyone is using a quad-core CPU and has 8GB of RAM
Software bloat is an increasingly prevalent problem nowadays. Computational power is increasing, and its price is decreasing. This is driving software developers to neglect performance in order to cut costs.
Nobody, and I mean nobody, likes staring at an hourglass icon or watching a progress bar slowly creep forward. True, there are cases when this is acceptable, but don't make your software take forever to load something every time a user types a word or clicks the mouse.
2. Mess up my file associations
I set up my file associations for a reason, and I find it particularly aggravating when a program (even high-quality software like Photoshop and Dreamweaver) messes these up. I have installed Photoshop CS3 numerous times, and every single time, it messes up the file associations for all of my pictures. No confirmation dialog, nothing. If this happens enough, it can give even the most computer-savvy hackers among us the urge to punch the living daylights out of something – or someone.
An added bonus: Display a confirmation dialog to the user, but don't listen to what they say. Just recently, I installed Dreamweaver on my laptop, only to find that it had associated itself with .vb and .resx files, to name a few. Argggghhhhh...
3. Provide a non-helpful Help system
Back in Office 97, you could click the ? button in the title bar of Word Options and click on any control to get a nice What's This help popup. Now, ten years later, all you get when you click ? is the standard Word help dialog. You search for "Use smart cursoring" and get a whole page full of unhelpful results – "Make your SmartArt graphic look like an example in the SmartArt graphics dialog box", "Change curly quotes to straight quotes", and – my personal favorite – "Which CD or DVD format should I use?".
Seriously. Software developers should try to make their software as simple as possible for their users, and that includes providing adequate relevant help content. It's not necessary to implement the classic "What's This?" help, but at least make your help system somewhat context-sensitive, and include a description of every option in a dialog box in the documentation.
4. Provide cryptic, irrelevant error messages with no way to correct the problem
I just love it (not!) when I'm trying to install a device in Windows Vista, and I receive an error like this: "An error occurred while installing device driver software for <device>: The system cannot find the file specified." Windows XP – heck, every version of Windows since 95 – allowed users to manually find the "missing" file.
5. Use a download bootstrapper installer and do not provide a full installation package
Download bootstrapper installers can be very useful. Such an installer allows the user to download only the necessary portions of a software product, and can provide more features than the user's browser or download manager allows. However, imagine the opposite scenario: a user who needs to install software on more than one computer.
I have installed Yahoo Messenger about 20 times. Each time, I had to wait for the installer to download Yahoo Messenger. Yahoo does not provide a full download of Messenger on their website. Microsoft, on the other hand, includes both the dynamic and full installers for the .NET Framework.
6. Pop up focus-stealing dialogs at random.
How many times have we been typing a word document when some application's dialog popped up right in the middle of our work? It's usually something along the lines of "Would you like to install X updates?", with the default option being "Yes".
As an added bonus: Pop up a dialog (like Vista's Windows Update dialog) that prompts the user to restart their computer, with "Restart" being the default button. I have lost work when I was typing code and my system restarted on me due to me accidentally selecting the "Restart" button when I pressed the spacebar.
7. Stick ads in the wrong places
Ad-supported software may be a necessity. Placing ads in inopportune locations is not. If your software is ad-supported, do not place ads where users will accidentally click on them, do not pop ads out of the taskbar, and do not pop up your application's ads when the application is not running.
8. Require more than one reboot during the installation process
It's bad enough for a user like me to restart a system with about 15 different programs open simultaneously, but restarting an installer multiple times, and rebooting after each, is not exactly pleasant to anyone.
As an added bonus: Restart the system without prompting the user.
9. Update to no end, without listening to the user
Don't have your program automatically start downloading updates as soon as they become available. First, ask the user – and ask them once – if they want to check for updates in the first place.
10. Go overboard with copy protection and anti-piracy measures
If your program's anti-piracy technique involves recording the sector on which it was installed, creating a rootkit, disabling the CD-ROM drive, and requiring the presence of a piece of hardware to boot up the operating system (which does not belong to you), then something is wrong. Piracy is a problem for software developers, but anti-piracy techniques can get out of hand, especially if they treat legitimate users as pirates.