Not to be too hard on you though; yes, the biggest aesthetic difference between hardware and software engineering is that with the latter, the cost of fabrication is essentially zero. But as described here: http://www.ics.uci.edu/~jajones/papers/p439.pdf
> The essential distinction between software and other engineered artifacts has always been the absence of fabrication cost. In conventional engineering of physical artifacts, the cost of materials and fabrication has dominated the cost of design and placed a check on the complexity of artifacts that can be designed. When one bottleneck is removed, others appear, and software engineering has therefore faced the essential challenges of complexity and the cost of design to an extent that conventional engineering has not.
So naturally the set of constraints is different than the ones with which hardware engineers contend, yet software engineers do fundamentally apply math and science to design products to meet hard, real-world constraints: Development time and cost, program correctness, time and space performance under expected load, reusability, and maintainability to name a few.
If there is a valid objection to the notion of software engineering as a "real" engineering discipline, it should be that a subset of the science upon which the discipline is based – that of software architecture – is at this point still underdeveloped and poorly understood, and as a result software engineers generally rely on their own intuition when it comes to architecture. (This in contrast to fundamental computer science, which is well developed enough that we can typically determine from mathematics or empirical evidence what kind of algorithm or data structure to use under given circumstances.)
But an arbitrary bias that engineers produce only physical artifacts does not constitute a valid objection.
You betcha, PEs are justifiably proud of the title.
We have sysadmins around here who call themselves "Microsoft system engineers". It bugs me, but title inflation is a Dilbertesque fact of life.
The actuality; the professor is correct. The circumstances of the situation just make for misunderstanding and an apparent disrespect for the medical doctors walking around, from the perspective of the medical doctors.
edit: changed the wording
Engineering is defined by the various international agencies and schools that accredit engineers, not Wikipedia. "Software Engineering" is a real engineering discipline in Canada and other places. The premise "An engineer's model must be tightly bound to the laws of physics and chemistry" just seems to be a construct of the author.
Engineering is about the practical application of rules, balancing factors like cost, maintainability and scope. Chemical, mechanical and software engineers do similar jobs, working with different sets of rules.
An exam based in physical sciences would be a great way for people with an educational background in physical sciences to stake a claim on software, calling themselves "engineers" while everyone else is a mere developer or programmer, putting themselves at the top of the field.
I majored in Math and have an MS in Industrial Engineering. I think that it would make as much sense to make everyone prove that they've passed courses in Abstract Algebra and Real Analysis, and take a difficult exam involving proofs about optimization and convexity to be a "software engineer." And this time, I would get to be on the top of the totem pole instead of people who have a more physics and chemistry based education! I hope it's clear I'm being facetious here - I just want people who do advocate PE style licensing to get a sense of what it's like when people from a different field start telling you what you need to know and do to practice your craft.
I do understand that there are software elements to engineering systems, and it might make sense to have some sort of licensing around it. However, I have yet to see a professional association refrain from severe "scope creep", using their cartel-like power to establish arbitrary and unnecessary barriers to entry to restrict entry and jack up prices.
Software is kind of like engineering, but I agree with the author that it has more in common with mathematics. Seriously, it would make more sense to require a degree in math and an exam in path than a PE exam. And it would not make sense to require this kind of math.
My take on it is this - I am not an engineer, what I do is not engineering, and the PE folks have absolutely no legitimate claim on what I'm doing.
It's alot like doctor or lawyer, you technically can't call your self one unless you have a professional certification from the applicable engineering society.
I know when I graduated with an engineering degree in Canada you couldn't call your self an engineer until you were a PE.
Personally, I don't usually see people favoring the word "engineer" over programmer or software developer. As for myself, I see them as synonyms.
I'm not certain it has anything to do with the physical world; after all Industrial Engineering is considered a valid disciplined that is entitled to an Engineering license, and many of the IE's I know might be better characterized as mathematicians.
Still, I tend to agree with your assessment of the term Engineer, although it's largely because unlike other Engineering fields, Software Engineers in the US seem to be happy to hold the title without having to meet any of the legal requirements [1]. A PE license, while not insurmountable, is not exactly the easiest title to acquire. Efforts have been proposed to make Software Engineering part of this licensing process, but it seems to have a lot of push back. Perhaps the solution is to have legal weight (perhaps like 'Lawyer' or 'MD') behind the title, as countries like Canada have (the US has this to some extent, but it's not nearly as strong).
But here you're taking it for granted that professional licensure of software engineering is actually desirable, which is not at all agreed upon. Among the organizations against the notion are the ACM.
The problem in this is that nobody agrees on this set of standard/knowledge (a Body Of Knowledge). For instance, if the document and the experts required to testify in court define that "a reasonable engineer has to use a waterfall methodology", then you could be liable for using an agile methodology (that's just an example). The domain being so young, there is not yet an agreed upon profile of what a 'reasonable software engineer' might be. The SWEBOK[1] attempt to define such a profile was initially supported by both IEEE and ACM, but - if I remember well - the ACM dropped their support in face of these concerns.
I think both organizations support the legalization of the "Software Engineering" field (and perhaps title), but also recognize that the field is not yet mature enough to be properly defined and regulated.
Disclaimer: I do not have sources for my claims on IEEE and ACM's positions on the matter; I merely read about it a few months ago. However, you can find interesting conversations on the subject by googling 'SWEBOK'.
As you indicated, ACM would constitute as (a major) part of that push back, so I don't see the contradiction.
"Programmer" is someone who just writes code. They don't plan, organize refactor ... they write code according to someone's instructions. They can see that it works and debug issues, but they're not the "architects" or "engineers" of the system. The men doing the physical labor of building a ship aren't the "engineers."
"Software developer" doesn't have simplistic connotations to me, but seems to evoke something in non-devs ... as if I'm using lingo and being pompous.
"Software engineer" is someone who designs software systems and understands the impact of design decisions made from the bottom/back of the stack through the top/front. Perhaps, this being an industry of mental rather than physical labor, the engineer also fills the job of "programmer."
So in my mind, "engineering" is a way of thinking about and solving problems in any given space; it requires breadth and depth. But how do you quantify something like that in an industry that changes so rapidly, where someone can begin to grok concepts and "get their hands dirty" without ever having to approach the dangers out in The Real World? You don't want some random kid to think he can build a bridge, but he can certainly start writing software... and he can become "engineer quality" before he ever gets to a university.
I don't know that I've ever heard anyone call themselves "an engineer." That's nice. Does that mean you drive trains? That you design and build roads? I don't believe many engineers of the physical world variety can just just fields - a computer engineer is not going to build sky scrapers.
Stupid companies have titles and titles are associated with more pay and and more respect. It so happens that people who went to a 2 year technical school would call themselves "programmers" and then those who went to a 4 year college and worked for 5 years don't want to be called by the same label, so they have to invent something sounds harder to get, something more prestigious, so now they are "software engineers". Just like chemical engineers, it implies a certain difficulty of attaining this title, and it is used to differentiate the ranks. But it doesn't stop there, then there is more stupidity there is "Programmer II" vs "Programmer VI" vs "System Architect".
This is even more true in licensed fields. If you have a two year degree, your title will generally be "Engineering Technician", and not "Engineer". And you get to be on a completely different pay scale for the rest of your life as a result of the degree you obtained, even if you do the same work as an Engineer.
For example (note "combat engineers" is in quotes):
"Military experience?
All branches of the military have engineers doing genuine engineering work. In this regard, the military is just like any other employer, and the engineering work experience counts. However, work performed by "combat engineers", electronic repair technicians, and so on is generally not true engineering work." [1]
[1] http://ppi2pass.com/faqs/qualifying-to-take-the-licensing-ex...
The liberal use of the term 'engineer' to describe technicians or mechanics does irk many in the engineering fields, however.
In Germany, the term is protected, so it is illegal to use the label without holding full qualifications, like 'doctor' or 'lawyer'.
Let's acknowledge that language grows and changes as new concepts are invented.
Yes, yes I would.
http://en.wikipedia.org/wiki/Architect_(disambiguation)
- third bullet down
http://en.wikipedia.org/wiki/Architecture_(disambiguation)
- look under 'Process Architecture'
I have no problem with the term 'software engineers', as i do seem some parallels, and it is clear what you are talking about, but please leave the straight up 'engineering' term to those dealing with the physical world.
E: most replies and downvoters seem to have missed that I have no problem with the term where it is unambiguous. You wouldn't call a software architect simply 'an architect' (would you?).