Lesley and I have been crossing a lot of
bridges lately. (I mean the literal kind, not the metaphorical ones.) First in our trailer and now in our
motorhome, we've been doing a lot of driving throughout the Pacific Northwest
and Northern California, and there's plenty of water here—entire oceans of
it, in fact. And where there is water, there are—not surprisingly—bridges to
enable us to cross that water.
Early
on, this was nerve-wracking. Towing a 19' trailer across a bridge with a fairly
small Chevy pickup truck, trying to stay in the middle of what seemed a
terrifyingly narrow lane was, at first, pretty scary—especially if the wind was
up. We eventually got used to the feeling of being suspended on this thin
concrete-and-steel lifeline hundreds of feet above the water, dragging all of
our worldly goods behind us. Eventually, we got to the point where we could
cross a bridge, even a narrow one, without giving it too much thought. Now we
do the same thing in a somewhat larger motorhome. And, as expected, it was
frightening at first, but eventually became second nature. Other than making
sure that it’s not too windy, we now cross bridges without giving the
crossing a second thought.
But
even at our most terrified, one thing we never worried much about was the
integrity of the bridge itself. We might veer off of the bridge, or be blown
off of it, or be pushed off by a trucker who'd lost his brakes or been
blown into another lane, but we never thought, "Oh, my God! What if the
bridge falls down?!" Circumstances might intervene to do us damage, but
the bridge itself would stand, we could be pretty sure.
![]() |
Sometimes the "guarantee" is implied by a sign that you can see before you get on the bridge itself. (Image in the public domain.) |
Bridges
are usually massive and are guaranteed to carry a certain amount of traffic.
The Yaquina Bay Bridge, which we cross almost every week, was built in 1936,
one of a series of bridges designed by Conde B. McCullough. It is over 3,000
feet in length, and it stands 133 feet above the water at its highest point. It
contains 30,000 cubic yards of concrete and over 3,000 tons of steel. As I
said, massive. (And this bridge is quite small compared to many other suspension
bridges around the world.) And because it's so substantial and so
well-designed, the bridge is guaranteed to be able to hold the weight of
the traffic crossing it.
Which brings us to software.
When
I was heading up the software development team for a publishing company in
Texas, the powers-that-be (of which I was most assuredly not one) decided that
all of our programmers would be given a new title: henceforth, they would all
be known not as developers or programmers, but as "software
engineers." I really didn't care what they were called, so long as they
showed up at the office and did cool programmy things, preferably while wearing
shoes and long pants. And to tell the truth, the programmers didn't care,
either. You could call them whatever you wanted; as long as they got paid and
had snacks and got to do cool software things, they were happy. (And most of
them wore shoes and long pants most of the time.)
But
one of my developers emphatically did not want to be called a "software
engineer." This man—we'll just call him "John," because, well,
that was his name—felt that as programmers, they did not deserve to be
called engineers. The programming profession, he felt, was not precise enough,
nor its results predictable enough, to be called "engineering."
Engineering, he said, meant that the end result, the product, was designed in
such a way that the builders could guarantee the outcome of its use.
The
example he used was, in fact, a bridge. A bridge is designed and built and guaranteed
to carry a certain amount of weight. If built correctly, it will in fact carry
that weight, and it will do so for a specified period of time.
Software,
on the other hand, is never guaranteed. It's too complex and used in too many
different environments for the developer to absolutely guarantee that it will
function as designed. And sure enough, if you go looking for guarantees for
software you've purchased (or, more likely, licensed), you will find a lot of
vague legal-ese that basically boils down to "This really should work, but
if not, well, we're not responsible. Sorry." If you go looking for
remedies for failure, you'll find that those remedies are almost always limited
to replacement of the media on which the software was supplied. (Which is even
more meaningless these days, since most of your software was probably
downloaded or is provided as a cloud service.)
John
felt that, until programming had evolved to the point where designers
and programmers could guarantee their work, then it was not deserving of
the name engineering, and he would rather just have his title listed as
"Programmer" on his business card.
I
sympathized with John and told him that I would convey his feelings to the
aforementioned powers-that-be. I did so, and the PTB explained to me that they were
going to do exactly what they had intended to do all along, that John's title
was now "Software Engineer," and that I should now scuttle back to my
dark and forbidding lair and prepare for the next in a seemingly endless series
of product delivery deadlines.
I
returned to John, gave him the bad news, and sympathized heartily with him,
while patting him gently on the shoulder. Then I asked him to please put his
shoes back on.
He
was right, though.