Getting smacked by the long tail of poor design habits
In the 80’s I did a fair amount of consulting and enjoyed it greatly.
I would come in, hear what it was the person hiring me wanted; meet with the people that I needed to work with and proceed to toss together a design, parts list, and program. Sometimes I would work with them to get a board into production. I knew my chips and code and could make all kinds of amazing toys.
One of my biggest repeat customers eventually offered a good salary at the same time that my wife was feeling insecure about heath care and those too-long times between contracts.
I have been working there full time since 1989.
In the time between then and now I have designed and programmed many projects and put a lot of product in the field. Unlike my time doing consulting I was there to do the troubleshooting, customer hand holding and continuation engineering.
I look back on some of what I did for my consulting customers and cringe a bit. I had several bad habits that did not seem to be a problem at the time but now that I am the one that is experiencing the fallout I feel very differently about them.
The long tail on these projects reaches around to smack you alongside the head.
Calling whatever product at hand "the new XYZ” board. In a few years this will be the “the old XYZ” board. After about the third spin of "the new XYZ" board it get kind of silly. Careful version control from day one is more important than most nubie engineers realize.
Configuration control. What was in that box and who got it? It all seems clear at the time. After you have 20 versions of a product support gets to be a nasty chore. It is kind of embarrassing to have to ask a customer to take pictures to figure out what you sent them.
Part lists that call out a certain supplier’s part number instead of the generic key features. Crossing when the part goes obsolete can be painful.
Using the hottest new sole-sourced chip. What happens to your product when that chip does not sell well (too expensive? Too hard too use?) and is discontinued? Time that should be spent making new products is instead burned doing continuation engineering.
Not writing good comments when you write the code. Sure you will get that done – right after the next hot project is done, or the one after that, or it turns out - never. Eventually you come back to fix a bug or add a feature and find that you are looking at code that may as well have been written by an alien because you have absolutely no idea what you were thinking.Trust me on this one - aliens.
Poor user and shop manuals are their own special hell. You can write clear instructions one time and for the users that actually bother to read – get them going by themselves. Or you can provide phone support for each new user, over and over.
For that matter, making a clear and self-explanatory user interface goes a long way to making happy customers. It sucks having to explain how to make your widget do what it is supposed to do – over and over and over. Spending the time to do some careful user testing of an interface before you spend a lot of time committing to a particular interface is time well spent. I now run though the new product designs over and over as I drive to and from work. What if I did this? How do I do that?
I did get some things right.
I used to work as an assembler to pay my way through school. At the time I longed to be the one designing the hardware I was assembling. In retrospect – this is some of the best engineering education I ever received. You can build my designs and they are generally pretty easy to work on.
I do take things apart to see how "the other guy" solved some common
design problems; I have learned some useful tricks this way.
I have seen some products that were made by engineers without hardware experience that were a pain to build. This generally translates to an expensive design.
Along the same lines – having been on the receiving end of bad assembly instructions, mine are generally clear and complete.
What things did you do that in hindsight you would do differently?
- Write a Comment Select to add a comment
To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.
Please login (on the right) if you already have an account on this platform.
Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: