In Canada it's illegal to call yourself software engineer(engineerscanada.ca) |
In Canada it's illegal to call yourself software engineer(engineerscanada.ca) |
My previous company (one of the GAFAM) had to change the title of everyone to Software Developer after years of arguing with the local engineering body.
And if you happened to leave "engineer" on your Linkedin profile, people from said body were actually regularly checking profiles and directly messaging us with threat of legal actions against us personally.
I have a MSc in CS, just not from Canada. The only way to be able to use that title, is to pay a membership fee to the association(? cartel?) of engineering.
I didn't realize this was the new F(A)*NG, but apparently it's changed again and is "GAMAM" now (TIL).
Another issue is domain knowledge. A programmer can write code for any application, medical, automotive, chemical plant control, nuclear reactor control, aircraft flight control... What engineering principles of software design cover all of those? Certainly there would be some, but each domain has it's own criticalities and requires special knowledge. Instead of teaching beginners to write code it may be necessary to teach them to write medical code, automotive code, etc., or else they would learn the wrong lessons and have to unlearn them later. That specialized training might help turn software development into an engineering discipline, but it would also divide the field into specializations making it much more difficult to find and train people and make it more difficult for programmers to switch fields. The number of specialized types of programmers is huge, everything today is computerized. Maybe the creation of special libraries for each kind of code would bring some standards and uniformity? For example, requiring that you can only write medical code using one of a few approved HL7 libraries, or one of a few medical image processing libraries that are freely available to all companies. Standards and approved libraries might be one way to start turning programming into engineering. It would slow down innovation, but maybe that's a good thing since today a lot of "innovation" is more like customer lock-in.
Liability for flaws in code is another open-ended issue given there is absolutely no way to assure there are no flaws in code under all possible circumstances. You can write some math that says a bridge will support a weight load for 50 years if built of the correct materials. You can not do the same for code. Even the tools programmers use mutate over time. Compilers can have bugs. How do you certify a compiler for medical, space, automotive, and all the other applications it might be used for? What about open source software, who is liable for that? There is no such thing as an open source bridge or skyscraper design.
To become an engineer in Canada, you need to learn and commit to understanding in full every major engineering disaster in the country in the last 100 years, and how a failure in your duty as an engineer can actually kill people.
I feel like we could split software engineering from software development and gain a lot in our industry. Not all development needs to be engineering, but some absolutely does.
At university, we were required to take a computer scientists & the society course, which software development disasters and ethics were the main part of the course. The Therac-25 case is a timeless classic, but there's others too. All software engineers should learn about past failures.
1) You would have to pay these real engineers with licenses more for this to make sense. Currently most jobs that even make mention of this requirement pay well under what the software development equivalent would make
2) Companies don't like to hire "Real" engineers wherever possible because like all bureaucracy, sometimes they prevent projects moving forward. Companies are incentivized to employ the bare minimum of licensed individuals to sign off on the cheaper and faster work of the unlicensed proletariat. and pressure is put on the licensed to rubber stamp things.
3) I have found a lot of the courses in engineering school about ethics etc to be extremely rubber stamp/"mandatory safety training" ish, just like the dumb what's a stop sign test at the DMV. I doubt people en masse remember what they learn. I see it as a complex ruse to make people do the equivalent of sign a legal document saying "I accept the terms of this agreement and have the capacity to do so", more of "something that can be taken away if bad things happen" than "something to prevent bad things from happening"
> 2) Companies don't like to hire "Real" engineers wherever possible because like all bureaucracy, sometimes they prevent projects moving forward. Companies are incentivized to employ the bare minimum of licensed individuals to sign off on the cheaper and faster work of the unlicensed proletariat. and pressure is put on the licensed to rubber stamp things.
These are reasons why companies might not want to hire engineers, but also reason why we might not want to do business with those sorts of companies. The fact that lots of companies seem to have gotten away with this stance seems to indicate a failure somewhere.
> 3) I have found a lot of the courses in engineering school about ethics etc to be extremely rubber stamp/"mandatory safety training" ish, just like the dumb what's a stop sign test at the DMV. I doubt people en masse remember what they learn. I see it as a complex ruse to make people do the equivalent of sign a legal document saying "I accept the terms of this agreement and have the capacity to do so", more of "something that can be taken away if bad things happen" than "something to prevent bad things from happening"
Yeah kinda. In defense of this sort of thing, going on to get a professional engineering license is definitely not something that all engineering students do. Many go on to do jobs that are more like programmers or technicians, right? Maybe the typical engineering degree should be renamed to pre-enginnering or something, but something tells me getting universities on board with that will be... challenging!
I remember sitting in computational methods in uni while our professor was motivating the lesson on condition numbers, mentioning this is the kind of thing that can kill people, and students laughing at him.
Wish I could say that now that I've been in industry around a decade that the people around me have matured, but just as many still don't seem to care about quality.
Way too many people just chasing dollars and prestige with no appreciation for the power they wield.
It is not just glueing things together and modify randomly until everything somewhat works under ideal conditions?
I'm sure these bodies can provide evidence that people who have paid their membership dues and been bestowed the title of "engineer" write safer and better code, right?
Here's a perfect example of such regulatory corruption – https://ij.org/press-release/oregon-engineer-wins-traffic-li.... Someone ran tests and showed that Oregon's red light cameras were flawed. The state in turn fined him for calling himself an "engineer" without a license and barred him from speaking about the problem. Thankfully the supreme court put an end to it pretty quick.
It would be far better if only "Licensed Software Engineer" was restricted. Most hiring managers would also, of course, be less likely to hire that person, just as "Certified Scrum Master" is a negative signal.
The normie/excitable journalist take is that you want everyone to be a "professional", but there are strong arguments against occupational licensing. https://www.mercatus.org/publications/corporate-welfare/effe...
It just reduces competition, driving up prices and reducing innovation with no increase in quality.
I don't think that's true.
Mechanical Engineers in the US are usually expected to be Professional Engineers (professional license) and in good standing with ASME, the American Society of Mechanical Engineers (professional society).
In BC, I have worked as a "Software Engineer" for 15 years with just a Bachelors and no engineering license, including for large tech companies. It's on my CV/LinkedIn. SE is the standard title internally and externally, it's on job postings, it's used everywhere.
> Unless someone is licensed with a provincial or territorial engineering regulator, they cannot use the title engineer, or any variation.
So, you can legally call yourself a software engineer if you have your title. There are laws like this in most countries regarding medical doctors. This prevents Doctor of Acupuncture from appearing.
I graduated through such as program and never bothered to apply for the license thing, because the money to be made as a software engineer isn't in Canada, and no one in the US would care or do anything to help me fulfill the reporting requirements that a P.Eng requires. And for what benefit? There's no benefit.
There's no demand for a Software P.Eng. One day there will be, when society recognizes that some code shouldn't be written by just any random person. That day isn't near, in my opinion.
Technically, it is not illegal.
> There are several places where the use of engineer is often used improperly. They include:
Software or data engineer: Unless someone is licensed with a provincial or territorial engineering regulator, they cannot use the title engineer, or any variation. This applies even if the title is assigned by the employer. Alternative titles can include:
- Data analyst
- Data scientist
- Software specialist
- Software technician
- Data technologist
- Data manager
- Data technical expert
> Every person who is not a holder of a licence or a temporary licence and who,
> (a) uses the title “professional engineer” or “ingénieur” or an abbreviation or variation thereof as an occupational or business designation;
> (a.1) uses the title “engineer” or an abbreviation of that title in a manner that will lead to the belief that the person may engage in the practice of professional engineering;
> (b) uses a term, title or description that will lead to the belief that the person may engage in the practice of professional engineering; or
> (c) uses a seal that will lead to the belief that the person is a professional engineer,
> is guilty of an offence and on conviction is liable for the first offence to a fine of not more than $10,000 and for each subsequent offence to a fine of not more than $25,000.
> Technically, it is not illegal.
Uhh, as far as I can tell, something being against the law == something being illegal
I've gotten some strange resume questions about why my current resume doesn't use "Engineer" in the title, and I worry some potential readers might misconstrue why my title is different in my current role, but also I went to a "proper" Engineering school (and have an MEng), might have taken the PE if the Software PE existed when I graduated (and if I had thought it might help my salary prospects, which currently in this industry it likely wouldn't) and I have a deep appreciation for what the professional licenses and professional societies do for the other engineering fields. Sometimes I think the software industry could use more of that and it would be good for everyone.
In Ontario the PEO requires an academic component to qualify. Super. So I have twenty years of industry experience and probably know more about the state of the art than what is taught in any of the CAEB programs...
> Please note, there are currently zero graduate degree engineering programs accredited by the CEAB.
Never mind, you can't even get into a program that grants this requirement.
Presumably you might be able to squeeze in under the experience requirement? It's unclear.
It's also unclear why anyone would go through this process. The academic requirement will ensure you live with at least a decade worth of crushing debt for a job market that would basically avoid you if you put the designation on your resume. As far as I can tell there are few commercial institutions that wouldn't be better off hiring a non-P.Eng and can still operate their business with significant disregard for the economic interests of society.
I'm all for finding a way to bring a useful form of liability into our industry to protect people from the rampant fraud, data brokering, security leaks, and general, "lol break things, disrupt society, make money," trends. However I think, unless I'm mistaken, there ought to be a way to bring people into the designation who have the industry experience but lack the academic requirement and, more importantly, the companies have a reason to hire P.Eng's and pay attention to them.
The Therac-25 case study (linked elsewhere in these threads) is an excellent study on why fail-safes should be mechanical in nature and based on well-known physical processes that have very few, well-studied states. Software has an effectively uncountable number of states; there is no way to guarantee that a complex software system won't fail at a critical moment due to it being in an unexpected, untested state.
There are ways to model software to prove the absence of certain bad behaviors - TLA+, proof languages, and whatever software was used to validate seL4 come to mind - but they are impractical to use on large systems.
Whether or not an engineering school is accredited can be an important factor in deciding whether to join it after high school. Some software engineering schools that focus more on coding and tech skills without necessarily spending much time on other topics that provide a solid engineering foundation are not accredited. They are often seen as offering a degree that is less valuable than accredited institutions.
More on this: https://en.wikipedia.org/wiki/Dipl%C3%B4me_d%27Ing%C3%A9nieu...
https://ij.org/wp-content/uploads/2017/04/Jarlstorm-opinion....
> On the contrary, there are many different types of engineers. Courts have long recognized that the term “engineer” has a generic meaning separate from “professional engineer,” and that the term has enjoyed “widespread usage in job titles in our society to describe positions which require no professional training.” […] “Engineer is synonymous with such terms as conductor, driver, handler, operator, and pilot.”
It would be better to create a specific term, like "registered professional engineer (RPE)" that is unique, rather than trying to limit the usage of a common word. This is what I think most places do.
The word may be "common" but it is also regulated and defined in law.
Amazon calls the role "Software Development Engineer" here.
You can, but it requires passing their exams. Apparently, that section about misuse is a warning of sorts because the title is very generic in the industry, and employees will be inclined to use it because everyone does so everywhere else.
I've never been able to use the phrase "software engineer", despite having 20+ years of software experience because I was raised to believe that Engineers have silver rings, engineering degrees and professional standing.
Here in Texas, we had a licensure board for Software Engineering for a minute, though it was eventually killed by our Sunset Commission, because almost no one was interested in it (sadly).
The article is an expression of concern. It also cites three court cases to show that it matters.
Very few Germans know about that, though.
So yes, you can call yourself a software engineer in Canada if you follow the rules. And not just because you are a programmer
If I need an engineer, I should have at least some assurance that they know what they are doing, and that they aren't going to act unethically or against my best interest. I should also have some assurance that the fact they hold a license, means that they (probably) haven't been negligent, or harmful with their practice.
This is what Texas used for its software licensure examination: https://nceesorg.wpenginepowered.com/wp-content/uploads/2015...
All of that seems like, the barest minimum that I don't think anyone would disagree with to call someone a software engineer.
Having an engineering license means that you know the person when through a full college degree and/or could prove they have enough experience to compensate for it (not that easy btw). In Canada, it's not enough to just get a "major" in something related to engineering, they are a completely separate category of programs that have 1.5x the number of credits (>120 instead of 90) and are roughly equivalent to getting a Bachelor + master in other disciplines (it's 4 years, full-time, with full-time internships and/or classes during summers. 5 years if you want your summer off)
It also means that they can lose that title if they fuck up badly and get reported. You can't change the name of the company or create a new online account to escape that bad rep. The tone of the discussion is completely different when the person being pressured to sign something they shouldn't by a manager is risking their entire career over it.
Asking for an engineering stamp on something means that you know a specific person will be personally responsible for it. They can't get out of it with a cute letter about how they will investigate and take proper actions for the future.
You cannot get a P.Eng license just by paying membership fees.
There is also a discipline process for engineering misconduct.
Modern engineering is all about standards and process.
Reminds me. One of the reasons California has high building costs and lack of construction workers is they went way overboard on contractors licensing.
Court case: On 10 March 2020, the Quebec Superior Court (2020 QCCS 1465) upheld a lower court ruling, finding an individual guilty of improperly using the French abbreviation “ing.” In e-mails sent to clients and colleagues, and on a résumé sent to a prospective employer. The Court found that the use of “ing.” by an individual not registered with Quebec’s governing body would induce a reasonable person to conclude that the individual is indeed an engineer. As a result, the individual was found guilty of 4 counts of improper use of title. Leave to appeal was denied by the Quebec Court of Appeal on 5 June 2020 (2020 QCCA 730).
Well no shit.
And one of the main examples in the article is an injunction against an individual for using that title online?
We still treat documentation as a third class citizen.
We still allow stakeholders to pressure at the cost of long term security and sanity.
Important and rigid business rules, the most obvious candidates for automated tests, still go untested.
Access to critical parts is still open and backups are lacking. You can probably do a lot of damage without any malicious intent in many places if you're not careful.
I can go on. Funny thing is, these things still happen in companies which try to adhere to some kind of outside standard. Most CS classes talk about security vulnerabilities and cancelled software projects costing millions, but never go in depth. Even our research is lacking.
What we learned is no one cares until the costs are higher than the gains, excepting a few critical fields I'd wager 99% of software "engineers" will never step foot in.
In the early part of my career, I (and many of my friends) invested significant amounts of our time learning and pushing PL/T because the way things were going:
- Things are toys before they become tools. Early word processors were toys util they replaced typewriters.
- As the tools become more important, they will become more mainstream. Requirements will increase, e.g. that they be more reliable, that they become more usable.
- We now have designers in tech, indicating that the market cares about usability.
- There is still no formal verification of software, just "tests" which are applied in varying degrees of completeness.
To rely on "testing" is fine for a lot of consumer applications, but when I briefly worked in medical devices, we used C++. We did not hire a specialist with experience in Coq. Similarly when I worked with medical data.
I'll be quite blunt and cynical about it. Don't blame the software "engineers" / developers / whatever you want to call us. One of my friends actually went back to school to do research on this stuff, but I'm pretty sure he made a pittance compared to the friends who worked on the like button at Facebook. The market doesn't care. Call me a software designer if you like, I'll take the fat paycheck after spending the entire early part of my career trying to make things reliable, only to be slotted into the same "tech bro" category by a society that doesn't care.
It was an integer overflow. Those still happen all the time.
It's mostly Civil Engineers who bother to get PEs.
Nor do you need to be an engineer to do a lot of things, but for whatever reason that's considered fair game.