Medicine has largely outgrown that oath. A few examples: At some point you're going to want to replace a bad heart, and to do that you have to take it out first. These days if an arm is broken, they often prefer to operate on it and insert some metal rods and pins to fix it so it heals faster and correctly. In both cases the intermediate state is worse than what you started with.
Anyway, it's fun as a thinking exercise, but I wouldn't live by it.
I think the point of that oath is not that you can't take out a heart but rather the intent of taking out that heart should be to introduce a new, healthier one.
The oath doesnt say "dont do any harm at all" it says "abstain from all intentional wrong-doing and harm, especially from abusing the bodies of man or woman" - causing pain in attempts to fix the body has very much been in the realm of medicine since the oath was first coined.
The modern Hippocratic Oath says that. The original one Hippocrates promulgated and the ones taken by European physicians followed for centuries afterwards explicitly prohibited things like surgery.
"I will not use the knife, not even, verily, on sufferers from stone"
Pre-antibiotics and pre-clinical trials that wasn't as unreasonable a position as it would be now. Of course some European medical workers did perform surgeries, just lower class ones who didn't take an oath.
It seems to me that referencing Code Complete's exhortation to fix the underlying cause of a problem actually supports refactoring. In my experience, the most common cause of bugs is code that was either poorly designed, doesn't follow principles such as immutability and functional purity, or where time wasn't taken to make it simple. In these situations, refactoring is how you fix the root problem.
The only thing such an oath would do if taken seriously is create a sharp line between blackhat and whitehat software developers, where as of now I’d say most of the industry is gray and unjudged.
Personally I would never swear to such a ridiculous contract.
I don't think this is a discussion for developers. Every human being should "do no harm". The thing is, you get no money by looking out for others. It's hard to see the (short-term) benefits. And I think because of that there are a lot of people acting very egocentric and not for the greater good.
> The thing is, you get no money by looking out for others. It's hard to see the (short-term) benefits.
This is the main problem of us. We perceive money and short-term goals (self) over of anything else. To fix the lack of personal responsibility in broader part of ecosystem is crucial.
Therefore, sort of Hippocratic Oath for software and hardware developers/managers and education to behave in moral constraints is important. We are playing bigger role in shaping how future on Earth(and other planets) will looks like. So it will be beneficial and important to signup for ethical codex.
I am surprised that we are not already doing it - globally. How come? How is that possible?
You said why already in the second sentence of the first paragraph - there is nothing to be gained from it and the codexes wouldn't be binding and the last thing we need is to give liars more tools to feign trustworthiness.
Why we have such things as Bar Association for lawyers?
Statements are important - at least you have to fight with your inner feeling that "you lied" to all when it actual status quo its just "matter of perspective" bending morals
The nearest thing that comes to my mind are the hacker ethics from the CCC https://www.ccc.de/en/hackerethics
Of course it doesn't really cover the points from the article but think it's sort of related.
I think the article really clashes with our everyday life. If there are devs for instance which think they have a shitty paid job and are bombarded with projects and tasks, I don't blame them for doing low quality work. Because there are companies that exactly want that. Because it's cheaper.
And remember kids, cheaper is aaaalways better! ...
> Every human being should "do no harm". The thing is, you get no money by looking out for others. (...) I don't know how to fix this though.
Ensuring that people are rewarded for contributing to the social good and penalized for harming it would be a good start. While I am hesitant to suggest that money is the solution, paying enough for a modest standard of living would be nice. For those who are typically paid enough, such as teachers and nurses, ensuring that they are not exploited for their compassion would be a good start.
For those who have ambitions for wealth and status, rewarding meaningful contributions and penalizing harmful ones would be a start. Look at the early days of computers and communications technologies. People got rich and empires were built, yet positive contributions to society were made. The later stages of any given industry, which IT is likely in today, seems to be dominated by the consolidation of wealth and power. That does more to steal away from society than anything else.
As for the ones stuck in the middle, the ones who simply want to "do no harm", compensate them properly and give them the authority to act when they see harm. Adjust the tax system so that it encourages wealth to trickle down rather than up. Protect labor in meaningful ways when they speak out about injustices or incentives to do wrong.
Yes, none of these suggestions are concrete. Some of them may not even work. Yet there are plenty of approaches that should be considered before resigning to hopelessness.
>The thing is, you get no money by looking out for others.
And our definitions of harm can greatly differ, to the point where two groups honestly believe the other group is doing harm. While some of these cases can be resolved with more knowledge, some of them depend upon ethical guidelines that are entirely subjective.
This article seems focused on doing no harm "to code". To a degree, it's ridiculous. I feel like the bigger problem is how when I look at job postings for software developers they seem to be postings of jobs which contribute negatively to the welfare of the society. Google, Facebook and the like being so widely sought after by software developers just to wash our brains with ads and track us, millions of financial companies/banks working hard to drive the economy down for the benefit of stakeholders. Finding a company which doesn't have a net negative impact is hard, finding one that has a positive one is even harder. It's not like that just for software developers, sure, but it's still clear that it's a serious problem for us.
And this part:
> Loss of control, loss of intellectual property, unsatisfactory performance, hidden costs, and hard-to-obtain legal remedies are the harm that can occur when things go wrong when projects are outsourced.
Yes, it would be a real tragedy if intellectual property (sic!) was violated. Also, suggesting that someone from outside the US is more likely to give you unsatisfactory performance is simply racist.
Yeah the very concept is a blind and kind of dumb argument by analogy that ignores the obvious - especially in software engineering - that code isn't people. Not to mention oaths especially arbitrary ones have come and gone. The whole article is like this - clearly arguing by analogy about things he doesn't understand. The fact he views IDEs as a risk /from lack of knowledge/ just shows the sheer depths of his ignorance given its role is to make it more accessible.
At this point I have grown weary of every article proposing some sort of professionalization. At this point I want to shout to everyone writing them "Stop trying to professionalize code to your gatekeeping standards already!".
From the number of failed outsourcing attempts I suspect unsatisfactory performance is true though for reasons not on them - organizational, communication and cultural barriers rather than lesser merit. The threats there aren't even on the software engineers but the management making the decisions! The only thing they could do to "stop" that is to work for free which was unreasonable to expect from even priests and would remain utterly stupid blame shifting.
No, more the kind of people who think there should be a "coding license", guilds, or similar. There may be a place for certifications individually but universality is folly. I meant professionalization in the sense of trying to erect barricades.
As for code quality it is depends upon the domain, scale, and situation. Some things are objectively bad but even bad may be complex. Hard tested COBOL legacy code that was old when the current veterans started may be hard to comprehend, close to immutable but utterly reliable for instance.
That's not it. There are such characteristics (I suppose you could debate the "agreed upon" part) and professionalization is actively counterproductive to them.
Facility at a reasonable development process, is a useful thing to measure. E.g. if I could sort resumes by who has experience with GitFlow and who doesn't, that'd be a help, not a hindrance.
Not so sure. There are lots of source disciplines. Learning one makes the next one not so obvious. And you can tell me with a straight face, you know right now how to revert a change from a deleted development branch that was merged through a feature branch to master, from both master and the feature branch, after two other features were merged as well with conflicts?
> Also, suggesting that someone from outside the US is more likely to give you unsatisfactory performance is simply racist.
The article's position is more nuanced than that.
It starts with the premise that good (whatever that means) programmers are expensive.
It proceeds to observation that companies would outsource to cut costs. It also makes another observation that Indian and post-Soviet programmers are cheap.
This observation conflicts with their premise: "good" programmers are expensive; therefore cheap programmers are likely not "good".
Whether this has any bearing on reality can perhaps be tested probabilistically, by examining whether there exists a negative correlation between the amount of money asked for a project and the "unsatisfactory performance" — if one can define what that means). If such a correlation exists, it will make this statement not a statement of personal attitude ("racism"), but a statement of likelihood.
All other things being equal with 2 programmers who have perfect knowledge of their market worth, the better one will cost more. But this premise is proved false trivially.
1. People don't have a good sense of their market worth. It's possible to convince/coerce someone to work for less than they're worth ("think of the exposure!", "we'll be big in 5 years") while other people have an inflated sense of their own worth.
2. All other things _aren't_ equal. Indian programmers cost less because of Purchasing Power Parity and relative wealth. For a person who's monthly expenses are $400-500, getting a salary of $3k a month is a sweet deal. Plus A salary of $3k per month would put you comfortably in the top 0.5% of Indian society, able to afford most luxuries.
A lot of racist statements can be hidden in an obscure arrangement of facts, observations and generalization. In this case, the statement that cheap programmers are less likely to deliver good results isn't inherently problematic. What is problematic is the following sentence:
> Now, competitors in India, the former Soviet bloc, and elsewhere can just as easily use the same tools and techniques at lower cost.
The author implicitly generalizes that all Indian and post-Soviet programmers are cheap and all cheap programmers are Indian/post-Soviet.
> The author implicitly generalizes that all Indian and post-Soviet programmers are cheap and all cheap programmers are Indian/post-Soviet.
Respectfully, the generalization that includes the word ALL happens in the mind of the reader. The authors CANNOT have meant that all cheap programmers are Indian/post-Soviet. Indeed, in the previous paragraph the author talks about "barely-out-of-high-school whiz kids", whom he also doesn't hold in high esteem; and those kids are likely imagined as American.
The claim that the original text makes is probabilistic. It may even turn out to be true (as in, it is not unimaginable that it's more likely than not to get bad programmers on the project when outsourcing to cheap companies in e.g. India or post-Soviet countries).
I'm still not convinced that that sentence wasn't meant to imply this generalization. (Whether the author has deliberately written the sentence like that or subconsciously, I can't say.)
Besides that, bringing in nationalities was completely useless. The author had already established that low cost contractors yield bad results, so why tie that to nationalities needlessly? It adds nothing to the text except for a slightly racist undertone and a bash on engineers of these nationalities.
I haven't yet read this 2004 article, but, FWIW, there was significant US software industry worker fear of programming jobs being outsourced overseas, starting at least just before dotcoms. The dotcom funding boom and disruption seems like it might've been a relief of that. A noteworthy 1992 book on the topic: https://en.wikipedia.org/wiki/Decline_and_Fall_of_the_Americ...
It's not particularly important if the OP was being racist (I don't think they meant to be), the racism is the stigma that outsourcing to India results in unsatisfactory performance.
That is a racist sentiment, leading to a racist system which is self-reinforcing. It means fantastic devs have to deal with low pay or leave their families and homeland to get paid their worth, it means mediocre devs who were lucky enough to be born in Palo Alto have a much easier ride.
There was a time when people wouldn't give women important jobs because the mainstream view was that they would perform unsatisfactory performance. Now I think we can all say that's sexist nonsense. I think this idea is in a similar vein.
Yeah. Glyph Lefkowitz had a good post in 2005 arguing that programmers shouldn't work on programs that harm users: https://glyf.livejournal.com/46589.html That's a better analog to the Hippocratic oath, and has become even more relevant with time.
While I agree with you, I believe the Hippocratic oath is a way to individualise responsibility that becomes ineffective when the individuals taking it are participating in complex structures. Doctors take the Hippocratic Oath and yet we see again and again how the medical system is failing us in its intended purpose (it was even just up on HN[0]) -- the profit motive inevitably takes precedence over the principles of the Oath and you have e.g. hospitals handing out C-sections to anyone they can to increase the throughput and price tag of treatment, while ignoring the negative impact of this policy on patient health.
I think it would be great if people working in software developed a set of principles to adhere to while practicing the trade, but I believe it should be done in a way that is decoupled from the market forces of the capitalist economy. Something like a union would be a good approach.
>This article seems focused on doing no harm "to code". To a degree, it's ridiculous. I feel like the bigger problem is how when I look at job postings for software developers they seem to be postings of jobs which contribute negatively to the welfare of the society.
I"m surprised you're getting so few responses with regard to this point.
Recently, I've changed up my heuristics for job seeking in light of a realization that many businesses out there aren't seeking to solve problems first and foremost; rather they are using technology to monetize solutions to previously solved problems that were not effectively monetizeable.
Creating middle-men seems to be the tech industry's favorite goal now. For the longest time, I found myself getting torn up by my conscience over what I was helping to build until I finally accepted what I was doing was no longer consistent with my moral compass.
Do no harm. Don't build things that can trivially facilitate violations of human rights. Don't build mass surveillance systems. Don't contribute to projects utilizing UX "dark patterns". Don't build things that intentionally target certain demographics for more effective financial extraction. Don't build that which is being sold as a solution to something it isn't, and for the love of little green apples, spare a second-thought when something comes to you that another person refused to code/accept.
Outsourced work is generally pretty crappy - maintaining legacy code, writing dull line-of-business apps, etc. There are two kinds of people who do this kind of work. The original, in-house programmers who are well paid to compensate for the crapness of the work. Or outsourced programmers who can’t get any other sort of work so will do it cheaply.
There are plenty of good programmers of Indian ethnicity. But regardless of ethnicity, noone who is any good works in outsourcing.
A large majority of all software could be called "dull line-of-business apps" and statistically this is what most software developers do. These jobs are stable, safe, and pay a good salary. It's awfully elitist to frame this as a bad job.
I’m not intending to be elitist here, as I say those jobs are well paid when in-house. But if management is looking to cut costs and no other considerations, then they will go for the cheapest option. Again, this is nothing to do with anyone’s ethnicity.
These jobs aren't well paid, because they're usually nothing but a cost to the business. Well paid software is usually where the software is the product, or directly enables income, so is seen as an investment not just a necessary cost.
There is a difference between working as part of a non-software company's IT department, and working for a company that makes "dull line-of-business apps".
Google maintains a large array of line-of-business apps. You probably have one open in another tab right now. Email, calendar, others. In these cases, the software (or software as a service) is the product, it's just not a direct-to-consumer product.
The jobs I'm talking about are the median software development job. According to Payscale, these developers make about $70k in the United States. This is over twice the median individual income, so yes they are well paid.
Too often on HN we focus on and glamourize the flashy Silicon Valley jobs and we think this is what our industry looks like. It doesn't. The Google, Facebook, and Amazon of the world are the 95th-99th percentile jobs, the very top of our industry in terms of salary and prestige. They do not represent the typical software developer.
I learned early on that there are two roles that the software development team can play in a company: a cost center, or a profit center. Company life is far better when your department is a profit center.
I'm currently working with a client that needed more capacity than I could offer, so they hired an offshore team to take on some contracting work. The offshore team has been professional, knowledgeable, and able to produce high-quality, well-tested, well-commented code.
The difference is that they're several times more expensive than the "bottom of the barrel" cheapest coders you can find in their country, while still being a bargain by US standards. Meanwhile I've worked with lowest-bid, US-based contractors in the past, and their work has been reliably bad.
So I'd put forward that the tendency to "cheap out" is the culprit behind poor quality, rather than outsourcing. Practically, the two often go hand-in-hand since the cheapest developers are often abroad, but the two needn't be conflated, and recognizing the nuance opens up the door to working with a high-quality, international pool of talent.
This article seems focused on doing no harm "to code". To a degree, it's ridiculous.
The point is to do no harm to your fellow employees. It's already obvious that a sign directing cars to drive off a pier isn't morally ok. Comments, names, and code structures which mislead and misdirect are also wrong.
If someone discovered a finely crafted historical artifact, and not understanding its beauty and significance, proceeded to cut it apart for scrap, many people would think that "a damn shame" and some would even think that morally wrong.
Also, suggesting that someone from outside the US is more likely to give you unsatisfactory performance is simply racist.
If the cause is held to be race, then it is racist, trivially speaking. However, the underlying (first principles) causation is driven by incentives. For example, I've worked in places where the outgoing FTP ports were wide open, and where I knew that someone, somewhere would pay hundreds of thousands of dollars, if not millions, for exfiltrated data. No way in hell would I or my coworkers ever have done that, because we knew that large corporations and governments would be likely to figure out what happened, and would be after us for years or decades until we were dead or caught. The above incentive structure changes a lot, if you know that a sovereign government is willing to give you cover.
At a less extreme level, outsourcing companies are often staffed by novices who are just looking to get promoted or change to a higher paying job somewhere else. The incentives are still misaligned.
> The point is to do no harm to your fellow employees. It's already obvious that a sign directing cars to drive off a pier isn't morally ok. Comments, names, and code structures which mislead and misdirect are also wrong.
The primary purpose of the code we write is/should be to serve a function. Being legible to others is a secondary aspect. If the function the code is supposed to fulfill is immoral, then I would really prefer it to (a) not work properly, (b) be misleading, (c) have crappy documentation, (d) build only during a full moon when you hold a beer bottle in a horizontal position above your monitor while standing on one leg.
Oh, I don't see anything inherently wrong in sabotage.
And remember that it's an article about a hypothetical hippocratic oath for software developers we are talking about. Imagine if the oath doctors took was about being nice to other doctors and not obligations to the patients.
And whistleblowing will get you nowhere when everybody knows everything, it's just the way our economy is built that makes these "evil companies" flourish. It's worth remembering that you have a (limited) choice when looking for a job. I for one would be very happy writing software for the operation of trains or something similar. This is quite useful. Going to work for a company selling financial services I pretty much have a guarantee of harming people or not contributing to anything in any way at best.
Oh, I don't see anything inherently wrong in sabotage.
Isn't that cheating? Isn't that betraying trust?
Going to work for a company selling financial services I pretty much have a guarantee of harming people or not contributing to anything in any way at best.
I think one should distrust these sorts of absolute condemnations of entire industries. Can you substantiate what you just wrote? Can you provide ironclad proof that all financial services companies are "evil?"
In my opinion, the notion that, "Evil is okay to perform, so long as it's against those I don't like," is a sign that someone, somewhere doesn't understand principles and the concept of "evil."
> Isn't that cheating? Isn't that betraying trust?
Of course.
> I think one should distrust these sorts of absolute condemnations of entire industries. Can you substantiate what you just wrote? Can you provide ironclad proof that all financial services companies are "evil?"
It suffices to say that it is in the best interest of these companies to fool the people when they operate under current economic system. 2008 is one such example. Goldman Sachs owners getting rich, just the customers getting screwed is an extreme-case example. "Proof"? "All financial services"? Now you sound as if you expected me to produce a mathematical proof. I'm just talking about what the reasonable expectations are when considering different job offers. In today's startup-fueled climate I can phrase this way: a startup finds a solution to a problem noone knew they had, it spends time marketing it, ... Oh, back to the beginning: startup announces that it found a solution to a problem. Now they don't actually have any working code. They struggle to make a PoC for months, after that another PoC, ... Nothing actually does anything, just suffices to produce the illusion that something is being done and that something will eventually do something. All this just to keep the ball of fundraising rolling. The investors know it's all bullshit, but it's all not about getting a product in the end. It's about speculating what the next big thing will be. But it's all unimportant. Just keep the appearances and keep the money flowing. But don't fool yourself that any regular guy will benefit from what you're doing. For me it's depressing. But there are a lot of software developers who are just fine with it for the sake of a high salary.
> In my opinion, the notion that, "Evil is okay to perform, so long as it's against those I don't like," is a sign that someone, somewhere doesn't understand principles and the concept of "evil."
Classifying things unambiguously into "good" and "evil" may be unproductive. It's all a matter of context. I'd say that when your superior/boss requests you to harm others, you don't owe them obedience. Disobedience, cheating etc. aren't inherently "evil".
"Proof"? "All financial services"? Now you sound as if you expected me to produce a mathematical proof.
At least produce something that attempts to sound like a cogent theory, like the Marxists. (Though Karl Marx explicitly invents his own form of "logic" to do so.) Seems like you just don't like certain kinds of people, based on your prejudices about certain industries.
I'd say that when your superior/boss requests you to harm others, you don't owe them obedience.
I'd say that when some "activist" requests you to harm others, they aren't on the side of justice.
Disobedience, cheating etc. aren't inherently "evil".
Against someone who isn't intentionally doing you harm? That sounds pretty evil to me. Of course, the world's very worst evils consist of convincing one's own side the other is "evil" by redefining what that means, thereby justifying the other's harm.
> At least produce something that attempts to sound like a cogent theory, like the Marxists. (Though Karl Marx explicitly invents his own form of "logic" to do so.) Seems like you just don't like certain kinds of people, based on your prejudices about certain industries.
More like based on my own first-hand experience with these people.
> I'd say that when some "activist" requests you to harm others, they aren't on the side of justice.
The question is: is it better to manipulate regular people/harm them in other ways or stop giving your best to make working with your code a pleasure.
> Against someone who isn't intentionally doing you harm? That sounds pretty evil to me. Of course, the world's very worst evils consist of convincing one's own side the other is "evil" by redefining what that means, thereby justifying the other's harm.
Now you are labeling disobedience as evil, regardless of what this disobedience is in response to? Do you think that your employer has the right to ask you to do just about anything without any regard for the consequences of your actions?
I feel like we are pointlessly going in circles here. To be honest, I think that a much better choice is just resigning from the job (which I did recently) when you are uncomfortable with it. All these other things are secondary.
> Seems like you just don't like certain kinds of people, based on your prejudices about certain industries.
More like based on my own first-hand experience with these people.
This is a verbal pattern used by bigots throughout history, including those who have bashed me personally on the basis of race and sexuality. What's your p-value based on your sample size?
Now you are labeling disobedience as evil, regardless of what this disobedience is in response to?
The ends don't justify the means. You seem to be pushing a notion, that sufficient evil justifies evil in turn.
I feel like we are pointlessly going in circles here.
No. I think 3rd party readers will learn something.
To be honest, I think that a much better choice is just resigning from the job
> This is a verbal pattern used by bigots throughout history, including those who have bashed me personally on the basis of race and sexuality. What's your p-value based on your sample size?
I haven't evaluated it scientifically. My description of the lifecycle of a startup is a result of my observations made working at such a startup. These observations are consistent with what I read around on the web.
> The ends don't justify the means. You seem to be pushing a notion, that sufficient evil justifies evil in turn.
No. I don't see disobedience as an evil that needs to be justified to be committed. I think that evaluating when things are evil has to be postponed until after evaluating the context. Without the context applying the word "evil" is nonsensical. In a particular case its context may imply that obedience will lead to your boss making more money and making it faster at the cost of harming regular people. Disobedience in form of e.g. suboptimal performance at work may delay the product, make your boss angry, your colleagues slightly irritated with your code (but still I bet there is nothing you can write in a short time which will frustrate them more than a decade-old legacy code everybody is scared to touch) with the benefit of lowering the cost to regular people. No I understand a boss would be very pleased with their employees fulfilling their every wish, but it doesn't make it the right thing to do. You may also not be in a position to risk your job. And perhaps the benefit to society gained by sabotage is abysmal and doesn't justify its cost. But it's all in the context. I would be very suspicious of any ethics system which said you should be obedient at all times, or even encouraged you to be obedient by default. Humans should have their conscience.
> Also, suggesting that someone from outside the US is more likely to give you unsatisfactory performance is simply racist.
It's either true, or it's false. Now, the motives behind saying or believing such a statement may be racist, but telling people who believe it that they are racist isn't going to change their minds.
I'm surprised by the mental gymnastics other commenters in this thread are displaying in order to avoid contemplating how tech can and should be held responsible for its own actions.
All the more reason to push for some form of professional ethics!
I think those mental gymnastics are the result of cognitive dissonance. There's discomfort resulting from the idea that some action could be unethical in a non-obvious way to someone intelligent enough to be in the tech industry (this is sheer hubris and ignorance of course), or that intelligence does not lead to ethical behavior; or the idea that ethics could or should limit either innovation or income; or the idea that externalities are unacceptable exploitation, i.e. it really is someone else's problem. And like any ordinary person, people are resolving the discomfort with dismissal.
The history of the hippocratic oath shows that despite its age, it didn't really become popular in medicine until 1000 years after it was written. Seems reasonably likely there was quite a lot of mental gymnastics in the medical profession, arguing against an oath.
I don't find it surprising. A lot of what makes up the gold rush or Silicon Valley is based on implementing dark patterns and foisting things upon the user that don't actually help them. Being able to work on things that addict and deceive the masses gives a sense of power to a lot of people, and it promises a fair sum of money. I personally refuse to work for companies that use software for nefarious purposes, even if everything they're doing is legal.
No, it's because large parts of the hippocratic oath are outdated and involve refusal to teach medicine to those not in the fraternity, and refusing abortions.
In the UK, this has been replaced by Duties of a Doctor, which is much more progressive.
I suspect the controversial part of the oath is the following:
'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.'
Like I said, not killing people is so behind the times :D
Of course, perhaps there is a bit of concern people may have when the person holding their life in their hands no longer takes an oath to preserve it, but what did the ancients know?
I think something of the like is definitely needed for software in critical domains.
Structural Engineers have to be chartered, right?
Software engineers in certain domains should probably be chartered under the exact same conditions.
But how would you define who should, and who shouldn't be chartered?
The first company I worked for was a high integrity systems/software firm. Getting your Chartered Engineer (CEng) status was seen as part of your professional development for most of the engineers.
It isn't required however. Most of the focus was put on the process being followed (DO178B, IEC 61508, or their equivalents which I've now forgotton) rather than the compentence of specific individuals. It's more of an organisational view of competance rather than focusing on individuals.
How's the Hippocratic Oath working out for doctors? One of the most unhealthy things that can happen to me is to be bankrupted, and that seems to be their goal. The last two times I've actually gone to the doctor for an ailment, it's been misdiagnosed, given irrelevant/expensive/harmful treatment, and eventually just went away on its own.
I've stopped thinking of doctors as friends, and instead as salespeople preying on people in their most vulnerable state. That oath is just another ruse in the sales process.
> I've stopped thinking of doctors as friends, and instead as salespeople preying on people in their most vulnerable state. That oath is just another ruse in the sales process.
Same, I basically consider a doctor an adversary until they give me reason to believe otherwise. Probably some of the ones who pass that filter are adversaries, still, and are making me pay for crap I shouldn't need to or directing me to providers who are more expensive to get kickbacks or whatever, they're just better at hiding it.
They are, as a profession, failing hard at upholding their oath. The insurance industry may be a uniquely useless part of providing medical care, but they do not deserve all the blame for the massive harm that's being done. Hospitals and doctors are a huge part of it, too.
[EDIT] I guess I think of them like mechanics now, actually, in that I figure any time I follow their advice and it causes me to give them money there's about an even chance I'm their mark, not their customer/patient.
"First, do no harm" wasn't included in the original oath. Whereas, "give no deadly medicine to any one if asked" is.
I think it's reasonable as a metaphor, but possibly not as an actual guide. Every profession could use an ethical code and statement made by each practitioner, not least of which is an explicit anti-fraud statement. Boy wouldn't that give a lot of people in marketing some difficulty?
I think the reason developers in particular need to be cognizant of this (as opposed to "everyone doing no harm") is because of labor power.
There's a societal expectation that everyone provide for their family. If you're doing so through evil means (selling drugs, joining the mafia, sweeping floors as part of a genocidal political movement...) then you're in the moral wrong. But if you're sweeping floors for Goldman Sachs, no one could reasonably blame you for causing the financial crisis. Your contribution to an organization that falls somewhere juuuuust south of neutral is morally justifiable because you've gotta pay the bills.
But if you're the kind of developer we're talking about here, your ability to provide for your family is largely taken care of. Your decision to support an organization is no longer rooted in this socially-acceptable "gotta pay the bills" mentality, and instead about providing luxuries. That's also fine, but you now have to reckon with the fact that your contributions aren't in pursuit of helping pay the bills, and internally grapple with the morality of sending your kids to private school vs using your specialized, valuable skills to help modernize your neighborhood community center's tech stack (but at a much lower salary).
All people need to grapple with the tension between individual/family-level selfishness and societal well-being. But the relieved, privileged life that higher salaries afford also comes with an added moral obligation to evaluate how we spend our time.
Something something spiderman great power great responsibilities.
71 comments
[ 6.2 ms ] story [ 113 ms ] threadAnyway, it's fun as a thinking exercise, but I wouldn't live by it.
"I will not use the knife, not even, verily, on sufferers from stone"
Pre-antibiotics and pre-clinical trials that wasn't as unreasonable a position as it would be now. Of course some European medical workers did perform surgeries, just lower class ones who didn't take an oath.
Personally I would never swear to such a ridiculous contract.
I don't know how to fix this though.
This is the main problem of us. We perceive money and short-term goals (self) over of anything else. To fix the lack of personal responsibility in broader part of ecosystem is crucial.
Therefore, sort of Hippocratic Oath for software and hardware developers/managers and education to behave in moral constraints is important. We are playing bigger role in shaping how future on Earth(and other planets) will looks like. So it will be beneficial and important to signup for ethical codex.
I am surprised that we are not already doing it - globally. How come? How is that possible?
Why we have such things as Bar Association for lawyers?
Statements are important - at least you have to fight with your inner feeling that "you lied" to all when it actual status quo its just "matter of perspective" bending morals
I think the article really clashes with our everyday life. If there are devs for instance which think they have a shitty paid job and are bombarded with projects and tasks, I don't blame them for doing low quality work. Because there are companies that exactly want that. Because it's cheaper.
And remember kids, cheaper is aaaalways better! ...
Ensuring that people are rewarded for contributing to the social good and penalized for harming it would be a good start. While I am hesitant to suggest that money is the solution, paying enough for a modest standard of living would be nice. For those who are typically paid enough, such as teachers and nurses, ensuring that they are not exploited for their compassion would be a good start.
For those who have ambitions for wealth and status, rewarding meaningful contributions and penalizing harmful ones would be a start. Look at the early days of computers and communications technologies. People got rich and empires were built, yet positive contributions to society were made. The later stages of any given industry, which IT is likely in today, seems to be dominated by the consolidation of wealth and power. That does more to steal away from society than anything else.
As for the ones stuck in the middle, the ones who simply want to "do no harm", compensate them properly and give them the authority to act when they see harm. Adjust the tax system so that it encourages wealth to trickle down rather than up. Protect labor in meaningful ways when they speak out about injustices or incentives to do wrong.
Yes, none of these suggestions are concrete. Some of them may not even work. Yet there are plenty of approaches that should be considered before resigning to hopelessness.
And our definitions of harm can greatly differ, to the point where two groups honestly believe the other group is doing harm. While some of these cases can be resolved with more knowledge, some of them depend upon ethical guidelines that are entirely subjective.
And this part:
> Loss of control, loss of intellectual property, unsatisfactory performance, hidden costs, and hard-to-obtain legal remedies are the harm that can occur when things go wrong when projects are outsourced.
Yes, it would be a real tragedy if intellectual property (sic!) was violated. Also, suggesting that someone from outside the US is more likely to give you unsatisfactory performance is simply racist.
Many of the clients I've had have had bad experiences outsourcing to local development agencies that didn't practice any offshoring.
See Hertz vs Accenture [^1](maybe Accenture offshores, but they wouldn't have had to in order to do such a bad job)
[1] https://www.theregister.co.uk/2019/04/23/hertz_accenture_law...
At this point I have grown weary of every article proposing some sort of professionalization. At this point I want to shout to everyone writing them "Stop trying to professionalize code to your gatekeeping standards already!".
From the number of failed outsourcing attempts I suspect unsatisfactory performance is true though for reasons not on them - organizational, communication and cultural barriers rather than lesser merit. The threats there aren't even on the software engineers but the management making the decisions! The only thing they could do to "stop" that is to work for free which was unreasonable to expect from even priests and would remain utterly stupid blame shifting.
Are you saying that there are no agreed upon characteristics of code (apart from being able to run) that together comprise the notion of code quality?
As for code quality it is depends upon the domain, scale, and situation. Some things are objectively bad but even bad may be complex. Hard tested COBOL legacy code that was old when the current veterans started may be hard to comprehend, close to immutable but utterly reliable for instance.
The article's position is more nuanced than that.
It starts with the premise that good (whatever that means) programmers are expensive.
It proceeds to observation that companies would outsource to cut costs. It also makes another observation that Indian and post-Soviet programmers are cheap.
This observation conflicts with their premise: "good" programmers are expensive; therefore cheap programmers are likely not "good".
Whether this has any bearing on reality can perhaps be tested probabilistically, by examining whether there exists a negative correlation between the amount of money asked for a project and the "unsatisfactory performance" — if one can define what that means). If such a correlation exists, it will make this statement not a statement of personal attitude ("racism"), but a statement of likelihood.
1. People don't have a good sense of their market worth. It's possible to convince/coerce someone to work for less than they're worth ("think of the exposure!", "we'll be big in 5 years") while other people have an inflated sense of their own worth.
2. All other things _aren't_ equal. Indian programmers cost less because of Purchasing Power Parity and relative wealth. For a person who's monthly expenses are $400-500, getting a salary of $3k a month is a sweet deal. Plus A salary of $3k per month would put you comfortably in the top 0.5% of Indian society, able to afford most luxuries.
> Now, competitors in India, the former Soviet bloc, and elsewhere can just as easily use the same tools and techniques at lower cost.
The author implicitly generalizes that all Indian and post-Soviet programmers are cheap and all cheap programmers are Indian/post-Soviet.
Respectfully, the generalization that includes the word ALL happens in the mind of the reader. The authors CANNOT have meant that all cheap programmers are Indian/post-Soviet. Indeed, in the previous paragraph the author talks about "barely-out-of-high-school whiz kids", whom he also doesn't hold in high esteem; and those kids are likely imagined as American.
The claim that the original text makes is probabilistic. It may even turn out to be true (as in, it is not unimaginable that it's more likely than not to get bad programmers on the project when outsourcing to cheap companies in e.g. India or post-Soviet countries).
Besides that, bringing in nationalities was completely useless. The author had already established that low cost contractors yield bad results, so why tie that to nationalities needlessly? It adds nothing to the text except for a slightly racist undertone and a bash on engineers of these nationalities.
That is a racist sentiment, leading to a racist system which is self-reinforcing. It means fantastic devs have to deal with low pay or leave their families and homeland to get paid their worth, it means mediocre devs who were lucky enough to be born in Palo Alto have a much easier ride.
There was a time when people wouldn't give women important jobs because the mainstream view was that they would perform unsatisfactory performance. Now I think we can all say that's sexist nonsense. I think this idea is in a similar vein.
I think it would be great if people working in software developed a set of principles to adhere to while practicing the trade, but I believe it should be done in a way that is decoupled from the market forces of the capitalist economy. Something like a union would be a good approach.
[0] https://news.ycombinator.com/item?id=20626500
I"m surprised you're getting so few responses with regard to this point.
Recently, I've changed up my heuristics for job seeking in light of a realization that many businesses out there aren't seeking to solve problems first and foremost; rather they are using technology to monetize solutions to previously solved problems that were not effectively monetizeable.
Creating middle-men seems to be the tech industry's favorite goal now. For the longest time, I found myself getting torn up by my conscience over what I was helping to build until I finally accepted what I was doing was no longer consistent with my moral compass.
Do no harm. Don't build things that can trivially facilitate violations of human rights. Don't build mass surveillance systems. Don't contribute to projects utilizing UX "dark patterns". Don't build things that intentionally target certain demographics for more effective financial extraction. Don't build that which is being sold as a solution to something it isn't, and for the love of little green apples, spare a second-thought when something comes to you that another person refused to code/accept.
There are plenty of good programmers of Indian ethnicity. But regardless of ethnicity, noone who is any good works in outsourcing.
Google maintains a large array of line-of-business apps. You probably have one open in another tab right now. Email, calendar, others. In these cases, the software (or software as a service) is the product, it's just not a direct-to-consumer product.
https://www.payscale.com/research/US/Job=Software_Developer/... https://fred.stlouisfed.org/series/MEPAINUSA672N
Too often on HN we focus on and glamourize the flashy Silicon Valley jobs and we think this is what our industry looks like. It doesn't. The Google, Facebook, and Amazon of the world are the 95th-99th percentile jobs, the very top of our industry in terms of salary and prestige. They do not represent the typical software developer.
The difference is that they're several times more expensive than the "bottom of the barrel" cheapest coders you can find in their country, while still being a bargain by US standards. Meanwhile I've worked with lowest-bid, US-based contractors in the past, and their work has been reliably bad.
So I'd put forward that the tendency to "cheap out" is the culprit behind poor quality, rather than outsourcing. Practically, the two often go hand-in-hand since the cheapest developers are often abroad, but the two needn't be conflated, and recognizing the nuance opens up the door to working with a high-quality, international pool of talent.
The point is to do no harm to your fellow employees. It's already obvious that a sign directing cars to drive off a pier isn't morally ok. Comments, names, and code structures which mislead and misdirect are also wrong.
If someone discovered a finely crafted historical artifact, and not understanding its beauty and significance, proceeded to cut it apart for scrap, many people would think that "a damn shame" and some would even think that morally wrong.
Also, suggesting that someone from outside the US is more likely to give you unsatisfactory performance is simply racist.
If the cause is held to be race, then it is racist, trivially speaking. However, the underlying (first principles) causation is driven by incentives. For example, I've worked in places where the outgoing FTP ports were wide open, and where I knew that someone, somewhere would pay hundreds of thousands of dollars, if not millions, for exfiltrated data. No way in hell would I or my coworkers ever have done that, because we knew that large corporations and governments would be likely to figure out what happened, and would be after us for years or decades until we were dead or caught. The above incentive structure changes a lot, if you know that a sovereign government is willing to give you cover.
At a less extreme level, outsourcing companies are often staffed by novices who are just looking to get promoted or change to a higher paying job somewhere else. The incentives are still misaligned.
The primary purpose of the code we write is/should be to serve a function. Being legible to others is a secondary aspect. If the function the code is supposed to fulfill is immoral, then I would really prefer it to (a) not work properly, (b) be misleading, (c) have crappy documentation, (d) build only during a full moon when you hold a beer bottle in a horizontal position above your monitor while standing on one leg.
In terms of cost/benefit, the cost of the programmer time in debugging far outweighs the cost of executing the code.
If the function the code is supposed to fulfill is immoral
Two wrongs don't make a right. Whistleblowing is to be preferred to sabotage.
And remember that it's an article about a hypothetical hippocratic oath for software developers we are talking about. Imagine if the oath doctors took was about being nice to other doctors and not obligations to the patients.
And whistleblowing will get you nowhere when everybody knows everything, it's just the way our economy is built that makes these "evil companies" flourish. It's worth remembering that you have a (limited) choice when looking for a job. I for one would be very happy writing software for the operation of trains or something similar. This is quite useful. Going to work for a company selling financial services I pretty much have a guarantee of harming people or not contributing to anything in any way at best.
Isn't that cheating? Isn't that betraying trust?
Going to work for a company selling financial services I pretty much have a guarantee of harming people or not contributing to anything in any way at best.
I think one should distrust these sorts of absolute condemnations of entire industries. Can you substantiate what you just wrote? Can you provide ironclad proof that all financial services companies are "evil?"
In my opinion, the notion that, "Evil is okay to perform, so long as it's against those I don't like," is a sign that someone, somewhere doesn't understand principles and the concept of "evil."
Of course.
> I think one should distrust these sorts of absolute condemnations of entire industries. Can you substantiate what you just wrote? Can you provide ironclad proof that all financial services companies are "evil?"
It suffices to say that it is in the best interest of these companies to fool the people when they operate under current economic system. 2008 is one such example. Goldman Sachs owners getting rich, just the customers getting screwed is an extreme-case example. "Proof"? "All financial services"? Now you sound as if you expected me to produce a mathematical proof. I'm just talking about what the reasonable expectations are when considering different job offers. In today's startup-fueled climate I can phrase this way: a startup finds a solution to a problem noone knew they had, it spends time marketing it, ... Oh, back to the beginning: startup announces that it found a solution to a problem. Now they don't actually have any working code. They struggle to make a PoC for months, after that another PoC, ... Nothing actually does anything, just suffices to produce the illusion that something is being done and that something will eventually do something. All this just to keep the ball of fundraising rolling. The investors know it's all bullshit, but it's all not about getting a product in the end. It's about speculating what the next big thing will be. But it's all unimportant. Just keep the appearances and keep the money flowing. But don't fool yourself that any regular guy will benefit from what you're doing. For me it's depressing. But there are a lot of software developers who are just fine with it for the sake of a high salary.
> In my opinion, the notion that, "Evil is okay to perform, so long as it's against those I don't like," is a sign that someone, somewhere doesn't understand principles and the concept of "evil."
Classifying things unambiguously into "good" and "evil" may be unproductive. It's all a matter of context. I'd say that when your superior/boss requests you to harm others, you don't owe them obedience. Disobedience, cheating etc. aren't inherently "evil".
At least produce something that attempts to sound like a cogent theory, like the Marxists. (Though Karl Marx explicitly invents his own form of "logic" to do so.) Seems like you just don't like certain kinds of people, based on your prejudices about certain industries.
I'd say that when your superior/boss requests you to harm others, you don't owe them obedience.
I'd say that when some "activist" requests you to harm others, they aren't on the side of justice.
Disobedience, cheating etc. aren't inherently "evil".
Against someone who isn't intentionally doing you harm? That sounds pretty evil to me. Of course, the world's very worst evils consist of convincing one's own side the other is "evil" by redefining what that means, thereby justifying the other's harm.
More like based on my own first-hand experience with these people.
> I'd say that when some "activist" requests you to harm others, they aren't on the side of justice.
The question is: is it better to manipulate regular people/harm them in other ways or stop giving your best to make working with your code a pleasure.
> Against someone who isn't intentionally doing you harm? That sounds pretty evil to me. Of course, the world's very worst evils consist of convincing one's own side the other is "evil" by redefining what that means, thereby justifying the other's harm.
Now you are labeling disobedience as evil, regardless of what this disobedience is in response to? Do you think that your employer has the right to ask you to do just about anything without any regard for the consequences of your actions?
I feel like we are pointlessly going in circles here. To be honest, I think that a much better choice is just resigning from the job (which I did recently) when you are uncomfortable with it. All these other things are secondary.
More like based on my own first-hand experience with these people.
This is a verbal pattern used by bigots throughout history, including those who have bashed me personally on the basis of race and sexuality. What's your p-value based on your sample size?
Now you are labeling disobedience as evil, regardless of what this disobedience is in response to?
The ends don't justify the means. You seem to be pushing a notion, that sufficient evil justifies evil in turn.
I feel like we are pointlessly going in circles here.
No. I think 3rd party readers will learn something.
To be honest, I think that a much better choice is just resigning from the job
Agreed.
I haven't evaluated it scientifically. My description of the lifecycle of a startup is a result of my observations made working at such a startup. These observations are consistent with what I read around on the web.
> The ends don't justify the means. You seem to be pushing a notion, that sufficient evil justifies evil in turn.
No. I don't see disobedience as an evil that needs to be justified to be committed. I think that evaluating when things are evil has to be postponed until after evaluating the context. Without the context applying the word "evil" is nonsensical. In a particular case its context may imply that obedience will lead to your boss making more money and making it faster at the cost of harming regular people. Disobedience in form of e.g. suboptimal performance at work may delay the product, make your boss angry, your colleagues slightly irritated with your code (but still I bet there is nothing you can write in a short time which will frustrate them more than a decade-old legacy code everybody is scared to touch) with the benefit of lowering the cost to regular people. No I understand a boss would be very pleased with their employees fulfilling their every wish, but it doesn't make it the right thing to do. You may also not be in a position to risk your job. And perhaps the benefit to society gained by sabotage is abysmal and doesn't justify its cost. But it's all in the context. I would be very suspicious of any ethics system which said you should be obedient at all times, or even encouraged you to be obedient by default. Humans should have their conscience.
It's either true, or it's false. Now, the motives behind saying or believing such a statement may be racist, but telling people who believe it that they are racist isn't going to change their minds.
All the more reason to push for some form of professional ethics!
The history of the hippocratic oath shows that despite its age, it didn't really become popular in medicine until 1000 years after it was written. Seems reasonably likely there was quite a lot of mental gymnastics in the medical profession, arguing against an oath.
Like I said, not killing people is so behind the times :D
Of course, perhaps there is a bit of concern people may have when the person holding their life in their hands no longer takes an oath to preserve it, but what did the ancients know?
https://techcrunch.com/2018/03/14/a-hippocratic-oath-for-art...
I think something of the like is definitely needed for software in critical domains.
Structural Engineers have to be chartered, right? Software engineers in certain domains should probably be chartered under the exact same conditions. But how would you define who should, and who shouldn't be chartered?
It isn't required however. Most of the focus was put on the process being followed (DO178B, IEC 61508, or their equivalents which I've now forgotton) rather than the compentence of specific individuals. It's more of an organisational view of competance rather than focusing on individuals.
I've stopped thinking of doctors as friends, and instead as salespeople preying on people in their most vulnerable state. That oath is just another ruse in the sales process.
Same, I basically consider a doctor an adversary until they give me reason to believe otherwise. Probably some of the ones who pass that filter are adversaries, still, and are making me pay for crap I shouldn't need to or directing me to providers who are more expensive to get kickbacks or whatever, they're just better at hiding it.
They are, as a profession, failing hard at upholding their oath. The insurance industry may be a uniquely useless part of providing medical care, but they do not deserve all the blame for the massive harm that's being done. Hospitals and doctors are a huge part of it, too.
[EDIT] I guess I think of them like mechanics now, actually, in that I figure any time I follow their advice and it causes me to give them money there's about an even chance I'm their mark, not their customer/patient.
https://en.m.wikipedia.org/wiki/Iron_Ring
"First, do no harm" wasn't included in the original oath. Whereas, "give no deadly medicine to any one if asked" is.
I think it's reasonable as a metaphor, but possibly not as an actual guide. Every profession could use an ethical code and statement made by each practitioner, not least of which is an explicit anti-fraud statement. Boy wouldn't that give a lot of people in marketing some difficulty?
There's a societal expectation that everyone provide for their family. If you're doing so through evil means (selling drugs, joining the mafia, sweeping floors as part of a genocidal political movement...) then you're in the moral wrong. But if you're sweeping floors for Goldman Sachs, no one could reasonably blame you for causing the financial crisis. Your contribution to an organization that falls somewhere juuuuust south of neutral is morally justifiable because you've gotta pay the bills.
But if you're the kind of developer we're talking about here, your ability to provide for your family is largely taken care of. Your decision to support an organization is no longer rooted in this socially-acceptable "gotta pay the bills" mentality, and instead about providing luxuries. That's also fine, but you now have to reckon with the fact that your contributions aren't in pursuit of helping pay the bills, and internally grapple with the morality of sending your kids to private school vs using your specialized, valuable skills to help modernize your neighborhood community center's tech stack (but at a much lower salary).
All people need to grapple with the tension between individual/family-level selfishness and societal well-being. But the relieved, privileged life that higher salaries afford also comes with an added moral obligation to evaluate how we spend our time.
Something something spiderman great power great responsibilities.