TruerWords Logo

Search TruerWords

Sign Up  Log On

“Software Development”

From: Seth Dillingham In Response To: Top of Thread.  
Date Posted: Monday, March 17, 2003 8:42:13 PM Replies: 1
Enclosures: None.

Over at Kuro5hin, Mishkin Berteig articulates the utter lack of similarity between building construction and software development, and the problems we (developers) have that stem from forcing the construction analogy.

I actually agree with him, although I know some people would vehemently disagree. While it is certainly beneficial to pattern some software after real-world objects, it really doesn't make sense to think of developing software as constructing buildings.

Mishkin touches on the "intellectual nature" of software development, as compared with the "physical nature" of buildings:

Human beings grow up in a physical universe where physical cause and effect are relatively obvious in many instances. In the case of structures this is particularly true. The ancients, without any complex math or physics, were able to create astounding physical structures from the pyramids to the cathedrals. This obviousness means that creating standard and re-usable pre-fabricated building materials is easy, and it is easy to use them. A steel girder has a fairly simple API: fasten both ends to a structure and put load bearing stuff on it. Nails, screws, cement walls (waffle-crete), joists, and cut lumber are all standardized and easy to use.

Software is incredibly abstract and often very arbitrary. Cause and effect are not obvious or intuitive despite programmer's best efforts. Examining another programmer's code with a mind to using it (let alone modifying it) is not a simple exercise. Even function or class libraries and toolkits such as the Java Development Kit are incredibly complex.

Again, I agree with him, but I don't think he goes far enough. Programming software is abstract, but so is *using* software. Even with UI standards (in desktop apps, no such thing on the web of course), most software just doesn't feel "real," and I believe this is precisely why a huge percentage of the population find computers very difficult to use except as overpriced typewriters and game consoles.

Software sucks. All of it.

Programmers and UI-geeks are always whining that we haven't made more progress in the "decades" that software has been around. The programmers (myself included) complain about how difficult it is to plan a project and then work the plan (or how hard it is to "reuse" someone else's pre-written package), and UI-geeks complain about the terrible usability (of course) in all software. It's not real!

We are, people are real. Our lives (when we get our heads out of these boxes) are real. My hammer is real. My bike is real. The most complex things in our real lives -- other people -- are still far easier to interact with in a meaningful way than any computer software.

The various analogies upon which most software is based -- the desktop metaphor, documents and folders -- is flawed at best. Lots of people are talking about that, and there have been some attempts at a new analogy. Unfortunately, while better, these new analogies really don't solve the problems: it's still not real, and the inevitable problems that arise with this type of software is just as confounding to the user as anything under the "old analogy."

Did I mention that software sucks?

Discussion Thread:
  • RE: Software Development (by David Weingart at 3/18/2003)

    But isn't that the point of software? A steel girder will always be a steel girder, whereas a computer


There are no trackbacks.

is Seth Dillingham's
personal web site.
More than the sum of my parts.