Monday, October 18, 2004

Why device driver software is so bloody awful ...

dcardani: Scanner Suck
Several months ago, Jon Rentzsch wrote an article in his web log about how awful his Canon LiDE scanner was and why he returned it. Apparently it drew a lot of attention, so earlier today he posted a followup about the current state of things. His conclusion:

...after reviewing the marketplace again, I purchased an Epson Perfection 1670 Photo scanner. It requires an external power brick, can't seem to be turned off save unplugging it, but it works and comes with a sane Mac OS X native TWAIN driver. It's not rock, but it's not suck. Apparently, nonsuck is the best the scanner market currently offers.

This hit home with me because I was once involved in creating a scanner driver that wasn't very good. Here's my story.

Several years ago, I worked for a company that got business by lying to its customers and competing on price. They would tell their customers that we could produce a piece of software in an area that we had no expertise in, within a very short amount of time and for very little money. As a result, we got lots of contracts, but rarely produced anything of very good quality, or pleased the customer, except when my exceptional coworkers pulled off a miracle and achieved something beyond their capabilities.

So one day the boss told a potential customer, a Japanese producer of fax and scanner equipment, that we could write them a driver for their USB scanner device for relatively little money in relatively little time. They agreed. Then he came to me and asked 'Can we write a driver for a USB scanner really quickly?', to which I replied 'Hell no.'

I had absolutely zero experience writing drivers of any type, and USB was a new technology at the time. Apple's implementation, I soon found out, had a few bugs, too. Further, while devices like keyboards, mice, and modems had completed specs for USB compatibility, the USB consortium had not yet finalized their scanner specification. (Looking at the USB home page, I'm still not sure it's been finalized.) Oh yeah, did I mention that the scanner was brand new, and the only technical documentation for it was 3 sparse pages of Japanese poorly translated into English?

Needless to say, I spent the next month or two frantically reading Apple's USB docs, manipulating their sample code, and debugging my horrible driver and TWAIN component. In the end I cobbled together something that mostly worked, but did several things the USB Manager docs specifically said not to, simply because I didn't have the time to figure out the correct way to do it.

Fast forward to today where companies are outsourcing much of their software development to companies in 3rd world countries who compete on price, and the situation is just as bad. Actually, it's a little worse because now everyone in that market believes they have to use the cheapest developers available, since they aren't able to make any money on their hardware, and you're pretty much guaranteed to get absolute crap no matter what. (That's not to imply that offshore companies are any worse at writing scanner drivers than those here in the states. Just that when you hire developers on price instead of skill, as I was hired at the time, you get what you pay for.)

Why a business would produce a piece of hardware for which they don't know how to write the software themselves is a bit of a mystery to me, too. It points to the fact that they don't actually design products, they just make something to sell and hope the competition goes out of business before they do. I fully expect to see this trend get much worse in the coming years, as more companies fall prey to the myth that outsourcing development saves money, and the government makes it less and less profitable to hire people for what they're actually worth.

I think it's a complexity problem. The technical world is too complex for most people to figure out, so scams of every sort run wild. Buyers don't seem to care if their purchases work, so why should vendors? As usual the trade magazines (PC World, etc) collude in this deception.

To their credit Microsoft seems to be significantly improving the quality of device drivers.

No comments: