I’m working on my weekly InfoWorld column (this one will run in print and online on March 8) and I’m referencing an essay from Frederick Brooks (of “Mythical Man-Month” fame) entitled “No Silver Bullet: Essence and Accidents of Software Engineering.”
You just have to read this. I’ve read it many times before and referenced it in a column on web services two years ago, but the essay continues to amaze me. Although it was written eighteen years ago, the content still rings true. Just a sample:
The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms, and invocations of functions. This essence is abstract in that such a conceptual construct is the same under many different representations. It is nonetheless highly precise and richly detailed.
I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared with the conceptual errors in most systems.
If this is true, building software will always be hard. There is inherently no silver bullet.
Amen. Be sure to read the rest.
A nice reminder from Chad about what is, indeed, one of the best essays on why software is so hard. While it might be a little bit of a stretch for your average knowledge worker who isn’t a software engineer, it’s a worthwhile stretch.
I often think of software engineers and programmers as one of the earliest examples fo modern knowledge workers. You could do worse than to spend some time thinking about how to benefit from what software developers have learned about doing and managing knowledge work. This article from Brooks is one excellent starting point.