It's a perfectly apt comparison. Software "engineers" are not actually engineers. We are not professionals, we are wage labor.
* No professional code of ethics.
* No professional body that oversees the profession and sets standards.
* No licensing or certification (except maybe in Canada).
I'm sure I'll get a bunch of flack for this, but it's well past time developers stopped indulging in classist self-flattery pretending they're the peers of doctors, lawyers, or accountants.
Lawyers are notorious for being mercenaries for hire. The most successful firms contract with corporations that take advantage of the law to their gain and society's detriment.
Medical doctors work for an industry that bankrupts sick people for being sick and and a huge number (if not a majority) of practicing doctors can be implicated in the opioid epidemic that has killed thousands and ruined countless lives.
Ethical contracts usually just lead to more politics imo. At the end of the day, we all bow to money in one way or another (some are just willing to bow lower than others).
Maybe we should stop pretending a profession can somehow make a person better than someone else in some sort of meta/ethical way.
Addendum: Personally I wish the law were more open to allowing people to defend themselves. A few years ago I went to court to defend myself in what I was sure was a simple misunderstanding in traffic court. Halfway through my second sentence (not in the legal sense), the judge interrupted me. Then the police officer tried to explain what he put in the ticket may not have been comprehensive. The judge cut him off too and decided it was in my best interest to "learn a lesson" and found me guilty of a violation I was not guilty of. The lesson I learned was if I had paid a lawyer $500 I would have gotten an honest hearing. I don't see the ethics or standards in that.
I don't follow your argument. Existence of the things you mention are not really the main distinguishing features of different socio-professional classes.
A programmer is still more like a lawyer in almost every conceivable way than they are like a bricklayer: level of education, social circles, work environment, pay, cultural values, etc.
(This has nothing to do with "self-flattery" unless you think I'm making some sort of value judgment about these different classes, as opposed to just describing them).
Lawyers will not commit malpractice because they would open themselves up to liability and damage their professional reputations.
In contrast, most software devs will code up whatever evil garbage features their bosses tell them to. They don't even have a concept of malpractice. Very rarely, one might quit, but they have no standing to say "no" to their employers and remain employed.
Michael Cohen had a law degree, dude. Christopher Duntsch had a medical degree. It's just people. They're not gods because they have some degree.
And that's only the named people. I don't know how many people you know in medicine or in law.
If you're unfamiliar with things being upcoded or out of network doctors substituting in late and then having patients incur massive fees, then maybe it's best to familiarize oneself.
And there are lawyers who specialize in getting the right rich guilty people out. The Razor didn't get the name by chance.
Why are you comparing coding up dark pattern feature to the malpractice? It's more comparable to, e.g. a patent troll's lawyer drafting a letter intended to bully a troll's victim into paying out of fear of litigation costs. Or reviewing a forcing arbitration agreement that a company intends to make all its employees to sign. Or other things that can be considered morally 'evil' but completely legal and wont get anyone sued for malpractice.
Amen! And as someone who is an actual licensed P.E., it still makes me a little angry when I see computer programmers who call themselves "engineers." This is technically illegal under some circumstances in many states, but rarely enforced.
The original meaning of engineer was: "A constructor of military engines; a person who designs and constructs military works for attack and defence."
It is first found in English in 1380, when I doubt any professional certification bodies existed.
Eventually it evolved to mean what you got your license in, and then evolved further to include things like "software engineers".
Unless you build engines, the word engineer to describe what you do is etymologically inaccurate. So why is your particular stage on the path of organic evolution of this word more valid than anyone else's?
That's true, which is why you wouldn't put P.E. after your name or represent yourself as a Mechanical Engineer etc... No one who knows what a PE is going to be confused by someone calling themselves a software engineer, and audio engineer, or a sanitation engineer.
I understand the other argument that the job title "Engineer" is being diluted, but that ship sailed a long time ago. There are way more people with engineer in their title than there are PEs so I doubt any widespread legislative attempt to change this would be successful. And it's not just software engineers. Plenty of people working as engineers with ABET accredited engineering degrees haven't passed the PE exam either.
It's not possible to actually become a licensed/professional software engineer as of April this year, at least in Florida. Florida requires that you pass the NCEES PE exam - not sure if there are other exam vendors used elsewhere in the US - and NCEES elected to stop offering the software engineer exam citing low demand:
I've spent all of 30 minutes studying this, so, hardly an expert. But it seems like the genesis and ongoing purpose of P.E. accreditation is to protect the health and safety of the public. There have certainly been some high profile examples of poor software engineering affecting health and safety - thinking about the Toyota acceleration issue and the VW emissions scandal - but I am wondering if people really think an accreditation body would prevent this sort of thing from happening. What would a Professional Software Engineer be, and why would they be inherently better or more qualified than what we have today?
> It's not possible to actually become a licensed/professional software engineer as of April this year, at least in Florida. Florida requires that you pass the NCEES PE exam - not sure if there are other exam vendors used elsewhere in the US - and NCEES elected to stop offering the software engineer exam citing low demand...
There's no demand because they made the process more or less impossible for developers to ever get to to the point where they take the PE exam.
First, the candidate has to pass one of the Fundamentals of Engineering exam to become an engineer-in-training. Except, whoops, there isn't a software specific FE; the most relevant one is the EE/Comp. E. exam. Take a look at the list of topics: https://ncees.org/wp-content/uploads/FE-Ele-CBT-specs.pdf Most developers aren't going to pass that even with a CS degree.
Secondly, you need 4-8 years of supervision by a licensed engineer. Again, whoops, there are barely any software developers with a PE license, so who would they get to supervise them?
Frankly, the situation was so absurd that one has to suspect that NCEES didn't want to certify software developers as PEs.
You can't really use engineering methodologies to guarantee public safety from software. Engineering wants to model behavior and add margin on the worst case scenario to make failure unlikely.
Provably correct software development is too slow and specialized to be economically feasible. Even formal correctness is not enough, you also need to defend against unpredictable hardware faults. No traditional engineering discipline needs to do this.
I disagree. An engineer is someone who applies a science to build a solution (aka a product). Mechanical/Electrical/Nuclear engineering is applied physics. Petrol/Chemical engineering is applied chemistry. Pharmaceuticals are applied biology. And finally, Software engineering is applied Computer Science.
The situation in Canada is that you cannot legally call yourself an "Engineer" unless you have a P.Eng license. While you do not need an engineering degree to undertake this, if you don't have one you will have to ask the licensing body to adjudicate on "equivalent experience" - not sure what happens if they don't agree but I expect you'd have to take some courses. The licensing itself requires at least a professional practice exam (and possibly technical ones) and work experience overseen by a P.Eng. Software developers can take this certification but it is not particularly useful to their career except in narrow circumstances.
I think this is a great point and perhaps if developers thoughts of it that way more they would take more initiative to create those things. If we don’t, they will and by they I mean people who will have limited understanding of the impact of those codes.
Pretty much every countries engineering certifying body does have a track for it professionals.
I do have to ask why all the self hate here why would a rational person what to degrade there profession do you want to be working in a blue collar job with worse working conditions?
For myself, I want software devs to recognize that they have more in common with blue collar workers than they do with their capitalist employers and act in solidarity. If it were up to me, there'd be a software guild akin to the Hollywood screenwriters guild, and it would set ethical standards and advocate for better pay and working conditions for people writing software.
* No professional code of ethics.
* No professional body that oversees the profession and sets standards.
* No licensing or certification (except maybe in Canada).
I'm sure I'll get a bunch of flack for this, but it's well past time developers stopped indulging in classist self-flattery pretending they're the peers of doctors, lawyers, or accountants.