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
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.