Not really. If you've got a CS or SE degree you are certainly an engineer. If you've built systems and worked in the industry solving difficult problems you are an engineer.
In the US we don't need an expensive piece of paper telling us what we're qualified to call ourselves.
EDIT: To be clear I'm referring to software engineering. Not all engineering. I thought that was obvious based on the context of the post but I guess not.
Did you have to take a course on ethics? What about software and society? In Canada, in order to get accreditation as an engineering program (including software engineering) there's a set of requirements to be taught. One is a course on technology's impact on society. Also, in Ontario in order to get professionally licensed as an engineer (which is required before you can call yourself an engineer, legally) one has to take an exam on ethics & law as they pertain to engineering. So, we study case law and various ethical situations.
People have been taken to court for calling themselves engineers if they're not officially licensed. This is why the MCSE is no longer an acronym as there was a court case about it. There's a few kinds of engineers that don't have to be licensed as they pre-date the law (e.g., stationary engineers who take care of things like boilers), but they typically have their own regulatory organizations.
In California, people call themselves "Software Engineers" all willy-nilly (even if they haven't graduated from high school) because the term isn't regulated down here.
Can you give an example of an ethical problem that might be faced by a software engineer, that is covered by these courses, and that these courses would enable a person to deal with significantly better.
There were definitely a number in both the practice law and ethics exam and the official exam that I took. I can't recall them off-hand, though. You can see the Code of Ethics for Professional Engineers Ontario in the actual law.
See section 77. Generally, it often revolves around 77.2.i,
"A practitioner shall, regard the practitioner’s duty to public welfare as paramount"
One could see a conflict come up between the company's and the public's interest. For example, you get asked to write the code in a way that takes less time, but could expose the client's data to hackers.
In my post I asked for situations that these courses would enable a person to deal with significantly better.
I agree that a person could be placed in a situation where they were asked to do something against the public welfare. But I don't see how reading this rule in a course would actually help the person making the decision.
For example, I've been in situations where security issues came up. Like most real life matters, it was a matter of judgement, and the tradeoffs were complex. But I went above and beyond what was expected, to do things the best way possible. I did it because I thought it was the right thing to do, and because I take pride in my work. But I didn't need to take a course or get a certificate to know this.
How much philosophy do you know? Much of the material deals with different value systems and applying those value systems to different problems. So, you have a complex ethical problem (which many are) and evaluating the problem in the view of the different value systems as well as the code of ethics. So, decisions about security of systems is certainly one of those situations.
Let's suppose I knew no philosophy. How does this concretely effect how I would make a particular decision? Can you be specific?
If I were designing human medical trials, then I agree that a course in ethics would be in order. But all aspects of life involve ethical choices, and I don't think that you need to be an expert in philosophy to make the right choices.
Understanding ethics can help in making the right choice in a complex situation. For instance, if you go with act utilitarianism, you choose the action which maximizes a positive effect. If you believe in rule utilitarianism, you use the principle of utility (maximizing a positive effect) to set rules to generally abide by such as keeping one's promise. But, there could be situations where following the rule gives rise to a negative effect. This is similar but different to determining rightness by examining the act itself. Then there's virtue ethics such as those of Socrates and Aristotle. There's also the role ethics of Confucius.
So, it's often good to examine a complex situation from the viewpoint of multiple ethical systems and make a decision based on that. That's what courses in ethics do. They teach various systems and present situations to examine.
A lot of people might go with consequentialism, which is basically, "The end justifies the means." Utilitarianism is essentially a subset of this.
So, yes you have some ethical system that you follow, but if you're only looking at a situation from that viewpoint, you might miss out on an alternative course of action.
I took that ethics course. I don't think that course really made much of a difference in anyone's career. The material was mostly common sense ethical questions.
The certification is more than just "an expensive piece of paper". In some jurisdictions (Canada), an engineering accreditation board has to certify that the courses taught during the course of obtaining an engineering degree contain certain material - thus enforcing a standard across all degrees, regardless of the university/institution.
Without this, it's arguable that having an "engineering degree" (in a certain discipline, say software eng) from one university would not all be comparable to having one from another institution - thus decreasing the overall quality of the industry. I'm not saying having the standard solves all these sort of problems, but I am saying that it makes things better.
Problem with that is that, at least compared to actual engineers who need to take the FE exam to be called one, it's a complete misnomer and to be frank, a little embarrassing. Most CS/SE programs share no classes with engineering programs except maybe calc 1/2 and one or two others. It just feels wrong referring to myself as a software engineer because a. there's no formal definition of one and b. it's unfair to those who actually are engineers. I didn't slog through statics/Differential EQs/vibrations/Calc 3/Mechatronics/Embedded Systems/etc. like some of my friends, and on a nominal level it's unfair to them.
In Canada, it would be against the law for a CS major to call oneself an "engineer". At the University of Waterloo, there's actually a Software Engineering program that's joint between the CS and Electrical & Computer Engineering departments. It's been licensed by the accreditation board for engineering programs.
There are some legal restrictions in some places so that apartment buildings and bridges don't get built by the local guy with a backhoe and then collapse.
If they hire a software engineer to build a bridge, they have more problems than the job title.
I don't really follow this argument, since it isn't like all the 'certified' engineers are interchangeable. You would have just as many problems if you hired an electrical engineer to build your bridge as you would if you hired a non-certified software developer to do it. Are people really worried about software developers trying to illegally build building?
I mean, we don't legally limit who can call themselves an engineer in the US, but you still need certifications to actually BUILD something that requires engineering work. That seems like a much more effective control than limiting who can call themselves engineers.
Not really. If you've got a CS or SE degree you are certainly an engineer. If you've built systems and worked in the industry solving difficult problems you are an engineer.
In the US we don't need an expensive piece of paper telling us what we're qualified to call ourselves.
EDIT: To be clear I'm referring to software engineering. Not all engineering. I thought that was obvious based on the context of the post but I guess not.