Embedded System Design Library: Selecting Features

(C) 2009 Hank Wallace

PREVIOUS – Embedded System Design Library: Universal Concepts
NEXT – Embedded System Design Library: Productivity

This series of articles concerns embedded systems design and programming, and how to do it with excellence, whether you are new to the discipline or a veteran. This article is about selecting the proper product and system features. Keep in mind the last article and the emphasis on economics.

Having designed many products and pieces of products since the 1970’s, I understand how features fit into the mix during product design. The sales people want a rich set of features, and the engineering staff wants to build a killer product, but understands that features cost money. This tug of war is good and helps to identify the features that benefit the bottom line.

The first thing you should do to your list of proposed features is delete as many as possible. I’ll guarantee you that many of the features on the list are unnecessary or counterproductive, even though they may be championed by the company president.

You certainly have used products which were loaded with idiotic features. How about some examples?

  • I bought a Canon all in one printer/fax/scanner. It works pretty well, but the menus on the LCD have an annoying glitz feature in that the graphics fade in and out, bloom and glow, and those graphics effects that take a couple seconds apiece to execute. Switching from copy to fax mode takes a few seconds while the display runs through such gyrations, all of which are totally useless to the function of the product. That garbage was demanded by an MBA with no technical background, or by some junior graphics programmer trying to earn some brownie points. A total waste.
  • My Jeep has automatic door locks that lock the doors when the speed exceeds about 10MPH. The net effect of this is every time I attempt to open a door on the vehicle from the outside, it is locked. This is utterly maddening! And of course every time I insert the key in the ignition, turn on the lights, or sneeze, something in the vehicle beeps. Also maddening. What kind of idiot was this car designed for? What kind of idiot designed this car?
  • Remember the Ford automatic seat belts? I still have scars on my head from the lacerations caused by moving belts in cars I have rented.
  • I bought a cell phone from Verizon some time back. I could not read the text on the screen since it was black text on a busy picture background. I dug through the menus to find how to delete the background image, but that’s impossible! So I took a picture of a white ceiling and used that as the background image. This is an example of a feature that cannot be disabled.
  • An online account I had in the past allowed me the option of opting out of postal mailings. I did this to avoid the waste of paper and security issue of mailing sensitive information through the US Postal Service (a totally insecure conduit). But then the company started sending me notices via email that the information could be downloaded, notices that included my name and a large chunk of my account number! Security by Bozo.
  • How about the Cypress PSoC micros? Pretty cool to have a micro with some configurable analog electronics on chip. I was working on a frequency meter that required high accuracy. Unfortunately, the programming pins on the micro are also the crystal pins! That means I could not have the programming hardware connected while making accuracy measurements. And I had to put the programming connector right next to the crystal which was very inconvenient. Who designed that feature? “I don’t know where the programming pins should go, Bob. Just use those crystal pins there. They aren’t doing much.”
  • Microsoft Windows. ‘Nuf said.

Then, how do you select features? First, select the minimum features required to solve the customer’s problem, with possibly one or two additional features to make his job easier.

Features should be selected for robustness, not glitz. If you cannot make it work consistently, then leave it out. OfficeMax sells injet cartridges that are supposedly compatible with Lexmark printers, but after the second set of compatible cartridges, the printer refused to print. The ‘feature’ of compatibility in those cartridges is not robust. And the ‘feature’ of Lexmark printers to prohibit use of non-Lexmark ink cartridges has relegated that printer to the landfill. I’ll never purchase another Lexmark product — ever.

(Actually, there’s a railroad track out back of my office, and I considered creating a Lexmark Cam web site to document the untimely demise of the printer. Unfortunately, disposing of printers under locomotive wheels is illegal.)

Avoid features that will confuse the customer. I had one client with a wide range of customers with a wide range of needs. This caused huge feature creep in the product line, to the point where some features were conflicting with others. Some customers wanted password security, and others would forget the passwords so we had to install a universal back-door password, a totally lame solution. Customers could not understand the product, and neither could the sales staff, though they requested each and every feature and approved each addition.

If the product has features that your own people do not understand, how will the customer?

You should also assign a cost to each feature. Some features come at essentially zero additional cost. Some features impact the per unit cost, and some impact the development cost without adding dollars to each unit. If you take the total product cost and apportion it to each feature, it will be easier to keep and kill features. And stating it in terms of dollars will help marketing people understand the true cost of each feature.

Another valuable exercise is telling a prospective customer about each feature and watching his or her reaction. We engineers tend to make things too flexible and complicated. A blank look from a potential user is a powerful thing.

Author Biography

Hank Wallace is the owner of Atlantic Quality Design, Inc., a consulting firm located in Fincastle, Virginia. He has experience in many areas of embedded software and hardware development, and system design. See www.aqdi.com for more information.