7 ms·
Ask HN: What should a software engineering Hippocratic Oath equivalent be?
If any.
- dmarchand90 6y agoYou might want to look into the Archimedean oath https://en.wikipedia.org/wiki/Archimedean_Oath https://en.wikipedia.org/wiki/Archimedean_Oath
- mmm_grayons 6y agoThat's an interesting starting point, though I do see some potential issues, especially in the human rights provision. Namely, who defines human rights? The UN has its own definition that has received some attention (and indeed, it appears this is the definition used), but it defines things such as social security, paid time off, food, clothing, housing, and a whole laundry list of other things; I along with some others scorn the UN's concept of rights because I don't believe one can possess a positive right. So we reach the age-old question of, "Who decides?" Another potential problem is the mention of promoting "equitable relationships". While this may be confusion due to translation, "equitable" has recently been taken to mean equal in outcome, which I will never actively encourage.
- lostmsu 6y agoDo not harm any software.
- mthoms 6y agoThere's lots of good things mentioned so far. I'd like to add something to the effect of - "I shall not attempt to manipulate user behaviour in order to increase revenue or metrics. The usage of my product shall be driven entirely by the user's conscious and deliberate desire to engage with it." Yeah, I know — it's vague and completely unrealistic. Still... a man can dream.
- st1x7 6y agoSo no advertising at all?
- zootboy 6y agoThat sounds like a fantastic ideal to strive for, even if it's not realistic in all scenarios.
- st1x7 6y agoIt's not realistic in any scenario, that's just naive. Two main points to consider: 1. Most developed countries allow for some freedom of expression which rules out banning advertising outright. 2. Advertising is generally effective in the sense that it increases sales to some extent. So as soon as just one player in a market starts advertising (which can't be prevented), everyone else has to do it too just to keep up.
- rhn_mk1 6y agoAdvertising doesn't have to be manipulative. If advertising went missing overnight, we would have quickly noticed that it also serves another function: informative. I find it sad that advertising implies manipulation outright.
- WillPostForFood 6y agoNo cute company logos and no photos or adjectives in descriptions of products. Everything is manipulation at some level. Amazon would need to be a blank search page, and you’d have to tell it exactly what you want, and the only thing it could say back is “no” or “yes” and the price.
- st1x7 6y agoA world where rules like these can be enforced by law sounds more dystypian than a world with excessive advertising.
- mthoms 6y agoI can see how my comment could be interpreted to mean no advertising at all but that wasn't my intent. I was more thinking about how apps surreptitiously manipulate your engagement (frequency + duration) with them. On the point of advertising though, if advertising focused entirely on factual information around features and benefits, I'd consider that a win. Kind of like how it used to be before Edward Bernays and similar thinkers came along. https://en.wikipedia.org/wiki/Edward_Bernays https://en.wikipedia.org/wiki/Edward_Bernays
- anfilt 6y agoDo not lock users out their own hardware. (Aka iPhones, gaming consoles, tractors ect...). Do not create hidden/activated functions.(Think of VW diesel scandal, or other triggered back doors). Respect peoples privacy.
- smithmayowa 6y agoProtect/Sell people’s personal data is like the main ethical issue with software engineering.
- sebasvisser 6y agoI shall respect the physical, mental and digital wellbeing of a person. I shall respect their personhood, both physical and digital. I shall do no harm, neither direct or indirectly. And I shall willingly assist those in need, wherever and whenever I can.
- salawat 6y agoI say look no further than the Oath of the Engineer. Sometimes the simplest is the best. There'll always be differences in everyone's moral fiber, but generally speaking, be professionial, be efficient, come up with a plan to build every project that comes your way, ybe willing to say "No" when everyone else wants you to say "Yes" when put in a position in opposition to the interests of the Public. It'll change from country to country, but the essence of it is universal to the field of endeavor, and legalism should have nothing to do with it. Note discretion is nowhere included in that except maybe implied in professional. That's intended; as Engineers, we all must be on guard for those building things harmful to the public, and be willing, if Fate deems it necessary to inform other Engineers of the danger, and educate the non-Engineer enough that they can come to a reasonable conclusion on the matter, even if they don't end up swinging the way we think they should. For ours is a postion of systemic guardianship and stewardship of the Will, made manifest through artifice, of humanity. Every nut and bolt fastened, every line of code written, compiled, interpreted, and executed; every transmission, transaction, every automated task, and task left unautomated is another fold in the delicate structure of the societies in whose service we ply our trade.
- 02020202 6y agoI shall not force my own political opinions on users of my code. I shall forego code of conduct for the users of my code and let them behave freely.
- 29athrowaway 6y agoAbsolute engineering freedom is also the freedom to create technologies that oppress others. Engineering oppression through biometrics, addiction, intruding privacy, etc.
- st1x7 6y agoThere can't be one because 1. The ethical decisions that happen in the industry aren't made by the software engineers. 2. The boundaries around those decision are very grey. Can I create a feature that breaches user's privacy? What if I don't build the feature but just write documentation for it? What if I do pure research but then my research is used for a morally questionable purpose by the company? What if my company does a bunch of shady things but not my department? What if my company respects its users but mistreats its employees? What if my company treats employess and users fairly but it's in a questionable industry like gambling for example? Or what if I make a game that's perfectly fine for most players but a small number of them get addicted to the point that it ruins their lives? And so on, these questions go on forever and it's not as straightforward as "do no harm".
- rewq4321 6y ago> Can I create a feature that breaches user's privacy? What if I don't build the feature but just write documentation for it? More pertinently, most of the time: What if I think that feature would be a net-positive for everyone? There obviously cases where a product literally couldn't exist without collecting user data, and so long as they're up-front about it, I'm fine with that. It's sneaky data collection that's the problem.
- codegeek 6y agoThese days a lot of doctors also cannot make independent decisions due to pressure from insurance companies, hospital board etc. Interesting to compare with software engineers.
- shiado 6y agoThe "ethicality" of any given program is a non-trivial semantic property. It follows that any software engineering "Hippocratic Oath" is an undecidable concept.
- deleted 6y ago[deleted]
- matmann2001 6y agoOrder of the Engineer is a similar thing that already exists. You swear an oath and get a sick pinky ring.
- contravariant 6y agoEthics remains the same no matter the tool. If there's something specific to programmers then perhaps it would be: - Don't create software you don't want to work.
- cnorthwood 6y agoThe BCS have a code of ethics for their members (note the BCS goes beyond software development and incorporate roles such as business analysts amongst their members). It's pretty good imo https://www.bcs.org/membership/become-a-member/bcs-code-of-conduct/ https://www.bcs.org/membership/become-a-member/bcs-code-of-c...
- ThrowawayR2 6y agoIn addition to the other answers, there's already a comprehensive Code of Ethics from both the ACM (https://www.acm.org/code-of-ethics https://www.acm.org/code-of-ethics) and IEEE (https://www.ieee.org/about/corporate/governance/p7-8.html https://www.ieee.org/about/corporate/governance/p7-8.html). For those in the US, the NSPE also has their Code of Ethics (https://www.nspe.org/resources/ethics/code-ethics https://www.nspe.org/resources/ethics/code-ethics). In short, there's already plenty of that sort of thing floating around (sotto voce) and being ignored by practitioners.
- mqus 6y agoThere is also the hacker ethics, as summarized by the ccc: https://www.ccc.de/en/hackerethik https://www.ccc.de/en/hackerethik While they have a slightly different goal, the content could be a very useful reference for actual guideline.
- slg 6y agoYeah, the problem is not that these codes of ethics don't exist, it is that it is nearly impossible for them to become a requirement for software development. You would have to change the entire legal landscape of software including certifying and licensing developers as well as banning a lot of hobbyist open source development in order for these code of ethics to be anything more than voluntary. And anyone who is willing to voluntary agree to a code of ethics probably wasn't the person who was doing ethically questionable work anyway. I am a strong proponent of software ethics being taught in schools, but I don't think an Hippocratic type oath makes any sense in our profession.
- anovikov 6y agoI thought about it a lot, and i really can't see a way. Being an independent developer or running a custom development company we all always face the problem of building knowingly hopeless software: that cannot exist, targets nonexistent market, and is built for a client who with full confidence unable to make any benefit out of it - Dunning-Kruger effect being on our side. I spent my entire career seeing stuff built which shouldn't be built because it makes no sense, from ICQ clones in 2000 to Chatroulette clones in 2010 to Tik-Tok clones in 2020. And i can't see any probable way out of it: pick projects that make even the remote semblance of sense and you have to work for much smarter clients -> won't make any money...
- alexchamberlain 6y agoWhile I think an effective code of ethics is essential at this point, I think broader professional practices, organisations and boards will have a larger impact on the field and the perception of the field to others.
- deleted 6y ago[deleted]
- quicklime 6y agoI'm surprised no one (including the IEEE and NPSE, linked in another comment) has mentioned that software engineers should be responsible for disclosing knowledge of any data breaches (and probably security vulnerabilities) that they know about. This would be at the top of my list.
- mellosouls 6y agoText of the Hippocratic Oath https://en.wikipedia.org/wiki/Hippocratic_Oath https://en.wikipedia.org/wiki/Hippocratic_Oath -- TL;DR: Respect and look after my mentors. Teach my art for free to those following this oath; but not to others. Do the best job I can according to my ability and judgement. Always work in an ethical way; do no evil. Respect privacy.
- mellosouls 6y agoAnd the actual translation for reference from the wiki link: -- I swear by Apollo Healer, by Asclepius, by Hygieia, by Panacea, and by all the gods and goddesses, making them my witnesses, that I will carry out, according to my ability and judgment, this oath and this indenture. To hold my teacher in this art equal to my own parents; to make him partner in my livelihood; when he is in need of money to share mine with him; to consider his family as my own brothers, and to teach them this art, if they want to learn it, without fee or indenture; to impart precept, oral instruction, and all other instruction to my own sons, the sons of my teacher, and to indentured pupils who have taken the Healer’s oath, but to nobody else. I will use those dietary regimens which will benefit my patients according to my greatest ability and judgment, and I will do no harm or injustice to them.[7] Neither will I administer a poison to anybody when asked to do so, nor will I suggest such a course. Similarly I will not give to a woman a pessary to cause abortion. But I will keep pure and holy both my life and my art. I will not use the knife, not even, verily, on sufferers from stone, but I will give place to such as are craftsmen therein. Into whatsoever houses I enter, I will enter to help the sick, and I will abstain from all intentional wrong-doing and harm, especially from abusing the bodies of man or woman, bond or free. And whatsoever I shall see or hear in the course of my profession, as well as outside my profession in my intercourse with men, if it be what should not be published abroad, I will never divulge, holding such things to be holy secrets. Now if I carry out this oath, and break it not, may I gain for ever reputation among all men for my life and for my art; but if I break it and forswear myself, may the opposite befall me.[6] – Translation by W.H.S. Jones.
- pdimitar 6y agoAny opinions on the matter completely ignore the fact that the software engineers are NOT the shot callers. And the fact that changing jobs -- in case you have an ethical disagreement with your employer -- is awful abs hugely taxing on both your physical and mental health. And yes, that goes to programmers as well. It ain't all sunshine and rainbows as many claim. In short: having an ethical code is irrelevant. It will be overridden by the business anyway so why waste your time composing it?
- hprotagonist 6y agoFor traditional engineering disciplines, we have one already! I am an Engineer. In my profession, I take deep pride. To it, I owe solemn obligations. As an engineer, I pledge to practice integrity and fair dealing, tolerance and respect, and to uphold devotion to the standards and dignity of my profession. I will always be conscious that my skill carries with it the obligation to serve humanity by making the best use of the Earth's precious wealth. As an engineer, I shall participate in none but honest enterprises. When needed, my skill and knowledge shall be given, without reservation, for the public good. In the performance of duty, and in fidelity to my profession, I shall give my utmost. https://en.wikipedia.org/wiki/Order_of_the_Engineer#Oath https://en.wikipedia.org/wiki/Order_of_the_Engineer#Oath
- LatteLazy 6y agoI solomly swear not to pretend I can control or even forsee the use of my work or how it will be extended by others.
- irvingprime 6y ago+1
- 29athrowaway 6y agoSecurity researchers act in a very ethical manner. Product engineers are, in average, the most unethical of the bunch: the ones that will release broken software and charge the customer as if it was finished, the ones that will wait for the customer to find bugs before fixing them, the ones that will market their software as safe and fill their page with words like "secure, safe" and security related imagery like lock icons without actually backing it up with good practices... etc.
- jerome-jh 6y agoTurns out I wrote one a few months ago. This is its first outing. I just put it there without accompanying explanations, so it may seem a bit obscure. And it is clearly unfinished, if finishable. It is more a moral code in the sense of the ten commandments. And I am not native english speaker. So here it is: Do not make computer programs that force humans into repetitive tasks. Computers are made for automating tasks, not enslaving humans. Do not pass onto users a responsibility that is on the program side. When the user has a responsibility, make it clear. The computer program must warn users when their input could cause a valid output for which they would be held responsible. Programs must never silently fail. Once users have used a computer program, you must not remove it from them, render it useless or make it available at a price higher than agreed beforehand. Once users have used a feature of a computer program, you must not remove it, hide it from them or make it available at a price higher than agreed beforehand. Programs must not override users inputs solely based on a probability of them being wrong. Users can always override program outputs that are based on probability or incomplete information. You must document all the features of the computer program accurately and make the documentation available to all users. Documentation is written in good faith. Documentation must at a minimum describe the program inputs and the valid program outputs. If the output is based on probability, the documentation must explicit the probability for the program giving a valid output, and the probabilities of giving whatever invalid output. When the program performance varies between users, any user can obtain the program performance in his/her particular case. Every citizen is a user of a computer program used for law enforcement. Every citizen is a user of a computer program operating in the public space. Every citizen is a user of a program collecting its inputs.
- jerome-jh 6y agoHere is the V2 with short rationales in quotes: No program shall force a human into repetitive tasks. "Computers are made for automating tasks, not enslaving humans." A program must not require inputs from a user, that have no effect on the output. "No deceptive programs." A program must warn the user when its inputs are ignored. "Split of responsibility." A Program must never silently fail. A program is provided to a user at a predetermined price. It cannot subsequently be removed from the user without its consent, made to produce invalid outputs, rendered useless or less valuable. "Programs do not wear and cannot be used to extort money from users." Programs must not ignore users inputs solely based on a probability of them being wrong. "Unusual input is not necessarily invalid" Users can always override program outputs that are based on probability or incomplete information. "In autonomous vehicles, justice, profiling" Documentation for the program must be provided to the user. It is written in good faith, describes all the features, the program inputs, and the valid outputs. If the program output is based on probabilities, the documentation must explicit the probability for the program to give a valid output. When program performance varies between users, a user can know the probability of a valid output in its case. A human providing inputs to a program, voluntarily or involuntarily, is a user of said program. "And as such has access to documentation".
- rektide 6y agoi'd start with rfc8890 "the internet is for end users" as some baseline behavior https://tools.ietf.org/html/rfc8890 https://tools.ietf.org/html/rfc8890 i like very much that the hypocratic oath starts with a long section on freely teaching & sharing. i believe both in teaching, but also taking great lengths to insure the machines we build are understandable, learnable, visible. any system closed off remote & far away from us is untrustworthy, almost certain to bring about surprising costs & damage to us, over time. the only responsible softwares & systems are ones that everyone can investigate & assess, can evaluate, to look for embedded elements of harm. and learn from, take the knowledge of- as all natural sciences grant!!- & learn from. the oath goes on to say that those who don't uphold the oath should be denied the teachings & learnings. trust only those who will act for good & virtue. the oath says we should act in a pure way, doing only the good we purport to bring, taking no other actions (ex, seducing someone in the house). again it is utmost to retain trust, to act only virtuously, for the end user, for the stated recipient. things that happen between practitioner & their, i dunno, practitioner, are to be held in confidence, not shared, not spied on or surveilled for other use/misuse. violators of the oath are to live short disrespected lives.
- AdrianB1 6y agoNone. As I told to a judge in a criminal case I was asked to testify: if you want I can swear with a hand on the Bible or promise I will tell only the truth, but I don't believe in any of these. You can trust my word or not, these are the only options. No matter how many codes you have in place, there is no way to guarantee they will be respected by everybody at all times. That does not mean I ever did something wrong by intention in any job that I had, but this is coming from my principles of life, not because laws or codes.
- irvingprime 6y agoNo. This is a non-starter. A doctor deals with a patient. A developer deals with a small number of abstractions of a bigger system. Forget it. The idea is sort of well meaning but completely divorced from reality.
- anotherevan 6y agoFirst do no spam.
- oliwarner 6y agoGDPR is a good start for user data. It's like sex. Get consent, stop if they say stop, and everybody has a good time. You'd want other aspects for software freedom (see: GPL?) and ingrained limits in AI (see: all Isaac Asimov).