Love this bit: "Software engineers shall participate in lifelong learning regarding the practice of their profession..." (emphasis mine)
I can imagine the hilarity that will ensue when that 70-something-still-employed Cobol maintainer is asked by some newly minted MBA if he or she is actively participating in lifelong learning per the ACM SE code of ethics.
I am personally acquainted with some senior citizens who have sharp minds and continue to learn and grow (in some cases doing original academic research). I hope I continue to learn and grow well into my old age
On an unrelated side note, I don’t post my public twitter handle on this account’s profile page, but I did on the account that bears my real name. Some years ago you followed me on twitter and were to date the only person from HN to have done so. In gratitude, I followed you back, and I have been duly rewarded by your engaging content and your explanations of the ins and outs of auth. I particularly enjoyed your ELI5 thread on oauth. I have an appreciation for DevRel I would not developed had I not been reading your tweets.
To come back to the topic at hand: Tech is for the public good. Shout it from the rooftops!
Ah, thanks! I appreciate the kind words and the feedback. Tweeting is often like screaming into the maw of a nameless void, so it's great to hear that you found some of what I said useful.
I don't get paid a dime, and work harder, each day, than I ever have (like really "each day" -My GH Activity Graph is solid green, and I don't game it. I like to write Swift every single day).
In fact, almost every bit of software that I've shipped (personally), in the last fifteen years or so, has been unpaid. I was paid to manage other engineers, writing ship code.
I love where I am, and have no intention to get back in the rat race (sorry).
I’ve never read this before and I’m glad you linked it. I read the short version and I really like it. I will peruse the full version at my leisure. It is immediately clear that not every software company follows these principles.
We had to read this in one of my Software Engineering classes and do assignment on it like showing how we were following the code of ethics with the semester project or week project we had. It is a good document. Designed to make Software Engineering conform to similar standards that other fields of Engineering have to abide by, or should be abiding by.
Indeed, and you are touching on a subject I think about regularly: I don’t know first-hand what most engineering disciplines are like, but I believe that much of software development is not engineering at all. Instead it is slapdash and haphazard. Codebases very frequently grow by accretion rather than design as convoluted patches are laid on top of already byzantine systems. There is often little forethought; rarely is serious consideration given to the maintainability, soundness, and security of the work we do, let alone the consequences of it to society at large.
I believe that software engineering is possible; I believe that I have seen it done and taken part in it. But in general, a scrappy, pivoting startup does not embrace anything approaching engineering practices. I wish this were more accepted and I think we can start by calling it software development instead of software engineering.
Our industry is still in its infancy but it has a huge impact on society. I would like to see more engineering in the industry, but I feel a very short-sighted approach to maximizing profit precludes this. I fear that until we have more death and more loss incurred by poor development practices it will not be the norm to practice true software engineering.
Haha, I saw that as well, I was going to post that I expected a bit more from the Association for Computing Machinery (of all organizations), but it slowly loaded and I gave them a pass.
While I think software engineering is vastly different from other kinds of engineering, I can't think of a good reason that the code of ethics would be any different.
Software engineering is a small subset of software development. Most software development is more akin to skilled construction labor than to real engineering. And that's not a bad thing.
Well, I should explain: Software is created in the symbolic realm rather than the "physical" one. So, software has little to do with physics; and software is all design, no "labor".
So yes you could say "engineering" is the wrong label (and we go back to "development"), but it's still interesting that ethically they have such similar concerns.
> Engineers shall at all times strive to serve the public interest.
> Engineers are encouraged to participate in civic affairs; career guidance for youths; and work for the advancement of the safety, health, and well-being of their community.
> Engineers shall not complete, sign, or seal plans and/or specifications that are not in conformity with applicable engineering standards. If the client or employer insists on such unprofessional conduct, they shall notify the proper authorities and withdraw from further service on the project.
> Engineers are encouraged to extend public knowledge and appreciation of engineering and its achievements.
> Engineers are encouraged to adhere to the principles of sustainable development1 in order to protect the environment for future generations.
> Engineers shall continue their professional development throughout their careers and should keep current in their specialty fields by engaging in professional practice, participating in continuing education courses, reading in the technical literature, and attending professional meetings and seminars.
That's rather different from the ACM's take:
> 1.02. Moderate the interests of the software engineer, the employer, the client and the users with the public good.
> 1.03. Approve software only if they have a well-founded belief that it is safe, meets specifications, passes appropriate tests, and does not diminish quality of life, diminish privacy or harm the environment. The ultimate effect of the work should be to the public good.
I'd summarize the NSPE list as roughly "follow the rules, know your limits, and don't be dishonest (and if you can maybe try to spare a bit of time to improve the world)".
And the ACM takes that "if you can" and puts it as the top priority.
So, would writing software to manage say a lithium mine "harm the environment" or not? Obviously mines themselves aren't great for the immediate surroundings, but then lithium is rather critical for electric cars which are supposed to be helping save the world. Do they really want to mandate that someone designing SCADA stuff analyze that and come to a defensible conclusion before deciding if they're allowed to take a particular employer?
In your case of a lithium mine, software would not add any harm, and it's unlikely that the mine would be infeasible but for the software. Ideally the software makes the mine more efficient (and thus less harmful).
An easier target is just anything that uses up more energy than it saves; video games use a lot of energy and give us what in return?
At any rate yes it's probably too draconian in its present wording.
Facebook is another thing entirely, but I would easily complain about Lockheed-Martin failing acting in public interest when said public interest involves development of weapons of war and supporting tools...
Everybody loves defense, though. As said in another comment: it's too vague. When even strict rules can be bent, vague rules don't mean anything.
(hit save too early): but that's thinking legally. As an inspiration, a way of seeing the world and your work, as a moral guide, it can help. And some people really should wonder if they have taken the right path.
See, I didn't say the amoral wrong thing was the defence part. But failing at it :V (whether through milking the public coffers, doing unethical things to further arms sales, etc. - making tools to defend oneself is not that morally bad)
Seems trivial to argue that free social networks and even certain military actions are in the public interest. But that's the problem with something like this, it's just vague non-sense.
Lockhead Martin and co is making it possible for the US and the free world to help Ukraine smash the murderous, raping war criminals of Russia.
Yes, I condemned them for supplying the military that bombed weddings and murdered journalists, and I continue to deplore that, but I was naive in thinking they weren't necessary and that they can't do good things.
I do agree with you on the power dynamics that may plague some workplaces today.
It feels as though there is a greater burden or accountability placed on the lower-level employees more than the c-suite.
What do you think if we speak to the value of a code of ethics separately from the unfortunate power dynamics some companies have chosen?
I think the code of ethics of the American Bar Association prohibits lawyers from accepting a position where they are bound to obey non-lawyers. That is, you can have a boss, but only if they're another lawyer.
There are thousands of lawyers who work as internal corporate counsel and report to non-lawyer managers. The actual prohibition is on sharing legal fees or forming partnerships with non-lawyers (although certain exceptions are allowed).
Interesting, thank you for the correction; the part I was referring to is §5.4(c):
"A lawyer shall not permit a person who recommends, employs, or pays the lawyer to render legal services for another to direct or regulate the lawyer's professional judgment in rendering such legal services."
I love that people took the time and effort to draft this, but boy am I jaded on the practicality of these things. CoE's are inherently utopian and seldom adhered to behind closed doors.
My take is that at best, CoE's are for instilling homogeneity by outlining predefined, unquestionable set of shibboleth's for the working class. At it's worst, CoE's are just CYA measures outlined and enforced to avoid lawsuits. Few truly believe.
Most CoE's are also a one-way agreement. When is the last time you heard of a Human Resources, DIB, or "Member Working Group" called out for not upholding the CoE that they wrote? When is the last time you witnessed a CoE violation in the way of bad hiring practices (for the sake of "diversity")?
At this point in my career I feel I could give a whole talk about CoE violations, form and the whole process of writing the code. I won't bore the reader here though.
Most of the harms discussed in here result primarily from proprietary software licensing practices, so it is unfortunate that no reference is included to something like https://www.gnu.org/philosophy/shouldbefree.html.
From my point of view, the only intellectually serious investigation of the ethics of software engineering is that conducted by the FSF, for example in the essay I linked above. That's unfortunate, because I think the FSF's analysis is shortsighted in many ways, and software is profoundly important to many aspects of human life already, and becoming more so every day. It's an area of philosophical inquiry that has been seriously neglected.
Nothing in, for example, the ACM's linked code of ethics, even attempts to tackle the difficult ethical issues that arise when, for example, the law conflicts with the public interest; indeed, the ACM's code doesn't even attempt to engage in any sort of moral reasoning, simply presenting a series of mutually contradictory conclusions without attempting any justification for most of them, much less exploring how they play out in practice.
Many people will object that both the ACM's principles and the FSF's principles are inconsistent with the current state of the software industry and indeed the economy in general, and therefore it is not practical to follow them. (Probably some will silently downvote this comment for the same reason.) But if this is true, it does not necessarily mean that the principles are bad; it might mean that the state of the economy is bad, and we should work to bring it into accordance with whatever principles we decide are best.
IMO the essay you linked to is ethically stunted and not particularly serious.
For example, it wants to hold independent the development of software and the ownership of software, which is pointless since they are not independent. Software doesn't necessarily get developed whether or not anyone is paid to do it, and people don't necessarily pay for software to be written (or anything else) without having some control over the the software (or anything else).
It seems nice that software is written that is only for free distribution, but it seems dead wrong that those should be the only terms under which software is written.
RHS thinks I don't have the right to trade my own time -- my own time -- simply because what I do with that time is write software.
IMO, it's a fundamental right to be able to come to come to terms with another person and there's no special exception because written code is part of the exchange.
Essentially nothing you say or imply in your comment about the essay I linked is correct. I've often observed this phenomenon when people are talking about issues they find upsetting, but the degree of disregard for veracity in your comment is an especially astonishing example.
I was tempted to write a rebutting comment explaining in detail why each of the claims and implicit claims in your comment about what this essay says is false — in most cases, the diametrical opposite of the truth — but that would be far too much work; you will have to be satisfied with this blanket dismissal. But the essay is quite clearly written, so anyone who bothers to read it will easily be able to recognize your falsehoods.
If you want to argue against Stallman's ideas, I'd like to suggest that, even if you're willing to sacrifice your own reputation to do so, employing such astounding levels of mendacity may not work to your advantage.
Ethics are very important because the products we create have such powerful consequences. It's common to see engineers so excited about the product they've created (myself included) that they overlook the additional problems they've created. Recent examples are with AI models built with historical data (hiring, loans, or other competitive decisions) that discriminates against groups of people. An ethical approach would be to include these considerations in the data analysis phase. It's not that most developers allow this to happen intentionally and having an ethical mindset is one of the things we can do to avoid problems.
>they overlook the additional problems they've created
By making food cheap, we have created a society that suffers from obesity. But 100 years ago (and at all times before this, excluding a few random lucky individuals) people were suffering much, much more from a want of food.
So in a sense, yes, we have created a new problem. But that was a consequence of solving an other, bigger and much more pressing problem.
So, to be honest, I don't give much for "engineers overlook the problems we create".
Ugh this is naive and silly, I'm sorry, we build things, we are not the arbiters of public interest, and the public interest is not something we as individual should have the authority or expectation of judging.
I've always thought the notion of trying to place the morality of systems and the software we create in the hands of the builders is a farce. That falls on those who have it built.
> Ugh this is naive and silly, I'm sorry, we build things, we are not the arbiters of public interest, and the public interest is not something we as individual should have the authority or expectation of judging.
Until that time the Volkswagen programmer was put in prison before any manager or executive...
Yeah because some creed of ethics would have changed that?
Did they need a code of ethics to know what they was doing was shady, no. Would that code of ethics be used in a court of law to show that their crime was more egregious had they or the industry adopted it, probably.
Will some code of ethics stop management from demanding shady things, and will it stop people from doing it, history says no.
So what would be the positive aspect of agreeing to this?
In my experience, any suggestion that it's important to adhere to a public specification e.g. FCC rules, is met with complete indifference. You do whatever will make your product sell. Those rules are for other folks.
I personally prefer the WFEO model code of ethics. It's more generic but also more to the point.
--------------
In the course of engineering practise, I will endeavour to:
# Demonstrate Integrity
Refrain from fraudulent, corrupt or criminal practices Be objective and truthful Practise fairly and with good faith towards clients, colleagues and others
# Practise Competently
Practise in a careful and diligent manner in accordance with my areas of competence Practise in accordance with accepted engineering practices, standards and codes Maintain and strive to enhance the body of knowledge in which I practise
# Exercise Leadership
Practise so as to enhance the quality of life in society Strive to contribute to the advancement of the body of knowledge within which I practise, and to the profession in general Foster the public’s understanding of technical issues and the role of engineering
# Protect the Natural and Built Environment
Create and implement engineering solutions for a sustainable future Be mindful of the economic, societal and environmental consequences of actions or projects Promote and protect the health, safety and well being of the community and the environment
58 comments
[ 223 ms ] story [ 1659 ms ] threadI can imagine the hilarity that will ensue when that 70-something-still-employed Cobol maintainer is asked by some newly minted MBA if he or she is actively participating in lifelong learning per the ACM SE code of ethics.
I like what I do and could see doing it (with a more flexible schedule) for many many years in the future.
On an unrelated side note, I don’t post my public twitter handle on this account’s profile page, but I did on the account that bears my real name. Some years ago you followed me on twitter and were to date the only person from HN to have done so. In gratitude, I followed you back, and I have been duly rewarded by your engaging content and your explanations of the ins and outs of auth. I particularly enjoyed your ELI5 thread on oauth. I have an appreciation for DevRel I would not developed had I not been reading your tweets.
To come back to the topic at hand: Tech is for the public good. Shout it from the rooftops!
I don't get paid a dime, and work harder, each day, than I ever have (like really "each day" -My GH Activity Graph is solid green, and I don't game it. I like to write Swift every single day).
In fact, almost every bit of software that I've shipped (personally), in the last fifteen years or so, has been unpaid. I was paid to manage other engineers, writing ship code.
I love where I am, and have no intention to get back in the rat race (sorry).
I learn new stuff, every day.
Now, get off my lawn. I got software to ship.
I believe that software engineering is possible; I believe that I have seen it done and taken part in it. But in general, a scrappy, pivoting startup does not embrace anything approaching engineering practices. I wish this were more accepted and I think we can start by calling it software development instead of software engineering.
Our industry is still in its infancy but it has a huge impact on society. I would like to see more engineering in the industry, but I feel a very short-sighted approach to maximizing profit precludes this. I fear that until we have more death and more loss incurred by poor development practices it will not be the norm to practice true software engineering.
Thank you for bringing up this point.
For comparison: https://www.nspe.org/resources/ethics/code-ethics
While I think software engineering is vastly different from other kinds of engineering, I can't think of a good reason that the code of ethics would be any different.
In that case, it kind of make me wonder if engineering is the proper label.
So yes you could say "engineering" is the wrong label (and we go back to "development"), but it's still interesting that ethically they have such similar concerns.
> Engineers are encouraged to participate in civic affairs; career guidance for youths; and work for the advancement of the safety, health, and well-being of their community. > Engineers shall not complete, sign, or seal plans and/or specifications that are not in conformity with applicable engineering standards. If the client or employer insists on such unprofessional conduct, they shall notify the proper authorities and withdraw from further service on the project. > Engineers are encouraged to extend public knowledge and appreciation of engineering and its achievements. > Engineers are encouraged to adhere to the principles of sustainable development1 in order to protect the environment for future generations. > Engineers shall continue their professional development throughout their careers and should keep current in their specialty fields by engaging in professional practice, participating in continuing education courses, reading in the technical literature, and attending professional meetings and seminars.
That's rather different from the ACM's take:
> 1.02. Moderate the interests of the software engineer, the employer, the client and the users with the public good.
> 1.03. Approve software only if they have a well-founded belief that it is safe, meets specifications, passes appropriate tests, and does not diminish quality of life, diminish privacy or harm the environment. The ultimate effect of the work should be to the public good.
I'd summarize the NSPE list as roughly "follow the rules, know your limits, and don't be dishonest (and if you can maybe try to spare a bit of time to improve the world)".
And the ACM takes that "if you can" and puts it as the top priority.
So, would writing software to manage say a lithium mine "harm the environment" or not? Obviously mines themselves aren't great for the immediate surroundings, but then lithium is rather critical for electric cars which are supposed to be helping save the world. Do they really want to mandate that someone designing SCADA stuff analyze that and come to a defensible conclusion before deciding if they're allowed to take a particular employer?
An easier target is just anything that uses up more energy than it saves; video games use a lot of energy and give us what in return?
At any rate yes it's probably too draconian in its present wording.
https://www.ieee.org/about/corporate/governance/p7-8.html
Guess that excludes everyone at Facebook and Lockheed Martin.
(hit save too early): but that's thinking legally. As an inspiration, a way of seeing the world and your work, as a moral guide, it can help. And some people really should wonder if they have taken the right path.
Yes, I condemned them for supplying the military that bombed weddings and murdered journalists, and I continue to deplore that, but I was naive in thinking they weren't necessary and that they can't do good things.
https://en.wikipedia.org/wiki/Hippocratic_Oath
What do you think if we speak to the value of a code of ethics separately from the unfortunate power dynamics some companies have chosen?
https://www.americanbar.org/groups/professional_responsibili...
"A lawyer shall not permit a person who recommends, employs, or pays the lawyer to render legal services for another to direct or regulate the lawyer's professional judgment in rendering such legal services."
And §5.4(d)(3) which sort of says the same thing.
My take is that at best, CoE's are for instilling homogeneity by outlining predefined, unquestionable set of shibboleth's for the working class. At it's worst, CoE's are just CYA measures outlined and enforced to avoid lawsuits. Few truly believe.
Most CoE's are also a one-way agreement. When is the last time you heard of a Human Resources, DIB, or "Member Working Group" called out for not upholding the CoE that they wrote? When is the last time you witnessed a CoE violation in the way of bad hiring practices (for the sake of "diversity")?
At this point in my career I feel I could give a whole talk about CoE violations, form and the whole process of writing the code. I won't bore the reader here though.
Make that legally binding for the people I work for, and we can talk. Until then...
From my point of view, the only intellectually serious investigation of the ethics of software engineering is that conducted by the FSF, for example in the essay I linked above. That's unfortunate, because I think the FSF's analysis is shortsighted in many ways, and software is profoundly important to many aspects of human life already, and becoming more so every day. It's an area of philosophical inquiry that has been seriously neglected.
Nothing in, for example, the ACM's linked code of ethics, even attempts to tackle the difficult ethical issues that arise when, for example, the law conflicts with the public interest; indeed, the ACM's code doesn't even attempt to engage in any sort of moral reasoning, simply presenting a series of mutually contradictory conclusions without attempting any justification for most of them, much less exploring how they play out in practice.
Many people will object that both the ACM's principles and the FSF's principles are inconsistent with the current state of the software industry and indeed the economy in general, and therefore it is not practical to follow them. (Probably some will silently downvote this comment for the same reason.) But if this is true, it does not necessarily mean that the principles are bad; it might mean that the state of the economy is bad, and we should work to bring it into accordance with whatever principles we decide are best.
For example, it wants to hold independent the development of software and the ownership of software, which is pointless since they are not independent. Software doesn't necessarily get developed whether or not anyone is paid to do it, and people don't necessarily pay for software to be written (or anything else) without having some control over the the software (or anything else).
It seems nice that software is written that is only for free distribution, but it seems dead wrong that those should be the only terms under which software is written.
RHS thinks I don't have the right to trade my own time -- my own time -- simply because what I do with that time is write software.
IMO, it's a fundamental right to be able to come to come to terms with another person and there's no special exception because written code is part of the exchange.
I was tempted to write a rebutting comment explaining in detail why each of the claims and implicit claims in your comment about what this essay says is false — in most cases, the diametrical opposite of the truth — but that would be far too much work; you will have to be satisfied with this blanket dismissal. But the essay is quite clearly written, so anyone who bothers to read it will easily be able to recognize your falsehoods.
If you want to argue against Stallman's ideas, I'd like to suggest that, even if you're willing to sacrifice your own reputation to do so, employing such astounding levels of mendacity may not work to your advantage.
By making food cheap, we have created a society that suffers from obesity. But 100 years ago (and at all times before this, excluding a few random lucky individuals) people were suffering much, much more from a want of food.
So in a sense, yes, we have created a new problem. But that was a consequence of solving an other, bigger and much more pressing problem.
So, to be honest, I don't give much for "engineers overlook the problems we create".
That's the US. Its not a problem elsewhere where food is abundant. Like in Europe.
I've always thought the notion of trying to place the morality of systems and the software we create in the hands of the builders is a farce. That falls on those who have it built.
Until that time the Volkswagen programmer was put in prison before any manager or executive...
Did they need a code of ethics to know what they was doing was shady, no. Would that code of ethics be used in a court of law to show that their crime was more egregious had they or the industry adopted it, probably.
Will some code of ethics stop management from demanding shady things, and will it stop people from doing it, history says no.
So what would be the positive aspect of agreeing to this?
In my experience, any suggestion that it's important to adhere to a public specification e.g. FCC rules, is met with complete indifference. You do whatever will make your product sell. Those rules are for other folks.
--------------
In the course of engineering practise, I will endeavour to:
# Demonstrate Integrity
Refrain from fraudulent, corrupt or criminal practices Be objective and truthful Practise fairly and with good faith towards clients, colleagues and others
# Practise Competently
Practise in a careful and diligent manner in accordance with my areas of competence Practise in accordance with accepted engineering practices, standards and codes Maintain and strive to enhance the body of knowledge in which I practise
# Exercise Leadership
Practise so as to enhance the quality of life in society Strive to contribute to the advancement of the body of knowledge within which I practise, and to the profession in general Foster the public’s understanding of technical issues and the role of engineering
# Protect the Natural and Built Environment
Create and implement engineering solutions for a sustainable future Be mindful of the economic, societal and environmental consequences of actions or projects Promote and protect the health, safety and well being of the community and the environment