How many Americans could name a single living engineer (Bill Gatesexcepted, assuming he is or was one of our brethren)? When I toldfriends that Dean Kamen was giving the ESC’s keynote, most returned ablank stare. Steve Wozniak was once a well-known developer, but he’sfaded into obscurity despite San Jose’s Woz Way.
Last week, however, the New York Times did profilean engineer, HenryPetroski, who is well-known in at least some circles. He is both anengineer and probably the most prolific and well-known author of booksabout engineering. He covers our field with passion and eloquence.
Petroski’s publications are too numerous to list here. Some of myfavorites include To Engineer is Human: The Role of Failure inSuccessful Design, Engineers of Dreams: Great Bridge Builders and TheSpanning of America, and The Evolution of Useful Things. His 350 page story about the invention and perfection of the lowlypencil (The Pencil: A History of Design and Circumstance ) was,to me at least, a breathtaking look at the nature of technology ingeneral, and this writing instrument in particular. Be warned that someAmazon.com reviewers complain that the tome is a slow read. Be furtherwarned that if folks see your nose in this book you’ll get no end ofrazzing about your reading selections. I’ve just ordered his latestwork (Success Through Failure: The Paradox of Design ) which cameout a few weeks ago.
Petroski is fascinated both with engineering itself, and with therole of failure in improving products. He brings these two together indescribing the difference between science and engineering (which mostpeople just don’t understand): science’s role is to explain the “givenworld,” while engineers create the “built world.”
The nature of failure fills his works, which unfortunately so farignores software. To quote from the New York Times article: “Indesigning and building, engineers calculate how components of theirdesign must perform, and how much stress they can endure before theywill give way…” If one accepts this not unreasonable view the phrase softwareengineer seems incorrect… though I chose to embrace it. Engineerssolve problems, along the way building the world, using bricks andmortar as well as ones and zeroes.
A single bit error in a program can doom a system, yet there’s noway to calculate where the stresses exist. The failure of somesoftware-based systems can be utterly catastrophic. Petroski says:“Systems that require error-free performance are doomed to failure.”Not a happy thought for any complex application.
He further states: “Devices can be made foolproof, but notdamn-fool-proof.” Yet the world is packed full of the damn-fools whouse our products – our customers, who mostly aren’t all that foolish,but who use the equipment without adequate training, or who applyinputs we never expected to see in a real-world environment. What weengineers might call a damn-fool input is really just unexpectedstimulus that breaks our damn-fool code.
There’s a lot we can learn from the failures of others in anyengineering discipline. I highly recommend his books for all engineers– even software engineers.
Jack G. Ganssle is a lecturer and consultant on embeddeddevelopment issues. He conducts seminars on embedded systems and helpscompanies with their embedded challenges. Contact him at . His website is .
My vote for greatest living engineer goes to Dean Kamen.
As for the greatest living engineer, I vote for Al Gore. As for the failure of object oriented programming to completely revolutionize software engineering, I blame George Bush. Heck, everything else that is wrong seems to be his fault…
– Jack Crack
Petroski continues to inform others about (and remind engineers what) engineering is all about. Jack, you'll enjoy “Success through Failure”.
Speaking of George Bush, he might want to read it, too. While the failure of OOP to be “the silver bullet” is certainly not his doing, he appears to share the “don't bother me with the details or history” mindset that continues to plague visionaries and leaders in the software engineering community. Alas, the consequences of his missteps hold far more serious consequences than those attributable to the most tunnel-vision challenged engineers.
– Rick Schrenker
Those who use the term “software engineering” tongue-in-cheek liken it to hacking. Most software is hacked together, but true software engineering has its basis in math and logic just as other disciplines of engineering have their basis in math and physics. Engineers solve problems in sane, well-grounded ways, using well-established methods and tools when they exist, or inventing those methods and tools when they don't.
“…yet there’s no way to calculate where the stresses exist.”
I used to believe this, but tools do exist (have for some time) that do some very complex and impressive modeling. Some of them are freeware; SPIN (spinroot.com) is a very good example of a verification tool that can point out “stress failures” such as deadlocks and correctness violations.
“Systems that require error-free performance are doomed to failure.”
This is either an oversimplification, or a statement of the obvious. Systems that require error-free performance given any conceivable (or inconceivable) circumstance are of course going to fail. Doctor, it hurts when I drive a screw up my nose. It's the engineer's job to know the realistic constraints of the system, design the system to operate within those constraints, state them clearly to the users of the system, and, as best he can, make the system to fail as gracefully (and safely) as possible when the damn fool comes along.
Through his wholly irrelevant comment (Webmaster how did it not end up in /dev/null instead of on this page?), Mr. Crack reminds me of another topic that Mr. G. has covered in his columns: engineers in politics. More Engineers in government, applying their problem-solving skills there, would no doubt add a degree of reason and common sense we just don't see in politics today.
– daniel Daly
Jack replies Daniel, you're so right. There are plenty of forums for folks to debate the pros and cons of individual politicians. Consider /dev/null enabled for such discussions!
We have had two engineers as President – Herbert Hoover and Jimmy Carter. By most accounts, both were competent engineers, poor Presidents. Perhaps engineers should stay out of politics and stick to problems that have actual solutions.
I read “The Pencil” more than once….
– Stephen Sellersville