I totally understand this sore spot and would not even voluntarily use the title SE. We’ve had a lot of discussions about this before.
As noted above, I think ‘designer’ or ‘architect’ is a more appropriate word in place of ‘engineer’. But I do have a beef with remarks like that at the beginning of Chorded Zither’s post comparing so-called SE’s with sanitation engineers, though I suspect it was meant somewhat in jest. I object to that because the so-called sanitation engineer hasn’t had years of higher education and experience to get where he is, and likely walked into the job straight out of high school. In software development, anyone who by rights calls themselves a designer or architect has had years of experience and education to get to that point; it isn’t something you can call yourself after a one-week introductory Java class.
In my opinion engineers are those who use applied physics and chemistry. If you never need to go back and check your physics or chemistry books you are not an engineer.
Certainly it was intended as a jest. I think the rest of my comments indicated that I did believe that there are legitimate engineering activities to be found in good software development.
<PourOilOnFireMode>Have you noticed that disciplines that have the word “science” in their title usually aren’t sciences? Physics, Chemistry, & Biology don’t have the word in their names but they are clearly sciences. Political Science isn’t. The Social Sciences aren’t. Creation Science definitely isn’t. And Computer Science…?</PourOilOnFireMode>
Topic for another thread and another day: Do scientists in the traditional scientific disciplines agree that Computer Science is a science?
Computer Science is a big tent for which a lot of stuff is lumped under. A lot of it is undoubtably mathematics, a lot of it is undoubtably science and a lot of it is undoubtable not science. And then theres a huge grey area as well.
I don’t think many computer scientists themselves would call computer science a real science. Small subfields of it are, like AI (although the same caveat applies here!), whilst other areas are branches of maths and other stuff thrown in.
So it would be uneccessarily unwieldy, complicated and pointless.
I agree here, but I would say that engineers deal with the physical world, and use science to control it in a useful way. That means to me a software guy is not an engineer becuase he works in the virtual world. On the other hand, the guy who designs the chips is. Of course there is some overlap with very low level input/output programming, but in general if you are programming, no matter how complex or intricate the problem, it is not engineering.
Does this mean that ABET accredited programs are completely meaningless and that although my degree says I have a Bachelor of Science Engineering in Computer Engineering, I’m not a real engineer?
Your argument could be used to say that EEs are not real engineers because they spend their time working on circuits and would be far more likely to check a book on circuits than a book on physics because a physics book would likely be far too general to be of help.
Exactly. treis and Can Handle The Truth, your definitions don’t seem to jibe with any other:
From wordnet.princeton.edu:
(1) technology: the practical application of science to commerce or industry (2) the discipline dealing with the art or science of applying scientific knowledge to practical problems; “he had trouble deciding which branch of engineering to study” (3) a room (as on a ship) in which the engine is located
From wikipedia.org:
Engineering is the application of science to the needs of humanity. This is accomplished through the application of knowledge, mathematics, and practical experience to the design of useful objects or processes. Professional practitioners of engineering are called engineers.
Both definitions definitely describe software engineering.
But this is a bit of a circular argument. Software engineers cannot be engineers because they don’t work with the physical world - real engineers are only concerned with the physical world. Step back 150 years ago and no doubt there were people complaining about electrical engineers; how can anyone who possibly messes with electricity all day be called an engineer - real engineers don’t meddle with electricity, they use steam and gears!
I’m just sayin’: Why get all bent out of shape if the traditional engineering disciplines won’t let us in their club?
IMO SW Engineering is still a young discipline. We haven’t gone very far in turning it into a science. There’s still a large component of craftsmanship and a lot of hand-waving, and it deals with levels of abstraction that drive the SW managers crazy. We’ll sit around arguing about which component “owns” this or that information and whether this or that component even exists at the time of another event, and outsiders look at it as if we’re just whacking off.
I think people are on to something wrt the argument that we don’t produce anything physical. Rather, we produce a set of behaviors of some “thing” (in my case, radar systems) that are only manifest at execution time. (Sort of inviting a comparison between software and music.) I think that might be part of why we’re not feeling the love from the other engineering disciplines.
If you looked at what people were studying in a Computer Science graduate school, you’d probably call it mathematics. . .
I only have a little insight into this, but they work on problems in “Discrete Mathematics” and “Information Theory”. They seem to study a lot of the problems in “Complexity Theory” (those P=NP problems).
It’s pretty complicated mathematics. “Information Theory” might be more in the realm of statistics or electrical engineering, but I don’t think it’s a stranger to CS departments. I took a small course in it that was taught by a CS grad student.
One of my friends is a professor in a CS department, and his dissertation was in Decision Theory – basically, a purely statistical field.
Part of the issue is that Software Engineers have a very wide range of skill levels when compared to a traditional engineering title. Some of the most rudimentary self-taught hackers are given the title software engineer based on their ability to script in Java and lay out a basic database. They are lumped in with the high-level, enterprise architecture style software engineers who implement rigorous QA methods and documentation and place a huge emphasis on scalability, maintenance budget and optimization techniques.
The latter group use many of the same big-picture project management skills as a typical engineer.
Another comparison is the vastness of disciplines that most other engineering professions require. An Aeronautical Engineer is going to need to know some very complex details about disparate fields such as material sciences, fluid dynamics, rocketry, chemical engineering, physics, structural dynamics and software engineering in addition to the specifics of aeronautical engineering.
A Software Engineer needs to know a variety of languages and principles but in large part they have a greater degree of similarity than to former.
All in all, I don’t think that traditional engineers look down upon software engineers, but I think they might question where they fall within that somewhat casually assigned title. Presuming you aren’t just a glorified hacker/developer you’re an equal, though very different.
There’s an awful lot of comparisons between a Civil E., a Mech E, a Aero E, or an EE. Things get a little greyer with Chem Es, BioMed Es, MATSEs, then software engineers round out their own corner of the group sharing very little with the rest.
I’m going to weigh in on this. I have both BSEE, and a BSCompE degrees. I’ve done both hardware work and software, although most of my experience is in software.
In my arrogant opinion, the epitome of Software Engineering is someone who creates firmware or embedded software that has very little human interaction. This requires intimate knowledge of the platform the code is being developed for.
People who apply strict development methodologies to large projects also qualify.
A programmer is someone who sits down and knocks out code to match the design someone else created. Traditional computer science covers the people who develop applications, GUIs, and database work.
Some disciplines were heavily mathematical, at least when I was in grad school at the dawn of time. Every PhD needed to know the theory of algorithms and complexity theory - but Numerical Analysis was the thing on our quals. But we also needed to know computational semantics, which is not mathematical in the traditional sense, compiler theory, operating systems, architecture, and a whole host of other things.
I was in school before laser printers. Seeing a professor in our department have to run his entire dissertation through an IBM Selectric style printer twice to get all the subscripts made me decide to have no equations in my dissertations - which was a combination of language theory and architecture. No greek letters either. Saved me a ton of time.
Information theory is not statistics, but it does usually seem to go in EE, having to do with transmission lines. I took it in the EE department, and Shannon was an EE, though that was before computer science.
I would agree. Steam engineers are the only REAL engineers. All you posers out there just want to glom onto our glamorous life.
But the argument given above is not circular. A definition is created : Real engineers work with the physical world. Then we test software engingeers against this and determine that they do not work with the physical world and are thus not “engineers.”
My definition : Engineers design things that can be broken with hammers. This will also match the general impression most laypeople have when they hear the term “Engineer”.
I knew someone was going to pull me up on that I couldn’t think of a term that described an argument that’s used over and over again by a group of people in different contexts, like I described in the rest of my post.
That does not count because it is fun. REAL steam engineering is quite sucky, filled with power company regulations, faceless consulting firms, everpresent risk of injury from some moron opening a valve too fast on a system startup, and lots and lots of asbestos.