A few months ago I asked the question, “Is Software Development a Science or Art?” and opined that while it has elements of both, it is perhaps at least as much art (or as I put it, craft) as it is science, and that this craftsmanship aspect of it is too much overlooked.
The February 2007 issue of Computer published an article by Raghavendra Rao Loka that basically agrees with my thesis. It has been a little slow reaching the blogosphere because the article is readily accessible only to IEEE members; if you aren’t a member you have to pay $19 to read it. I have to confess, I’m too cheap to read it myself, and have never seen the point in an IEEE membership; but it isn’t hard to follow the “Is too! Is not!!!” debate that is now developing. Here is the core of Loka’s argument as quoted by someone who sprang for either the membership or the article:
Many developers view software development (â€¦) as a science or engineering activity(â€¦) Writing software is neither: I view it as a craft or art, similar to the work required of teachers and writers. (â€¦) So itâ€™s not clear why we call software development software engineering. (â€¦)
No less a personage than Steve McConnell, of Code Complete fame, who probably needs no introduction to most of my readers, was moved to write a letter [PDF] to Computer objecting to Loka’s essay. Now I have a lot of respect for McConnell, as evidenced by my having bought and read both editions of Code Complete over the years. But I can’t agree with his assertion that this question is beyond debate and that it has been established beyond doubt that software development is an engineering discipline.
Certainly, as Loka mentions in his response to McConnell, there are many disciplines supporting software development that can be called engineering. But Loka asserts that the actual act of writing and maintaining code is not an engineering discipline. Even McConnell, in his letter, has a Freudian slip and says, “The issue is educating practitioners and bringing them up to speed on the current state of the art.” There’s that naughty word creeping in there again!
HackNot has come out against Loka as well, but methinks he, like McConnell, doth protest too much. He ends up likening the engineering side of the argument to the ancient Romans, and the agile / craftsmanship ethic to the ancient Greeks, and suggests what’s really needed is a hybrid approach.
As McConnell acknowledges, huge edifices have been erected to the fantasy that software development really can be pure software engineering. Yet even proponents of the idea have trouble denying that software development has at least some subjective, artistic, qualities of a craft.
I’ve seen efforts to reduce development to an equation come and go; it will no doubt always be the Holy Grail of the profession, and just as elusive.