Engineer? Scientist?

Looking over some articles in the March 2009 issue of the Communications of the ACM magazine, I found a very good piece column (Is software engineering engineering?, Denning, Peter J., and Riehle Richard D. , Communications of the ACM, 03/2009, Volume 52, Number 3, p.24-26, (2009) ). Quoting from it:

The search for an alternative to the programmer image is already a generation old. In 1989 we asked: Are we mathematicians? Scientists? Engineers? We concluded that we are all three. We adopted the term "computing", an analogue to the European "informatics", to avoid bias towards any one label or description.

(...)

Predictable outcomes (principle of least surprise)

Engineers believe that unexpected behaviors can be not only costly, but dangerous; consequently, they work hard to build systems whose behaviorthey can predict. In software engineering, we try to eliminate surprises by deriving rigurous specifications from well-researched requirements, then using tools from program verification and process management to assure that the specifications are met. The ACM Risks Forum documents a seemingly unending series of surprises from systems on which such attengion has been lavished. Writing in ACM SIGSOFT in 2005, Riehle suggested a cultural side of this: where researchers and artists have a high tolerance, if not love, for surprises, engineers do everything in their power to eliminate surprises. Many of our software developers have been raised in a research tradition, not an engineering tradition.

It would be an interesting excercise to find how people rate themselves in this regard in a large group of developers, and find the differences in their coding styles, or how varied (in developer profiles) are each of the sub-groups.