Products have Bugs?

A few years back, I was blindsided by a problem that is plaguing the creation of technology-based products and services. We don’t teach our technical community of students, developers, computer scientists and engineers how to solve problems.

But I don’t mean original technical problems like how to build a faster computer or how to diagnose cancer through advanced imaging analysis. Those “problems” are the types of technical and social challenges that got us into engineering and science in the first place.

I mean the unintended problems that plague us on the quest to create a portable artificial kidney or deliver high fidelity movies over a cell phone. Problems that weren’t supposed to be there in the first place.

I mean Bugs.

We’re putting more bugs into our products without having the skills and expertise to take them back out again.

“[U]sers are constantly uncovering defects in our … systems. We devote more time to fixing problems than developing new applications. We don’t have time to do it right the first time, but we always have time to do it again.” [1]

Companies are racing to deliver new products with cutting edge features in less time - but quality has taken a back seat. Product complexity has skyrocketed. Software errors are estimated to cost the US economy $59.5 billion annually. [2] Software bugs in medical devices have killed patients.

You probably know that computers are embedded in everything these days, from cars and cell phones to washing machines and meat thermometers. But did you hear about the guy who had to reboot the exhaust fan on his stove?

The same bug that can cause that car’s engine to stall, can also cause that cell phone to dial the wrong number, that washing machine to run too long, or that thermometer to prematurely indicate doneness.

What’s the common element? The root cause?

When faced with a new symptom or bug, technical folks at every experience level are faced with the same question, “Okay, what do I try next?” How you answer that question is crucial. It is the difference between being an effective developer and debugger or a struggling team member. Wouldn’t you like your next step be a logical one instead of a random one?

It’s all about your approach to problem solving.

Is This Bug Infestation Problem Really Here to Stay?

Effectively designing and debugging embedded systems is solidly here to stay because nowadays computers are in everything. Only 2% of microprocessors end up in personal computers or servers; the rest are in devices such as your microwave, remote control, pacemaker, and even in (can you believe it?) some toasters.

Something I find amazing is that most folks don’t know what an “embedded system” is, even though they own dozens of them. “Embedded systems pervade every aspect of life, often going unnoticed [by] the end user while at the same time enabling new activities, even a new quality of life.” [3]

While finding and fixing software problems is challenging; debugging an embedded system is even worse. Everything is suspect - the hardware, the software, the mechanics, and the disposables if there are any (wait - batteries count). For better or for worse, we tend to design new systems from scratch because each is customized to a particular application. Washing machines don’t need to perform floating point math and remote controls don’t need high resolution graphics displays, and there’s generally not enough memory in the device for all that software anyway.

An advantage in embedded systems development is that code-bloat is less prevalent than in the PC world. A disadvantage is that it makes code reuse difficult … so fresh bugs are coded into in algorithms that have been developed and verified a zillion times before for other devices.

Bugs. Lots more of them than ever before.

( … and that thing about problem solving.)


[1] Quality Assurance Institute (2005). Reviews During Software Development. Accessed Jan 13, 2005 from (link no longer active).

[2] National Institute of Standards and Technology. (2002). Software Errors Cost U.S. Economy $59.5 Billion Annually, NIST 2002-10, Accessed September 21, 2006 from

[3] Sami, M. What Are Embedded Systems? University of Lugano. Accessed Jan 13, 2005 from