





|
What's my line? Scott Adams thinks he knows, and so does Richard
Stallman. But are they right?
Engineering Work In Progress
Anyone who travels on British Rail knows what to expect when he
sees the above notice: inconvenience, delays, outages. I think that's
what the phrase engineering work conveys to most people.
That's why I've never given up being surprised at the way so many
people in the my field of work refer to themselves as 'software
engineers'.
In The Dilbert Zone, they even elide the
'software' part in context: "Have you got what it takes to be an
engineer?" asks Dilbert in one.
"No, guv," I'd have to say, if he were asking me. "I'm not wearing
a grease-stained navy-blue boiler suit, nor a flat cap, neither of my
hands currently contains a spanner, and I wouldn't know an engrailed
flange from a swivel clevis even if one were riveted to my soffit
board". I don't mess with mountains, so I'm not a mountaineer. I don't
mess with engines, so I'm not an engineer.
Moreover, and crucially, what I do isn't analogous to engineering
either. Some of the elements are there: the hard rules of the
underlying system, the pragmatism, the beer-drinking and curry-eating
-- but what I do has an aesthetic for which I just don't think
engineering is a good metaphor.
I remember my director of studies at university grumbling that some
professional body, the IEE or BCS or somesuch thing, was visiting the
department to "accredit" the degree course as including the proper
elements of software engineering. He said he'd felt like standing at
the door, debarring them and shouting "Go away! I won't allow you to
accredit our course! It's not about engineering!", but English
propriety won him over and he did no such thing.
I agreed with him about that, especially after he pointed out
exactly which lecture courses had been included in the degree
only because the professional body had required them. One was
a course on COBOL, which sounds dreadful but was leavened considerably
by the lecturer's dry wit and his air of finding the extraordinary
language as laughable as the rest of us did.
The other course was actually entitled 'Software engineering', and
by contrast was even more dreadful than it sounds. It was lectured by
someone who had, in a previous course, made something quite
interesting seem dull and, without him ever saying so, we all soon
realised that he was only lecturing the software engineering course
that year because he'd drawn the short straw in the department. By the
end of the course he was boring himself silly as well as us: "I won't
bother drawing a diagram of this", then a long look at the ceiling and
a deep sigh, "well, I suppose I ought to" and doing so.
Although I agreed with him that computing is not a branch of
engineering, I didn't pursue the argument as I think I was then going
to disagree with him about what it is. He thought that with its
discoveries, its carefully described rules, it was a science -- the
degree course was called "Computer Science" -- and, as he was a great
arguer whether or not he was right, I didn't feel like pressing the
point that I don't think it's a science either. I think it's a craft.
Look in the back pages of MSJ or InfoWorld: 'software engineer' has
become the standard phrase for we who conjure computers to do our
bidding. Even my own job title was 'software
engineer' until recently -- it's now 'senior software engineer'. A new
phrase was undoubtedly needed to replace 'computer programmer', as
people think they know what that means now and it's no fun admitting
at parties to being one. 'Software engineer' just doesn't describe the
job, though.
'Software craftsman'? Craftsperson? 'Software artisan' (with its
echoes of artisan boulanger)? 'Software writer'? None sounds
right, but all are better descriptions than 'engineer'. There is that
about being a good whatever-it-is that cannot be taught. That is to
say, you can teach almost anyone to be an okay software
writer (it has that, at least, in common with engineering): someone
whose programs don't fall over much. Companies who advertise for
'software engineers' are likely to get just such okay software
writers, and some might not even notice. But there's a difference
between an architect whose buildings don't fall over much, and a good
architect, and the same is true of software writers.
How to describe these craftworkers? It seems fitting, as a
counterculture to an industry which, when left unchecked, defines an
API as 'a way of leveraging core functionality' where 'a system call'
would do just as well, that the best-sounding description I can come
up with is shorter than either 'software engineer' or
'computer programmer'.
At parties now I say, "I'm a coder". People aren't sure they know
what this is, but often vaguely associate it with New Media, if they
know what New Media are. (I, like most people who know the score,
abhor the recent trend of describing HTML authors, like that Higher
Source lot, as "computer programmers".)
It still says 'senior software engineer' on my contract, but I'm
not worked up about getting them to change it. 'Software engineer' is
so common in the language now that it's got entirely holistic
semantics: in people's minds it inherits little or nothing from the
semantics of 'engineer'. I view the phrase as an atom, and, except in
job adverts demanding five years' COBOL experience, inwardly translate
software engineer and senior software engineer into,
respectively, coder and well-'ard coder.
-- Peter Hartley, 3rd April 1997
See also
All Rites Reversed -- Copy What You
Like
|