None of this is true. You can call yourself an engineer for any/no reason whatsoever.
What you're getting at is some kind of industry certification, like the PE, that would only allow those who qualify to call themselves engineers.
But software engineering doesn't have that. Therefore, anyone can call themselves an engineer if they want to, and don't have to pass your little criteria here.
Just to clarify, in the US a PE (Professional Engineer) is not certified: Professional Engineers are licensed at the State Level to practice independently. Licensure comes with direct personal liability that cannot be assigned to a corporate person and a legal obligation to protect the public even if doing so is contrary to a client's wish or interest.
There's no equivalent in software, and the term "software engineer" has little of the rigor envisioned when Margaret Hamilton coined it.
That is interesting - the idea of direct personal responsibility for flaws or bugs is one which would soon make NASA's development processes look lacksidaisical.
I do wonder how we will manage to actually become a profession.
It is true that a person whose primary area of practice is software can become a professional engineer in all Canadian jurisdictions, but is comparatively difficult to meet the experience requirements relative to traditional engineering disciplines and very few software professionals hold a P.Eng. license even though they may have the relevant degree.
The license is also seen as largely irrelevant in software as unlike traditional disciplines there are no legislative requirements to have a P.Eng. sign off on certain types of work, nor does most software development fall under the definition of engineering. In contrast, I work in the power industry and the involvement of a P.Eng. is usually a necessity at the design, construction and commissioning phases of utility electrical work.
Also, Canadian jurisdictions do not distinguish between disciplines of engineering in licensing, a Professional Engineer is responsible for self-regulating themselves to the areas of practice in which they are competent. That is, a Professional Engineer holding a degree in mechanical engineering can seal electrical schematics, if she feels that she is competent to do so.
In short, yes you can be a Professional Engineer as a software developer in Canada, but since most software work is not considered to be engineering under the official definition[1], one does not need to be a P.Eng. to do it.
It is actually a specific degree that is a minimum four years at specific Universities and then at least one year under another acknowledged Professional Engineer. You are then honoured with an Iron Ring that is well known in Canada that you can only obtain through the proper certification (as some colleges try to offer lesser degrees that aren't acknowledged). It's no different than a doctor or dentist, you can't legally professionally practice without it. The courses are geared towards theory, business, management and ethics rather than just proper or efficient coding and documentation.
The Iron Ring has nothing to do with the licensure of professional engineering. It is administered by the Corporation of the Seven Wardens which is not connected to Engineers Canada or any of the provincial or territorial licensing bodies.
I actually wonder if (and subsequently when) software will move in that direction, though.
As computers become more and more involved in systems where loss of life is extremely possible (e.g. driverless cars), I wonder if there will be a big push to have PE-equivalents sign off on software architectures, etc.
I especially wonder if there will be a big push to do this in the near future simply for liability reasons ("well Jane Smith is the PE we contracted with and she signed off on the software architecture that didn't account for rain, so go sue HER.").
Not that computer errors haven't already cost lives to-date, but as software starts truly running everything we'll likely see a lot of grumbling and response to software errors that cost lives.
OTOH, it's worked pretty well without licensing to-date, so perhaps not. I do think regardless we'll see a more evident bifurcation into "developers" (most of us) and "software engineers" (people who work on mission-critical software) in the upcoming decades.
What you're getting at is some kind of industry certification, like the PE, that would only allow those who qualify to call themselves engineers.
But software engineering doesn't have that. Therefore, anyone can call themselves an engineer if they want to, and don't have to pass your little criteria here.