I don't know why, but I frequently find myself writing volumes as a comment to someone else's blog. I've turned some of them into blog posts here - if there was any way that I could tenuously work it in.
Recently it struck me that I can post a comment as a blog post straight out over here, when it is a comment to a comment that has been made to one of my posts. (Is that confusing enough yet?)
::
Em wondered about "programmers" and "engineers," and specifically the prevalence of the latter on this side of the pond in his
comment to this post.
And it is true, everyone seems to have engineer appended these days, from Domestic Engineer for people who focus on housekeeping and parenting tasks to Sanitation Engineer for the guys who pick up trash.
Engineering and engine do have the same root, and most likely the concept has evolved originally from someone concerned primarily with engines to that today of "A person who is trained in and uses technological and scientific knowledge to solve practical problems."
The variety of areas of specialization, from Electrical, Mechanical, Civil, Chemical, Aeronautical, Computer, and Industrial Engineering, illustrates how much technological development has taken place.
::
Most programmers here would have a job title of "Software Engineer." I would classify a programmer as someone who writes code for applications that will be sold as such: Microsoft Word, Movable Type, Oracle etc. At least half of all programmers would have Computer Science qualifications.
Given the high-tech nature of our world, many engineers (and certainly those in R&D) need to be able to code to at least some level of proficiency. Here however the code is not aimed at market, but rather used as tools to make hardware do something (when working on prototypes of products) or to collect and/or manipulate data from experiments conducted on hardware (by running code that puts said hardware through its paces). We code mostly in a scripting language (Python in our case) for ease of modification and accessibility, whereas programmers would use compiled languages for speed and security (among other things).
In my case, seven of my team mates are Mechanical Engineers, and one is a physicist, but all of them jump in at times and modify code, or even generate new code, to accomplish their goals.
I am the lone Computer Engineer, and so I do a disproportionate amount of the coding, by virtue of the fact that I have "computer" in my degree title, although I have some "proper engineering" work as well.
As Computer Engineering is a relatively new degree a word of clarification: In most instances, the curriculum for Computer Engineering is the same as that of Electrical Engineering for the first two years. For the final two years there are a number of required subjects in Electrical Engineering, some in Computer Science, and some in Computer Engineering proper (computer architecture, logic design and the like.) Technical electives can be chosen in any of these three fields to construct a specialty.
By training I would be about 60% engineer, 15% mathematician, and 25% computer scientist.
By job function, my coding is all direct-use data and hardware oriented, aimed at allowing us to fulfil our engineering functions. I think that makes me an engineer who happens to code. But I guess the definition would depend on your perspective :-)