10 Steps to Better Engineering Designs
This article was inspired by Joel Spolsky’s article “The Joel Test: 12 Steps to Better Code.” This is a revision of Joel’s rules applied to the hardware engineering design process.
Do you use source control?
Always a must, no matter what you’re doing. Now keep in mind this doesn’t mean to have to deploy the most amazing, cutting edge VCS out there. The source for the linux kernel was passed around in tarballs for years before it was moved to git. However having a nice universal stream-lined solution makes things nice.
Can you make a build in one step?
I can’t really think of a compliment to this. This is really getting at reducing overhead in repetitive tasks, no matter where they are.
Do you make daily builds? Do you take a look at the project as a whole daily?
Keeping a good perspective on the project as a whole is always a good idea. Is that new idea you’re tinkering with designing really useful to the project as a whole?
Do you have a bug database?
An automated way to keep track of design problems and issues is always a good idea.
Do you fix bugs before writing new code? Do we fix problems before continuing design?
This is really not as big of an issue for hardware as your design generally doesn’t work at all if you have design issues. As you scale up to tasks such as microcontroller design this becomes more relevant.
Do you have an up-to-date schedule?
An up to date and thorough project plan will keep you sane especially as project complexity goes. Customer’s love to see that you’ve thought every aspect through to the very end.
Do you have a spec?
As Joel says “No Code Without Spec.”
“No Circuits Without Spec.”
Creating a spec before you begin designing your individual components will make sure you and everyone you’re working with have a clear idea of what exactly you’re doing. Also specifications allow someone else to easily pick up where you left and reproduce your designs. This doesn’t make you replaceable, it allows you to take a vacation.
Do programmers have quiet working conditions? Do designers have the right working conditions?
I’m not sure that quiet is the best working condition, but everyone knows what working condition is right for them.
Do you use the best tools money can buy?
This is big problem for a lot of companies, many tend to cheap out, especially start-ups. Some try to find cheap ways to get around this and end up with solutions that don’t usually end up working and cost them twice as much or more in the end. Unless you’re designing the next start of the art tool you should be focusing on what you’re designing and not the tools you use to do it. Start-ups especially need to eliminate as much overhead as possible.
Do you have testers? Do you do proper validation?
“If you don’t know how something works, you don’t know how it can hurt you.” - Jim Selin
Make sure you do all of the validation necessary for the environment your designs will be operating in. At EM we do a lot of designs for the down-hole environment ( as in underground ) and these designs require that we test them at high temperatures, high pressures, high shock levels and high amounts of vibration.
Do new candidates write code during their interview? Do new designers design circuits during their interview?
I hadn’t thought of this before now and find it particularly interesting. When Abe and I recruited some of our first new employees we actually had them identify the functions and operations of typical types of circuits. This is a great way to quickly measure whether or not someone is worth their salt.
Do you do hallway usability testing?
This could apply if you’re designing consumer products, but for most of what we do at EM the designs aren’t really “useable” by passerbys.
I’ll start applying this test at EM and let you know how things work out.
- Ken