Software development: Engineering
or an art? Is
software development engineering or an art? MOHAN BABU
writes that there is a creative side to computer programming—it
is a well-known fact that the best (top 5 percent) programmers
are about ten times better than average programmers
To
those in the field of software, the debate over whether software
development is engineering or an art surfaces every so often.
Interestingly, this debate is not really new, it was stirred
over three-and-half-decades ago by Donald Knuth, who wrote
a seven-volume series titled The Art of Computer Programming.
In an essay on “The Art, Science, and Engineering of Software
Development,” published in IEEE Software in January/February
1998, Steve McConnell, says, “Today, software engineering
is still thrown around as a buzzword more often than not.
That’s unfortunate. But the fact that the term is abused does
not mean it has no legitimate meaning. Software development
has come a long way in 30 years. We still do not have an absolutely
stable core body of knowledge, and knowledge related to specific
technologies will never be very stable. But we do have a body
of knowledge that is stable enough to call software engineering.
That core includes practices used in requirements development,
functional design, code construction, integration, project
estimation, cost–benefit trade-off analysis, and quality assurance
of all the rest.”
Even
McConnell’s argument has an interesting dichotomy. On one
hand he concedes that the term “software engineering” is still
loosely thrown around, on the other, he sounds reassuring
by saying that we do have a body of knowledge that is stable
enough to call software engineering. Of course, at this point,
I should probably indicate my favourite definition of an engineer,
coined by Nevil Shute, which goes, “An engineer is someone
who can do for ten shillings what any fool can do for a pound.”
For those curious, twenty shillings equalled one pound.
There
is definitely a creative side to computer programming, which
no amount of rigour or reference to a stable body of knowledge
can replace. Statistics abound, but it is a well-known fact
that the best (top 5 percent or so) programmers are about
ten times better than average programmers. The best programmers
tend to be logical and creative and can churn out solid code
more efficiently than their peers. They generally tend to
bring an out-of-the-box thinking into the programming process,
and they also tend to have fun in doing so.
Going
back to McConnell’s essay, he says, “Once we stop asking the
trick question of, “Is software development engineering?”
and start asking the real question of “Should software development
be engineering?” we can start answering really important questions:
What is software engineering’s core body of knowledge? How
should software engineers be trained? How should software
engineers be certified? And, perhaps the hardest to answer—how
long will it take for all this to happen?” These are perhaps
harder questions to answer and even IT companies and executives
don’t really have all the answers. Some of the larger software
companies prefer to rely on their training and mentoring process
to mould fresh recruits into their way of operating and developing
software. Their argument is also based on the fact that software
development is not all programming, it also entails management
of the software development life-cycle and all the activities
involved thereof. During the training and mentoring process,
these companies hope to identify candidates more inclined
towards software development, and shift other candidates towards
the other aspects of life-cycle like testing, requirement
gathering, client interfacing, etc. While this is not an official
stance companies take, this is perhaps one way for them to
identify good programmers without having to worry about whether
the person is an artist or an engineer.
That
perhaps goes to the crux of the issue, again articulated by
McConnell who says, “Only a prophet could know how long the
public will tolerate computer programmers who make doctors’
salaries without comparable training and education….” This
statement sums up the mindset of hiring managers and senior
executives who are starting to get more reluctant to shell
out big bucks to programmers without a formal engineering
background or training. While this in itself does not settle
the debate over whether software development is engineering
or an art, it is an indication of how organisations try to
find a middle ground.
And,
this is definitely not the last word on this topic.
|