Everything, it seems, will soon be computerized in some fashion. Everyday
appliances like your refrigerator and oven already contain microprocessors
and I recently saw a pair of shoes that contained a small computer
to allow kids to see how fast they run and how high they jump. Soon,
these embedded systems will become a deeper part of our lives than
ever before. Not only that, they will begin talking to each other.
All this computerization begs the question, "Are we, as computer
professionals, capable of writing software and building hardware that
is good enough to become part of people's lives in ever more intimate
ways?
Of crashes and bugs
As anyone knows, a computer, while immensely useful, is not the most
stable of devices. Hardware failures and software bugs plague anyone
who uses a computer. People gripe and grumble over these failings,
but thankfully, the effects of these errors are usually limited to
a few people. Increasingly, though, we are witnessing more and more
computer issues that can effect large numbers of people in a dramatic
fashion.
The failure of one air traffic control system can have ripple effects
throughout the world in a matter of minutes. Computerized trading
can cause the stock market to gyrate wildly. The failure of one
satellite
can impair the communication of millions of people. As computers
are moved deeper and deeper into our lives, the possibilities of
catastrophic
events grows ever greater. This means that all of you, as computer
professionals, are taking on growing responsibility with every product
you manufacturer and every line of code you write.
Responsibility
Since the inception of the personal computer, hardware and software
manufacturers have done everything in their power to deny responsibility
for the flaws in their products. Bugs are called "undocumented
features" while features that are documented and advertised often
don't work. I am confident in saying that every piece of software written
today contains at least one bug that can crash the program or the computer
running it. In a world where everything from your toothbrush to your
entire home is computerized this is simply unacceptable. Not only will
manufacturers have to strive to deliver products with zero defects,
they will have to take immediate responsibility for any failure of
their products.
Are you ready for such far reaching responsibility in your professional
lives? In the future it is quite possible that you, as a programmer,
might be held responsible for a problem caused by an embedded program
running amok. Perhaps your program had a bug, which caused the toaster
to heat far beyond it rated tolerance, started the kitchen on fire
and destroyed a house. What would your responsibility be if someone
were killed in such a fire? While this scenario might sound far-fetched
it is only a matter of time before you see a case such as this in
the courts. It is inevitable as computers and your code are used
to operate
those devices that used to be strictly mechanical in the past. Your
company, if not you personally, will be held as responsible as any
car manufacturer whose products tend to roll over or catch fire.
Not all problems need to lead to life threatening issues to create
major damage. Programs and devices that report data incorrectly or
fail at critical moments can lead to major financial losses. Increasingly,
these losses will be large enough to threaten the solvency of entire
companies. You only have to ask someone who can't log in to his or
her online brokerage during a market downturn how distressing and
costly such failures can be.
Time for reflection
Even hypothetical situations such as the one above should be enough
to cause you to reflect on the work you have done in the past. Have
you left clients with only half of a solution to their problems?
Do you have bugs in your programs that never seem to get fixed?
Are you
striving for zero defects in every piece of software you write or
sell? If not, the time is coming, quickly, when you must either
acknowledge
your responsibility or find a different career. Like airline safety,
computer reliability is rapidly approaching the realm where perfection
is inadequate. When the smallest flaw can mean life or death it is
everyone's responsibility and duty to insure that flaws do not occur.
It is obvious from the flawed products on the market that many computer
and technology professionals are not yet aware of the power and responsibility
they carry in their work. All of us need to wake up quickly, to insure
that we aren't jolted awake by some major tragedy that could have
been prevented.
Comments, Questions, Reviews?