Real engineers do the same thing all the time. That's how we learn and build
new stuff. A lot of it falls apart, however we learn in the process.
What
scares me is engineers designing bridges that haven't randomly played with
bolts. What did they miss? Sometimes it is something significant. [ Reply to This | Parent | # ]
|
It is sometimes said that if buildings were built the same way as software, the
first woodpecker to come along would destroy the whole of human
civilisation.
That hints at the major differences between software and civil
engineering.
Yet there can also be similarities.
In civil engineering, it is often
possible to reuse a design, or a family of
designs, to solve a series of
related problems. So there were military bridges
designed as kits of parts to
be assembled on site in a relatively short time, to
reinstate a road or a
railway destroyed by enemy action so that supply trains
or tanks could roll
across it. Some of those bridges were also used to repair
accidentally damaged
bridges, and despite their age and nominally
"temporary" nature, are still in
use because they have proved adequate and
surprisingly robust. Such economy of
design is also found in the software-
engineering practices of shared libraries
and code reuse.
The general attitude of civil engineers is to build a bridge
stronger than it
needs to be, if possible - and if there is any uncertainty,
they will err on the
safe side. The practical upshot is that early railway
bridges and viaducts, built
in the early-to-mid Victorian era when locomotives
sometimes weighed as
little as 20 tons and wagons might have carried 12 tons
each, still serve in
their original capacity in the present day, when
locomotives more typically
weigh 120 tons and wagons can weigh as much as 100
tons (in Britain - other
countries may run even heavier trains). One of these
bridges is the famous
Maidenhead
bridge built by Isembard Kingdom Brunel (a man with a hilariously
over-
engineered name), which others of his time were sure would collapse even
under the weight of contemporary trains. As engineering has improved it's
understanding of the safe limits of various structures, these bridges have
been found to be capable of withstanding far more than their original
designers assumed. Meanwhile if we look at work by well-known and
well-
respected software engineers, we will often find similar "sanity checks"
and
"safety valves" that aim to make their software more robust than it
absolutely
needs to be.
In fact, the modern software environment doesn't
face merely woodpeckers
but the equivalent of termites, sulphuric acid,
flooding, high winds, speeding
juggernauts and kamikaze jetliners, all aimed at
every conceivable weak point
in deliberate or accidental efforts to demolish
their structure. It is a robust
piece of work indeed that can survive all of
that without failing. Bridges have
fallen to just
one of these
challenges many
times, although modern bridges often aim to be more robust against
them
than older designs. [ Reply to This | Parent | # ]
|