To my mind there is a massive need for us in the software world to pause and think about the ethics of all of this. Engineers more broadly have well developed ethical codes, we should too.
To my mind there is a massive need for us in the software world to pause and think about the ethics of all of this. Engineers more broadly have well developed ethical codes, we should too.
As of now anyone and their dog can practice software development and I'm not sure what a nebulous "ethical code" would imply for them.
I feel like a “formalised ethical code” would result in more clever approaches of avoiding it. We don’t need to look far to find the examples (looking at ya ad tech)
I.e., contractually require someone licensed (where the license carries an ethic standard) or legally require it in areas that are 'in the public interest'
It's a bit shocking for me to know a mechanical, electrical, or civil design in, say, a power plant may require a Professional Engineer to officially stamp it but any ol' software engineer can write code on that system and fire it up. My understanding is that NCEES lists a controls systems license but I have yet to meet a single person with it or hear of a project that required it.
To a certain extent, I wonder if software development rigor/oversight is in an adolescence similar to what it must have been like for mechanical systems during the early parts of the industrial revolution.
1) programming is more like an art than a science, and so should not be regulated like engineering
2) the capital/labor requirements for programming are minimal - basically anyone could do it - so we should not worry about trying to license something that people could (and do) do at home.
3) there's no agreement about what would be required to get a license.
4) free software would die
Of course, some of these really do not hold up to close inspection. It's true that there is an "art" to programming, but not much more than there is in architecture for example, and there's no reason you couldn't require a license for cases where you do work for others rather than yourself. Since the 90s, it's become a _little_ more clear what the components of a s/w dev license might be, but perhaps still not enough to really pin it down. And yes, it would probably kill the free software world.
For example, as long as a certain percentage of principal engineers are licensed, others within the company don’t have to be. Similar with working under a licensed lead or specific article industry exemptions.
It would also give some power to the developers over management in key decisions. I’ve seen managers try to back engineers into a corner and when the engineer ultimately said they wouldn’t sign off on a design, management backed down because they didn’t have an equivalent to “just ship it now” and get it stamped later.
I understand the fear of it, but sometimes it seems like the sw development is run like the Wild West.
"To become licensed, engineers must complete a four-year college degree, work under a Professional Engineer for at least four years, pass two intensive competency exams and earn a license from their state's licensure board. Then, to retain their licenses, PEs must continually maintain and improve their skills throughout their careers."
Most PEs that I have worked with are very diligent. You don't get yahoos going that far. Generally, they are top-notch engineers. Think '10X' engineers, but for oil wells and churches. I mean, look at any large structure on Wikipedia, most of the time you'll find the engineer's name in the side placard, not just the firm's name. PEs are serious, dedicated, and smart people. I mean, their stamp is on those documents and they go to jail when the bridge fails.
So, for software, if you have an exam of the PE's caliber, you essentially guarantee '10X' engineers. The workforce is more highly paid, yes, but it is of a much higher quality. Bugs get solved faster, stand-ups don't last 30 minutes, the wiki is updated by everyone, etc. Employers know that their candidates really are good stuff, less whiteboards or take-homes are needed. Also, possibly when something messes up, the engineer is the one responsible, not the company. So offloading the insurance to the employees is not the worst thing for a company.
Honestly, it would not be a bad system and I think would be a much calmer and better one.
https://ncees.org/engineering/pe/software/
i'm seeing some sources that say it was discontinued after 2019 due to lack of interest, and the main "PE" page no longer links to the software PE exam.
We need increased awareness of ethics but we don't need more government involvement or any other form of coercion. Governments are already far less ethical then pretty much any other organisation or institution.
Morals and ethics are about people. Laws and regulation are about how those morals and ethics are reduced to practice.
Government created laws and regulation are just threats. They tell you nothing about what is right or ethical. They only tell you how a particular group of people want you to behave and what they will try to do to you if you refuse to obey. Anyone with enough capacity for violence and willingness to use it can create a law but no amount of force can change what is right or wrong.
Consider https://www.gnu.org/philosophy/the-root-of-this-problem.html and https://www.gnu.org/philosophy/freedom-or-copyright.html as recent entries.
It covers most of the widely debated issues in software today, including spam, malware, DRM, invasion of privacy, undue influence by one participant in the ecosystem, copyright infringement, and bait-and-switch terms of service. It even addresses the question of writing software that could be misused.
It isn't widely accepted because a lot of programmers don't like it. They don't like it because they make money by violating it.
For "real" engineers, is it fair to say their ethical questions are more easily constrained than those in software? I assume it usually reduces to "should I accept a lower-than-average safety margin to save money on a part/structure that might fail and hurt people?" Maybe "should I make this vehicle accommodate extremely tall people?" or "can a child hurt themselves with this device?"
Honestly lawyers feel like the closest analogue to software engineers.
For capital "E" Engineers (i.e., those with a State license), I would say yes. They are required to abide by specific ethics and some states require regular ethics training. If they certifying a design, they are putting their name/license/livelihood on the line that it meets a minimum standard. This standard is usually defined by specific codes.
The problem I often see in software is that many codes (if they even exist) are looked at as a "nice to have" not a "must have", unless they are contractually obligated. If I show a code-base doesn't adhere to a specific industry standard, the reaction is often "meh". This is in contrast to other engineering disciplines who tend to begrudgingly acknowledge they have to re-design to meet such a standard.
The issue with some of your examples is that much of engineering work happens under an "industrial exemption" meaning they don't have to be a licensed engineer.
https://www.computer.org/education/code-of-ethics
Copyright 1999. I was taught ethics in my college work, so clearly everyone else just ignores it like they do for the various other fields where there is an ethics code. People suck.
I live in the UK and was considering going through the British Computer Society certification process years ago, but dropped it, because while I do care about the ethical side etc. the additional amount of effort it'd take to document skills I already had was not worth it when prospective employers in the fields I've worked in just did not care.