Hacker News new | ask | show | jobs
by mv1 5521 days ago
The article likens the building of a skyscraper to the design of software. I think that the analogy here may be wrong (having made the same incorrect analogy myself).

Perhaps the correct analogy is that the building of a skyscraper is akin to copying software (i.e., building a new replica of a design). In this regard software is the ultimate engineering. Once you have the blueprint (the final source code), stamping out copies is perfectly reproducible. The program applies to many more environments than a skyscraper design.

On the other hand, designing a skyscraper is alot like writing software. The designer doesn't know what the building will look like. There is an iterative process where ideas are thrown around, design errors identified and fixed, etc.

In terms of quality measurements, the same measurements don't apply to software since each copy is a perfect replica. There is little need to measure how closely a copy reproduces the design, it is often perfect. The design may have flaws, but so may a building design.

Having said this though, it sure seems that software is alot more unreliable than most bridges and buildings, so the question is, "Why?"

3 comments

    Having said this though, it sure seems that software is alot more unreliable than most bridges and buildings, so the question is, "Why?"
That's a good question. Off-hand, I would say that part of the reason has to do with experience. Humans have been constructing bridges and buildings for thousands of years. As such, engineering of this sort is generally well understood. Occasionally, when working with new materials or grander scales, past experience fails, e.g. Tacoma Narrows Bridge.

There is another important way that designing software differs from designing structures. Whether a building stands or collapses is governed by the laws of physics. On the other hand, software design takes place in an entirely abstract world, where the laws that govern it are sometimes subject to change. That combined with the sheer scale of much software makes it difficulty to thoroughly reason about it.

Having said this though, it sure seems that software is alot more unreliable than most bridges and buildings, so the question is, "Why?"

I'd say it is that way because for many use-cases, the point where software becomes useful is much lower than it is for bridges. If my MP3 software has a bug, worst case is I have to use a different one and import my library. If my stereo has a problem, it could electrocute me.

I would liken software creation to something more like plumbing, cobbled together and constantly requiring maintenance.