6 Software Tips For Hardware Makers

Photo of a DrillWe often hear that the current state of software development is still dysfunctional. Scott Rosenberg recently wrote a book to that effect called Dreaming In Code. He takes takes a look at the question Why is software so hard? According to Scott, Software developement’s history is marred by poor quality, missed deadlines, and cost overruns, primarily due to a persistent dysfunctional culture.

And he’s talking about software written by companies who are in the business ogf writing software. Well if software written by software companies is so bad, how bad is the software written by hardware companies?

Very bad.

I’m sure there are a few exceptions, but companies that I think should know better write atrociously poor software. And frankly, I’m getting tired of it. Here are some basic principles for hardware makers to keep in mind when writing software for their products.

1. The computer belongs to me, not you!

Did you ever notice that my documents are in a folder named My Documents. Not Your Documents (in Vista, it’s just Documents, but there’s still an implicit my in there).

That means that folder belongs to me. Not you.

So I beg you, stop adding your folders in there. There is a proper location for your stuff, in the Application Data directory. Since you’re too lazy to understand how Windows works, I’ll write some sample code for you in C# that demonstrates where to place your application’s files. I’m sure you can figure out the C++ equivalent.

string appDataPath = Environment.GetFolderPath
  (Environment.SpecialFolder.ApplicationData);

string yourAppDataPath = 
  Path.Combine(appDataPath, "YourApplicationName");
if(!Directory.Exists(yourAppDataPath))
{
  Directory.CreateDirectory(yourAppDataPath);
}

Brush up on the Environment.SpecialFolder enumeration. It’ll come in handy.

For user settings and application cache data, you might also consider using Isolated Storage. Just don’t put it in My Documents.

2. Don’t Assume The User Is An Administrator

While I’m ranting on this topic, I should also mention that any data your application needs to write should not go in the Program Folders directory. Not everybody runs their machine as an administrator and better you learn that lesson now than when Vista is widely disseminated.

3. Learn About the Platform And The Services It Provides You.

I recently bought a USB enabled Universal Power Supply (UPS) that was well reviewed. It appears to be a great hardware product, but the software is crap.

The point of getting a USB enabled UPS is that the UPS can shut down windows gracefully if the power goes out. But rather than intergrating cleanly with Windows XP Power Management, they wrote their own ugly little system tray applet. Why not take advantage of what the OS provides?

To me, this example and the previous example I mentioned with the Application Data folder belies a willful ignorance and disregard for writing good software for Windows. It’s due to an unwillingness to take the time to learn about the platform.

4. Honor Your Obligations and Promises.

When installing HP drivers and software for my scanner (which sadly doesn’t work with Vista at all), the installation process provides me with a checkbox “Add an HP Share-To-Web icon to the desktop?”.

I responded with my usual response, Hell no!, by unchecking the checkbox. But what happens when the installation is complete? There’s the icon on my desktop. Not only that, the icon is impossible to delete. I mean impossible!

I tried to right click it, there’s no delete option. I click properties and select remove icon from desktop and click Apply. The dialog hangs, never returning. Fantastic!

Please, give users a choice. And when they make a choice, honor it!

5. We Really Don’t Want Your Cruft

Really. Seriously. We don’t.

It’s simple. If a piece of software is something we really want, we’ll take the time to find it and install it. We don’t need you to install a bunch of crapware alongside your drivers or main application.

If it needs to be pork barreled in order to get it on our machines, we probably don’t want it.

Trust me on this one. The extra endorsement money you get for bundling probably won’t make up for the loss in customer satisfaction.

6. If The Software Sucks, We Think The Hardware Sucks.

Again, quite simple. The majority of user interaction with a piece of hardware is really via the software. If the software is clunky and hard to use, or worse, just flat out fails to work. We associate the failure with the entire product, hardware and all. After all, if a company can’t take the time to write quality software, why should we trust in the quality of the hardware?

Conclusion

So that’s it. All I ask is that hardware makers take as much care writing their software as they do building their hardware. Perhaps more care, given how flimsy hardware can be these days.

When the supporting software is good, customers will rave about your products.

What others have said

Requesting Gravatar... DotNetKicks.com Jan 14, 2007 9:52 AM
# 6 Software Tips For Hardware Makers
You've been kicked (a good thing) - Trackback from DotNetKicks.com
Requesting Gravatar... Bil Simser Jan 14, 2007 11:20 AM
# re: 6 Software Tips For Hardware Makers
Phil,

Awesome post and I totally agree. In fact, software developers should heed some of these comments as well and stop taking over "My Documents" and assuming the user is root.

Brilliant!
Requesting Gravatar... vikram Jan 14, 2007 1:07 PM
# re: 6 Software Tips For Hardware Makers
Pretty well said.
This line says it all
"After all, if a company can’t take the time to write quality software, why should we trust in the quality of the hardware?"
Requesting Gravatar... Damien Guard Jan 14, 2007 6:35 PM
# re: 6 Software Tips For Hardware Makers
Here are a couple more:

7. I like my file-types the way they are - sure if you want to associate with types not yet associated go ahead. If you want to change what I already have ask - and the default should be no.

8. Loading at start-up makes my machine start slower and uses up precious memory. Your application may not load at start-up unless I specifically say so.

When it comes down to it the whole lot could probably be summed up as:

Your application may be the centre of your life. It won't be mine.

[)amien
Requesting Gravatar... Damien Guard Jan 14, 2007 7:28 PM
# re: 6 Software Tips For Hardware Makers
That'll teach me to speed read - didn't see "hardware" in the title :D

[)amien
Requesting Gravatar... Carl Camera Jan 14, 2007 9:30 PM
# re: 6 Software Tips For Hardware Makers
I've often felt the same way and this rant nails it (pun intended.) Excellent advice for every hardware vendor.
Requesting Gravatar... James Snape Jan 14, 2007 9:55 PM
# re: 6 Software Tips For Hardware Makers
They never learn so we should probably keep a list of offenders somewhere to save us all some time.
Requesting Gravatar... Adam Jan 15, 2007 12:26 AM
# re: 6 Software Tips For Hardware Makers
Two slight rebuttals:

1. Part of the UPS problem is the fault of Windows. That system isn't necessarily capable of doing what you want it to. Windows Vista has improvements in that area and treats a UPS exactly like a laptop battery (so it fully integrates with power schemes, etc).

So they had to change the OS to support it working seamlessly.

2. The My Documents thing is problematic when you have an application that saves data automatically, such as a game. In the case of a game, you don't get a browse dialog to choose where to backup. In that case, saving to Program Data isn't the best choice since that directory is not part of common hardware or software backup solutions. So you put your stuff in Program Data, and your customers' external hard drive with the 1-click backup button won't pick up your save games.

That said, I think the number of times where the user documents folder is the correct place is way less than AppData. Just pointing out that a blanket "never store anything in documents" is appropriate.

(As a note, I LOVE the fact that Neverwinter Nights 2 saves in the Documents folder. I didn't have to go digging to find out where the saved games were, my backup automatically backed up my save games)
Requesting Gravatar... Haacked Jan 15, 2007 1:55 AM
# re: 6 Software Tips For Hardware Makers
@Adam, at your first point, I'm not sure I understand. At the very least, I still think that when I plugin a USB enabled UPS, and open up the UPS tab of Power Options in Control Panel, that it recognize my UPS there. I wouldn't mind its own system tray applet if it provides features that Windows XP doesn't. Also, this program wrote settings to the Program Files.

To your second point, I think that's why Vista has the new "Saved Games" special folder. So for Windows XP, you have a great point. For Vista, used the Saved Games folder.
Requesting Gravatar... Adam Jan 15, 2007 2:26 AM
# re: 6 Software Tips For Hardware Makers
RE: UPS

Vista has done away with that incredibly awkward way of dealing with the UPS. It's now literally dealt with exactly like a laptop battery.

Off subject, but what brand UPS are you using? I know APC has worked great in the past for me (and in the present with Vista).

RE: Saved games

Too bad there's no Environment.SpecialFolder for that one yet.
Requesting Gravatar... Haacked Jan 15, 2007 2:37 AM
# re: 6 Software Tips For Hardware Makers
> Too bad there's no Environment.SpecialFolder for that one yet.

Yeah, I guess it took until Vista to realize, "Hey! People play games on their PCs!" ;)

I have an ULTRA UPC. Hopefully they come out with Vista drivers in my lifetime.
Requesting Gravatar... Keyvan Nayyeri Jan 15, 2007 2:46 AM
# re: 6 Software Tips For Hardware Makers
And also add this:

Please don't install some useless softwares or trial applications on your hardware.

I just received a Dell laptop for my sister from states. It's full of useless small applications (high speed internet, dial up mode manager, etc) as well as 30 (or 90, I can't remember) days Office 2003 trial. I can install whatever I want or at least I should have a choice to ask you to install these apps for me for free. For almost 2-3 hours I was uninstalling these apps for my sister to let her study for her exams.
Requesting Gravatar... Old Cranky Bastard Jan 15, 2007 5:19 AM
# re: 6 Software Tips For Hardware Makers
Please don't write GUI applications in Java on windows. It's slow and looks like crap
Requesting Gravatar... Jon Galloway Jan 15, 2007 6:09 PM
# re: 6 Software Tips For Hardware Makers
One partial solution to the crap bundled software:
http://www.yorkspace.com/pc-de-crapifier/
Requesting Gravatar... Tim Scarfe Jan 16, 2007 7:30 AM
# re: 6 Software Tips For Hardware Makers
Amen to that!
Requesting Gravatar... dm4714 Jan 16, 2007 9:32 AM
# re: 6 Software Tips For Hardware Makers
I don't like it when software automatically installs itself in the system tray. I have about 20+ icons down there now and only use a few of them. Its totally retarded and defeats the purpose of having a system tray.

Requesting Gravatar... Pupeno Jan 17, 2007 12:54 AM
# re: 6 Software Tips For Hardware Makers
What about

#0 The hardware belong to me, not to you.

Provides the specifications of the piece of hardware that I just bought so I can use it in any way I want (writting my own driver for any OS). I own the hardware and I should be able to use it.
Requesting Gravatar... anonymous Jan 19, 2007 12:39 AM
# re: 6 Software Tips For Hardware Makers
I'm only too happy to see I'm not alone in this :)

I recently bought a Packard-Bell that would have been pretty decent if it wasn't for the crappy OEM version of XP that came with it, crippled down by all sorts of totally useless bells and whistles, and NO backup tools...

Bad thing is, the dorks that are ultimately responsible for selling us this sort of crap will never be influenced one bit by ranting -- we really have to do something about it, like keeping a list of offenders as suggested above. Those fatcats will only be impressed by their sales curve going down.
Requesting Gravatar... Fear and Loathing Jan 22, 2007 9:06 PM
# Where did my SDK go?
If you've downloaded the recent release of the MOSS and WSS SDKs, you may be scratching your head wondering
Requesting Gravatar... free xrated stories lesbians Jun 15, 2007 10:37 PM
# free xrated stories lesbians
<a href="http://freemovies.mysexylog.com">free xrated stories lesbians</a>
Requesting Gravatar... downloadable files Jun 29, 2010 9:18 PM
# re: 6 Software Tips For Hardware Makers
Check out some of the great posts we got in response to our “unilaterally declaring Friday, January 19th

What do you have to say?

(will show your gravatar)
Please add 1 and 2 and type the answer here: