As a "guy who writes code" - call me whatever you want, i could probably give myself a fancy title and get away with it, but I am one of the very successful (When compared to the 99%) people who didn't finish school but managed to get by in the tech industry very comfortably. Life is already great, perhaps I just don't deserve to get everything my way.
I don't use "software engineer" as an ego thing, but because it communicates better the variety of knowledge I have to people that barely understand how to turn their computer on. I get better pay, my employer is happy, everybody wins.
It's to give the world hard proof that you actually UNDERSTAND what is happening and allows you to actually accept responsibility to create things that may actually affect peoples lives. Sure its useless if all you do is work on a react/angular app, but not all software is your standard CRUD app.
But there's no clear line where an app stops being CRUD and starts being something more, so there's no clear line where you stop needing a CRUD programmer and start needing a software engineer.
There are some that clearly need certification, and often that is an explicit requirement of the job.
Just don't get too hung up on the job title. Managers want to believe their software is so complicated that they need a software engineer to build it. I'm happy to go along with their delusions if they pay me.
Really, the ideal system is self serving. You create a framework of professionals that self-govern. The Professionals appointed/elected to the governing body are responsible for ensuring the certification is relevant to the profession. I somewhat prefer the mentorship program over testing individuals on knowledge in their domain because your mentor(s) will be a better judge that you're understanding concepts, regulations, rules, and needs better than any exam will test for. Like you said, knowledge that I apply on my career is very different from knowledge you apply in yours.
Another thing that I want to say though is that I don't feel certification is necessary in software unless you're in a position that carries potential harm to a person's safety/wellbeing. There's a few exceptions to what that entails exactly but that's not really the point of this discussion. Generally speaking, I don't want someone with a layman's understanding of code to be programming things where a person can lose their life due to an oversight. In the same way that Professional Engineers in Civil, Mechanical, etc. use their professional seal to say that "my specs meet all relevant modern standards of safety/design/etc", I want software engineers programming that medical device or safety equipment have the same accountability. Currently there isn't an international recognition of "Software Engineer" as a title to say who is working on that device has been vouched for professionally.
There is a difference here in that someone working on a medical device isn't directly offering their services to the public, and the work-product is subject to external testing and oversight.
Hm... ok, I'm not sure I buy that. How are you defining "best"? I suppose I can accept that there may be a handful of people (worldwide) who can produce amazing software but are somehow unable to memorize and regurgitate facts, in the same sense that there are people in the world who can recite all the digits of pi but can't tie their own shoelaces - but I have a hard time believing that such people are very, very rare.
Engineer is not a guy putting things together on an assembly line. Engineer needs to understand things that are base for his/her field.
> If you focus on tools, it will be out of date by the time the exam papers are off the printing press.
My tools that are dozen years old work just fine, thank you very much. And they work faster, more transparently, and more reliably than most of modern buzz, if we're at that.
What would you put in software certification? If you focus on high-end CompSci stuff, it won't be relevant for the 99% who spend their careers building CRUD apps. If you focus on tools, it will be out of date by the time the exam papers are off the printing press.
I agree that there could be industry certification on topics like security and perhaps accessibility. But on everything else, the answers depend on so many factors, they can't be certified in a meaningful way.
Also, some of the best software engineers I know don't have certification because they struggle with exams. The ability to pass an exam doesn't make you a better engineer.
Certification is nice in theory, but in practice would probably lead to worse results.
I call myself a software engineer because it's what managers call me. As long as I don't claim to be able to build a bridge across the River Thames, I don't see the problem.