I think the author's main point is insightful. Professional ethics are much more effective when they have the weight of regulation, because then your employer can't just replace you with someone who will do the unethical thing that they want.
In my opinion, it is probably still worth refusing to build things that violate your personal ethics. You will sleep better at night, and you will introduce friction to doing unethical things, which may cause your employer to re-evaluate their course of action. Or they might fire you.
Also, I struggle to imagine what a world of regulated software engineers (with an enforceable set of professional ethics) would look like. To use the author's example, giving surgeons a monopoly on surgery is pretty simple: if you cut people up with a scalpel, even with their permission, and you're not certified by your country's board of surgery, then you're committing a crime. What would a world of regulated software engineering look like? Are all employees of a company who are not licensed software engineers now prohibited from using code to solve their problems? Is a business analyst writing SQL allowed? What if they start writing stored procedures in python? Are you allowed to use CLI tools? What about creating bash scripts to automate your CLI workflow?
It works in specific, highly regulated industries (e.g. "only licensed software engineers may contribute to avionics firmware, or the device will not be FAA certifiable"). But for general-purpose business-grade software... I don't think it is possible to come up with a sensible and useful rule that could draw a line between programmers and everyone else. So my bet is that we continue unregulated.
In engineering (electrical, mechanical, civil) we have professional licensure[0]. It doesn't mean you can't design an electric system without a license. It means you can't represent yourself as an engineer, nor can you stamp engineering drawings. There are some legal situations, particularly building / structural where stamped drawings are needed, and so only a P.Eng can do that.
But if it's say designing a circuit board, or a machined part, there is no generic regulation, and anyone can do it.
There is already "software engineering" as a regulated discipline, and similar rules apply there. I have no idea if there are any situations where you need a stamped software deliverable. But they would have an engineers stamp. I have one (as an electrical engineer) that I haven't used and don't expect to.
All that to say, what matters is the combination of professional licensing and the requirement for a licensed professional. In engineering (applied science), it's actually pretty rare, even though it's a regulated profession.
[0] I'm in Canada, I think the US system is similar
Within British Columbia at least, the "practice of professional engineering" means the provision of advice or services that are based on an engineering discipline, or ancillary to those. "Engineering discipline" means "agricultural, biomedical, bioresource, biosystems, building, chemical, civil, computer, electrical, environmental, food, forest, geological, geomatics, industrial, marine, mechanical, mechatronics, metallurgical, mining, naval architecture, nuclear, petroleum, software and structural engineering and engineering physics".
So professional licensing is required for any provision of advice or services relating to software engineering (etc), including services internal to a company. And a professional engineer is required to stamp any documents containing engineering content that are expected to be relied on by others.
(I'm not disagreeing with you. You don't need to be a professional engineer to have a circuit board made or a part machined. But you might need to stamp your design drawings as part of a certification process, or if others will be relying on them).
> professional licensing is required for any provision of advice or services relating to software engineering... including internal to a company.
Even if this is what the law says, I've never seen it have any impact on the real world. In BC, like everywhere else, people with no license of any kind routinely write software that other people depend on and release it into the world, with no oversight from a licensed engineer at any point in the process.
I'm aware that "software engineer" as a regulated profession exists in Canada. The only consequence that I'm aware of is that tech companies in Canada call their engineers "software developers" instead. In years of working in tech I've never had a coworker who was a licensed Software Engineer.
All I'm saying is that it's unlikely that the bulk of activity we currently think of as "software engineering" will someday full under a level of professional regulation comparable to surgeons, pilots, or civil engineers.
Yes I agree, and to a large extent (from what I know) creating that designation was marketing from universities.
To be a licensed engineer in Canada you need the degree and then 4 years' experience working under licensed P.Eng which in software is basically impossible. So most people would have the degree but never apply for licensure.
I'm not sure what the regulated discipline of SW engineering is. For sure, writing software out with this is not real engineering and shouldn't be called such. I would never call myself a SW engineer as I'm not a real engineer.
> Also, I struggle to imagine what a world of regulated software engineers (with an enforceable set of professional ethics) would look like. To use the author's example, giving surgeons a monopoly on surgery is pretty simple: if you cut people up with a scalpel, even with their permission, and you're not certified by your country's board of surgery, then you're committing a crime. What would a world of regulated software engineering look like?
Here's what I imagine it would look like. I don't particularly like it.
All powerful computers operate like iPhones. Normal people are prohibited from executing code outside of a limited sandbox. Licensed software developers have the ability to execute code.
It's already starting to happen, except the "license" is a developer account with individual platform vendors.
"debugger vendors in 2047 distributed numbered copies only, and only to officially licensed and bonded programmers"
I don't think it would happen, because it's too difficult of a global coordination problem. E.g. if you make it too hard to build software in the US, then it will just get built elsewhere, and the US will no longer be dominant or even important in tech.
First, they came for C compilers and you said nothing. Then, they came for Python interpreters and you said nothing. Now that they are coming for Excel, who will defend you?
You're making a joke, but when you look at what's happening with software licenses (mostly in AI) that restrict uses to those that the releasing companies deem appropriate (such as nonsensically no use in the nuclear industry) it's only a matter of time until political completely creeps into the software supply chain and all your python packages will have their own specific political list of what you can and can't do with them.
Minimizing dependencies is going to become increasingly important.
> I am well aware that the idea of there being professional licensing of software developers is wildly unpopular among programmers.
That's an issue.
LeetCode tests are often formed to bias towards styles and solutions favored by the testers.
For example, a company may want all their engineers to have a particular approach to recursion, so they test for that approach.
The issue with professional testing, is that it can encompass completely inappropriate tests. For example, I took calculus, and have almost never used it, in my work (over 30 years). I think the closest I got was playing with matrix math and B-splines.
But I guarantee that a "professional programmer" test would have calculus, because "Everybody should know it."
Same with btree stuff (again, in thirty+ years, I have never had occasion to use these).
But I do all sorts of async stuff, and a lot of UX stuff. I'll bet they don't get tested. Maybe everybody should know what a ring buffer is.
That said, ethics don't need that kind of stuff, and I'm all for ethics, but I think the managers need it, a hell of a lot more than the engineers.
Did you read the whole article? The author explains that professional licensure is for prohibiting negative behavior, not for advocating standards or best-practices.
You're right, I violated the standards and practices.
I saw your comment about the managers, but it rather misses the point. The idea of professional ethics is that the practitioners need licensure so that they can refuse to perform unethical work demanded by their manager. If programming managers had a professional code of ethics, it wouldn't impact the ability of individual programmers from doing unethical things.
I just skimmed it, personally I'm not convinced by what I saw: the premise that professional ethics is not personal ethics, while true, is not really meaningful to technical disciplines. In my engineering ethics and professional practice courses I never saw anything "nontechnical" in our ethics, most of it was don't do stuff you're not qualified for and awareness of applicable law.
The problem with ethics is that there is a vocal group that wants to turn their personal ethics into our professional ethics and impose on software a bunch of judgements that are super subjective (and thus outside the profession).
While I wouldn't be surprised to find professional conduct in other engineering disciples to be getting similarly hijacked these days, I think the only sensible way to professionalize software would be voluntary and technically grounded, not dealing with what you'd put in the realm of personal ethics at all.
> The problem with ethics is that there is a vocal group that wants to turn their personal ethics into our professional ethics and impose on software a bunch of judgements that are super subjective (and thus outside the profession).
This is exactly right, and the word "ethics" pretty much encompasses all of this subjectivity masquerading as objectivity.
If you had a rule about testing aviation firmware a certain way, it would just be a regulation, there would be no need to call it an ethical principle. Anyone who understands the relevant technology could understand why it was in place. The same cannot be said about most statements under the umbrella "ethics".
That explanation makes quite the leap from "personal ethics are an opinion" to "professional ethics are facts".
Everything that comes after that seems just to explain why professional ethics are crucial, but I'm still missing where the opinions of a bunch of people suddenly become a fact.
Professional ethics are facts in the sense that they are codified by an organization, not in the sense that they are objective and immutable.
The author's running example is that of psychotherapy licensing, but the same applies to any medical license, law license, teachers, coroners, etc. The ethics of your profession are standardized across all practitioners, which means that it's hard for an unethical employer to force you to do unethical things, since the threat of license removal is a stronger threat than that of simply being fired; and also since the hypothetical unethical employer will have a hard time finding another licensed practitioner who would undertake the same task.
I really enjoyed the article, I recommend reading the whole thing.
I am surprised at the narrow view the author of the article takes. They are using one particular meaning for the word professional ethics. In my country it's a much broader term, definitely not law or anything close to it, often not even a standard. It can be informal or formal, it does exist (and is treated seriously) in some unlicensed trades.
For every licensed profession out there, there's got to be 10s or 100s more that are unlicensed. But the unlicensed professions still can have professional ethics, somethings with formal documents, education, etc. What do you think happens on conferences, in the private conversations, in schools and training and in apprenticeship or mentoring? These are very strong carriers of not just skill and knowledge, but also gossip (big part of learning and deciding ethics!) and moral consideration and responsibility . That doesn't mean they are less useful, but it does mean they are not "law" or official or binding in the way the author suggests.
Maybe it's cultural? I'm from central Europe and the author seems to be American, and the words they are using give me a hint of high pride, high ego, arrogance. Feels a bit like militaristic zeal.
Coming back tothe topic, where I worked, some professions do have ethics boards and people are licensed, while in other professions there are informal groups who recommend certain practices and are treated seriously by some (but definitely not all) professionals.
From what I heard from a few experienced lawyers and managment coaches (as an example of polar opposites in terms of being licensed), the only bad actors who are ever punished for their unethical behavior are fools and criminals, and even that is not as frequent as you'd think.
I suspect 95+% of the morality of a person' bad behavior is invisible to any observers (by design), definitely never gets checked in any structured fashion by anyone (boring, thankless work, gets you in trouble, no material gain, low chance of success), and there's almost always a way to behave badly and justify it or have deniability. The real judges are outside observers, and those care mostly about serious criminal behavior, everything else is called "it's business" or some such general explanation.
> Maybe it's cultural? I'm from central Europe and the author seems to be American
It’s not cultural, it’s a question of enforcement. The author describes professional licenses that are enforced by a board. You describe a “license” that isn’t enforced. If your legal system doesn’t enforce licenses, that’s not a cultural difference it’s a legal one.
> unlicensed professions can still have professional ethics
This is like saying you can have laws without police to enforce them. If the consequence for violating the ethical norm does not jeopardize one’s license (because there isn’t one) then you don’t have a norm, you have a suggestion.
"You are told what the ethics of your profession are. Indeed, they are part of terms of participating in that profession, more on which below." -- wrong and somewhat patronizing. There exist professions which do have (recognized) ethics, but those ethics are optional, definitely not part of becoming a professional (because the field is informal and without licenses and too young to have that), and participation in profession has nothing to do with moral awareness or stance.
"They are a set of ethics that is universal to a population of professionals. They are not an opinion an individual has, they are facts –" -- this is an extreme position, said with high conviction that it's the only one.
"Professional ethics are codified, and because they are codified, they can be enforced. Indeed, professional ethics are codified so that they can be enforced." - this person likes to put a lof ot tough words in bold. Again, this is so myopic I don't even know what to say. So many of the ethical consideration in some professions goes way beyond enforcable issues, or even hints of admonition. A psychoterapist especially should know better. This is where i detect an ego-driven agenda.
"People who program for a living trend hard to the libertarian and want not to be subject to the government." - that's a strong political bias right there,and definitely on the militaristic end. You will do what (y)our country tells you or else! That's high ego, and arrogance, at once. And in the next sentence...
"People who program for a living trend hard to the libertarian and want not to be subject to the government. That's fine. But then you can't have professional ethics." - oh my lord, will you stop :) How many more times will this person highlight that THEY KNOW BETTER and the reader DOES NOT and SHOULD BETTER START CHANGING THEIR MIND :)
The whole point of the article is that enforced profession ethics are a leverage tool. If you don't have enforcement, you don't have that leverage. It's not pretentious, it's simply factual.
If you say "It violates my professional ethics to program the drivers for an orphan blender", your boss can fire you and replace you with some other developer with no such scruples. If a professional engineer says "It violates my (enforced) professional ethics to sign off on the blade design of this orphan blender, and anybody who did would lose their licensing", then their boss could fire them, but they're not going to get their blade signed off.
They explain that: because professional ethics are enforced. If some licensing panel finds you violated the documented ethics, your career in that field can be over… for life.
For personal ethics, they are mere opinion as you get to choose what those ethics are. For professional ethics, those ethics are the opinions of the relevant professional associations and regulatory bodies.
They are facts in the sense that "The Bar believes that it is unethical to lie to the court" is a fact. It is simply factually true that the legal profession holds that ethics belief.
And thus the point, anyone who seeks to join such a profession has to accept their ethics "as if" they were facts. You can't choose other professional ethics in the sense that you can choose to hold a different opinion.
Perhaps you would prefer an analogy to law where there are things which are illegal and they may not precisely correspond to the things which you personally consider unethical?
> I understand that laws and professional ethics are enforced. But that doesn't make any of them anything other than opinions.
Sure, in the same sense that any law is an opinion of the body that defined it, e.g. "It is the opinion of the legislature that a person who commits the unlawful killing of a human being with malice aforethought shall be guilty of murder."
It's an opinion, but it's an opinion with real-world consequences... just like professional ethics, according to the atricle.
I'd guess there's a kind of authoritarian body of thought taking shape as groups look to use professional licensure as another culture war wedge. So there are going to be articles like this "explaining" "how professional ethics work" to tell us how we are supposed to think about it.
The article doesn't explain how you're supposed to think about, just its mechanics and intentions. I'd say the approach to professional ethics described in the article has been pretty successful in the medical and legal world, maybe it could be expanded to other areas. I do not understand your invocation of the "culture war" shibboleth.
the laws are something that is written, they are a consequence of writing (where writing is taken as a social technology)
software is something new, it's writing that can write itself, or change itself. it's a bunch or written things which then take other written things and transform them.
this has conceptual consequences for the laws because the technology that the the concept of laws if mounted on top of, has been radically changed by software
hence it's not as simple as relying on 'licensure' which ultimately leans on the notions and constructions emanating from "the written law"
maybe in the future congress is going to have to approve pull-requests to google infrastructure code? heheh
Licensure is a natural response to LLMs making code generation easier. People want to protect their jobs and AI is coming for them. Creating a regulatory cartel let's some in-group become "the real engineers" who are able to approve the output of LLMs, or other "non-engineers".
All this under the auspices of "ethics", which as a reminder, is just an arbitrary set of rules which someone is trying to pass off as having a divine origin.
As the article clearly lays out, there's no need for profession ethical considerations to be "of divine origin". It's simply a set of rules which an entire industry can hold as superseding the whims of the flunkies with MBAs that write our paychecks.
If they are just a set of rules made up by people, why can't we call them "laws"? You know, like those other rules made up by people.
The article advocates a set of laws intended to prevent certain people from writing software, and constraining how a select few do write software. It doesn't talk about how exactly those laws will be decided on. Although it does say they are "facts", it doesn't tell me about a way to observe them for myself, so I guess the author just looked into the mind of God, and I should take his word for it.
All this under the auspices of "ethics", which as a reminder, is just an arbitrary set of rules which someone is trying to pass off as having a divine origin.
They are arbitrary only in the sense that, sans a religion's God laying down ethics from on high, all ethics are arbitrary human creation.
But we care about ethics all the same. Engineers care about ethics because if they do not, they kill people. Civil engineers care because faulty work kills people. Electrical engineers care because faulty work kills people. Mechanical engineers care because faulty work kills people.
And as software engineers, we should care because our careless work kills people.
And if we do not care, the government will force our hand. And they will not listen to pleas for them to be reasonable.
Software engineers abused people's personal data, the EU's GDPR has outlawed using all but the absolute minimum personal data. Meta has been told in court by the CJEU that advertising is not an acceptable use of personal data, even if needed to pay the bills. Ad-tech is a doomed industry.
So it's your choice. Start caring about ethics. Or the government locks our field in so much regulatory gridlock that you will wish they just outlawed it entirely.
I wouldn't use "ethics" to describe any of the rules in place to ensure the quality of the designs or deliverables in civil/mechanical/electrical engineering.
I'm glad that there are building inspectors, and safety standards for consumer electronics. I'm also glad that those rules are written clearly in terms of lbs and amp*hours and volts, and not philosophical terms.
If you want rules, say you want rules, but don't try to hide the fact that some of your rules will have not objective justification, and will be based on the personal philosophies of those in charge.
your rules will have not objective justification, and will be based on the personal philosophies of those in charge.
The "objective" safety standards are often a lot more philosophical than you think. There is no "objective" truth for road design, it is a trade-off between how important you deem the safety of pedestrians and cyclists, versus the convenience and throughput of cars.
But also, just look at fields like journalism. Journalistic ethics exist because without them they kill people.
Not ratting out your anonymous sources isn't some technical requirement laid down in the physics of the universe, it's a philosophical belief.
And yes. Choosing to not take people's personal data is a philosophical belief. But the harm isn't philosophical.
In my opinion, it is probably still worth refusing to build things that violate your personal ethics. You will sleep better at night, and you will introduce friction to doing unethical things, which may cause your employer to re-evaluate their course of action. Or they might fire you.
Also, I struggle to imagine what a world of regulated software engineers (with an enforceable set of professional ethics) would look like. To use the author's example, giving surgeons a monopoly on surgery is pretty simple: if you cut people up with a scalpel, even with their permission, and you're not certified by your country's board of surgery, then you're committing a crime. What would a world of regulated software engineering look like? Are all employees of a company who are not licensed software engineers now prohibited from using code to solve their problems? Is a business analyst writing SQL allowed? What if they start writing stored procedures in python? Are you allowed to use CLI tools? What about creating bash scripts to automate your CLI workflow?
It works in specific, highly regulated industries (e.g. "only licensed software engineers may contribute to avionics firmware, or the device will not be FAA certifiable"). But for general-purpose business-grade software... I don't think it is possible to come up with a sensible and useful rule that could draw a line between programmers and everyone else. So my bet is that we continue unregulated.