|
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. Thats
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, costbenefit
trade-off analysis, and quality assurance of all the rest.
Even McConnells 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 McConnells 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
engineerings core body of knowledge? How should software engineers
be trained? How should software engineers be certified? And, perhaps
the hardest to answerhow long will it take for all this to
happen? These are perhaps harder questions to answer and even
IT companies and executives dont 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.
Mohan Babu is a US based software consultant
trying to find the sweet spot where IT meets business.
E-mail: mohan@garamchai.com
|