The Ethical Dilemmas Today's Programmers Face
snydeq (1272828) writes "As software takes over more of our lives, the ethical ramifications of decisions made by programmers only become greater. Unfortunately, the tech world has always been long on power and short on thinking about the long-reaching effects of this power. More troubling: While ethics courses have become a staple of physical-world engineering degrees, they remain a begrudging anomaly in computer science pedagogy. Now that our code is in refrigerators, thermostats, smoke alarms, and more, the wrong moves, a lack of foresight, or downright dubious decision-making can haunt humanity everywhere it goes. Peter Wayner offers a look at just a few of the ethical quandaries confronting developers every day. 'Consider this less of a guidebook for making your decisions and more of a starting point for the kind of ethical contemplation we should be doing as a daily part of our jobs.'"
And every employer I've developed code for has told me the same thing: shut up and get back to work.
Ultimately, in order to address the ethical considerations of programming, we would need a work culture that supports it. Otherwise it simply becomes another "know which side your bread is buttered on" lesson.
-Hentai [in vita non pacem est]
Other way around, actually. 'Morals' -> 'mores', which is about customs and expected public behaviors; 'ethics' -> 'ethos', which is about internal guiding principles.
-Hentai [in vita non pacem est]
To a computer programmer, ethics is dead code, and I mean that in a good way. It takes effort to do wrong, and money to add the ethically problematic features -- and the only person who makes that happen is your boss.
Not necessarily - imagine software that controls a physical device, which has safety concerns. There's a simple and elegant check that can be performed that catches 90% of the dangerous use-cases, or there's a really hideously complex set of layered checks that will catch 99% of them. You have two days to ship or you're fired. Which do you include?
-Hentai [in vita non pacem est]
The fact that this comes up as a question at all is the reason CS needs to follow the footsteps of engineering, medicine, and other "professions". If everyone was registered, bound by a code of ethics and legally required to do so to perform their work employers wouldn't be so quick to think they can replace you with someone willing to follow orders. If the industry had a professional association (I won't call it a union but at times they perform similar functions) to out the employer attempting to force someone to go against a required code of ethics, then this question shouldn't actually come up.
I've been in a situation where I pretty much had to lie or lose my job. This was just after the dot-com crash in California and new gigs were hard to find and I had a family to support. If I were single, I'd tell them to shove it and find a gig in the north east, which still had "legacy" openings at the time. But that wasn't a real option.
I had knots in my stomach over that conundrum; it's not pleasant. I could relate a little bit with the dude in Les Miserables who had to choose between theft or starvation.
Even now I have to often live with foolish choices by PHB's simply because they are the boss. It may not be "unethical", but often it's bone-headed unprofessionalism. I try to CYA as much as possible, but sometimes you just have to shut up and play the game if you want the rewards of the game. The work world is messy Dilbertism in most orgs.
Table-ized A.I.
I've heard that one of the main features of getting your Professional Engineer license is that you are then legally liable for your work. Lot of people working in IT with the title "engineer", so why not hold them to higher standards? I can see the point of view from the people who want just that.
It's worse because while YOUR post actually reflects an ethical/moral issue, TFA does not.
Here's their #1 item:
90%+ or whatever of the programmers out there are working on in-house code for in-house projects used by in-house people. Stuff that will never ship. So it does not matter how much stuff is logged.
For those coders who are working on code to ship, the issue becomes more about where to save the huge log files.
Log everything and store it locally? Why is your app taking up 20 GB of space?
Log everything and store it remotely? Why is your app sending 20 GB of traffic?
The ethics/morality is more "how badly do you want to be the punchline to a joke when it is discovered".
The 90% case and updated instructions for the user. Even if you have to call him/her personally. Aware people work around dangerous conditions every day.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
And when you know for a fact that those instructions will be handled by a department that is not interested in communicating honestly with the customer, especially if doing so might convey a sense that the product is dangerous?
-Hentai [in vita non pacem est]
One I have personally grappled with, a script I'm writing will automate 5 peoples jobs away. Chalk it up as inevitable even I know people will lose their low skilled jobs as a direct result? I know it has to happen but that doesn't make me feel good about it. To not write it as best I can would of course be theft from my employer of course though.
...but sometimes you just have to shut up and play the game if you want the rewards of the game.
Basically, you chose to shut up and do unethical things, to keep getting your hands on those $$$$ greasy paychecks. So quit rationalizing.
You had and have options.
Furthermore, they completely forgot the obvious ethical dilemma of an InfoWorld web site programmer tasked with implementing multi-paged articles.
Ezekiel 23:20
I've seen many requests for objectional software in the years I've been working, but some of the worst have been in the guise of 'content protection'. One of the most heinous was DTCP for automotive use, with intent to lock everyone completely out of the sensor network and on-board electronics. My standard response for this one eventually became:
1) I will quit before I allow myself to work on DTCP;
2) I will not support any engineer in the company who works on DTCP projects;
3) I will not support any project or library that a DTCP project depends on, or makes use of;
4) I would rather see the company close due to lack of work than have it pursue projects of this sort.
I've never been told to shut up and go back to work; granted, I had a long history with the company and was worth substantially more to them as an employee than a few paltry one-shot crypto projects.
I recognize that most people don't feel like they have the job security to make demands of this sort; however, I do, and I fully intend to make use of my tiny bully pulpit when situations arise that demand it.
Alter Aeon Multiclass MUD - http://www.alteraeon.com
Those options don't scale. Honest people will receive less resources and have less influence and perhaps have less children, leaving the world full of slimebags and enablers of slimebags.
It's probably why so many slimebags exist today. If you want to solve the issue on a large scale, you need to find a way to change the system(s) to not reward slimebags, not rely on futile individual volunteerism.
Table-ized A.I.
In fact, this process attempts to blame unethical behavior on "bad apples" rather than an entire profession. It does not improve the results, however. Unethical behavior permeates society on all levels regardless of the particular profession. When a profession such as banking or real estate or auto manufacturing or insurance or engineering go out of their way to "teach ethics" to the members of their profession or association then I believe it is an attempt to deny culpability in their own unethical behaviors. My belief is ethics is not taught professionally, rather, it is merely defined in terms of the limits of professional responsibility, which make it possible for sociopaths to navigate the tightrope. This way unethical people learn how to deny responsibility for a lack of professional ethics, when in fact they have a lack of ethics altogether, which can't be repaired by certifications. The fact is that the certifications will have much less impact on improving an individual's personal ethics at their current stage of personal development. The true solution is to stop rewarding unethical behavior in our society, plain and simple. People will behave according to their incentives, whether or not they actually have a social conscience or even a soul, or the professional certifications, thereof.
quote:
It should be noted that no ethically-trained software engineer would ever consent to write a DestroyBaghdad procedure. Basic professional ethics would instead require him to write a DestroyCity procedure, to which Baghdad could be given as a parameter.
http://en.wikiquote.org/wiki/Nathaniel_Borenstein
You declare that you'll start working on it immediately and will put in overtime, but even so it won't be ready by the ship date. State that you won't sign off on it or release it until you feel it's ready, because if someone gets hurt, you could be responsible. Shrug your shoulders and wait for a response.
- If you're ordered to do it anyway, state that you can't be paid enough to cover the legal liability and you won't be party to it.
- If they take you off the project, say OK and walk out. You can effectively do nothing more.
- If you're asked to find solutions, do your best, but refuse to cheese it.
- If they threaten to fire you, try to leave a social 'line of retreat' for them to back down without losing face. Something along the lines of 'firing me won't help get it done any faster, but at least it won't be my ass on the line. If that's really what you think will get this project done on time, then I'll show myself out'.
A lot of people will complain about this, saying things like 'I can't afford to be without a job' or 'I don't want to have to find a new job' or 'I don't want to move'. To those people I say: the threat of firing is only effective on an employee who is afraid of being fired. If you want power in the employee-employer relationship, you'll have to accept this as a simple cost of doing business.
Alter Aeon Multiclass MUD - http://www.alteraeon.com
Honest people becoming dishonest doesn't scale either.
That's convenient, isn't it? Because in your worldview individuals are exempt from making moral choices - they need just point out some other person or entity which has a lot of influence.
The moral man knows the difference between right and wrong; the ethical man does the right thing, even when nobody is looking.
How quickly do you think those jobs would be shipped oversees to people who aren't bound by such associations?
That is the computer programmers' problem.
Hmm, the humour and sarcasm seem to have been be lost on you.
Right, ethics classes won't help. I left a good career at a major medical center when I was told that we were going with the technology that would likely create medication errors because the correct software was too expensive and it would be cheaper to settle the lawsuits.
Nobody needs an ethics class to know that that's wrong behavior, and taking an ethics class would not have changed that behavior. And it certainly wasn't the programming staff that needed ethical correction.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
And every building built on this planet contains defects. Every bridge built on this planet contains defects. It is impossible to build a building or bridge without there being a defect. Almost all the the defects are insignificant. The difference between Software and Civil Engineering that small defects don't usually bring the whole construction down whereas the smallest defect in a piece of software often have catastrophic effects.
Oh those with simple models of the world and simple minds....
You do realize that you are part of the problem, right?
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Indeed. Going over to the dark side is easy. Coming back from it is hard or impossible.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
While that is a nice idea, it unfortunately is not so simple. For example, giving defective code to a customer that depends on it working seems to fail your test.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
You are putting words into my mouth. Basically I'm saying that IF you want to change behavior on a large scale, you need to find a way to change the reward system(s) on a large scale.
Nagging people to "be good" and accept the down-sides of honesty for altruistic reasons alone will not work well in the longer run. I'm not saying whether asking them to do such is good or bad, I am only saying it won't work on a large scale. I'm trying to explain it in terms of cause and effect rather than give it a good/bad value judgement.
X will change Z but Y won't change Z. Whether doing Y is "good" even though it won't change Z is another issue that I didn't address either way.
Table-ized A.I.
I don't want to go into details, but basically it was we actually used component brand X to build an application with when the customer wanted brand Y. I never learned why they were picky about such, for as far as I could tell it didn't matter much. Either way, there was not enough time to recode it and rather than tell the customer, my boss & owner wanted me to lie with them.
Table-ized A.I.
While lying to someone is quite bad, it is a whole order of magnitude worse to be forced to lie with them.
If this actually happened, you would have rules like this:
"You can't write X without including Y DRM because otherwise OMG PIRACY!!111!!!"
Fix the morons who would write that into the code of ethics. Then, maybe we'll talk.
"It's been 3 minutes since you last sucessfully posted a comment."
Yes, it has, and I have "Excellent" karma and have been a member for so many years I can't remember, and I currently have mod points. Maybe give me the benefit of the doubt?
Just for that:
http://soylentnews.org/
FUCK BETA
vi ~/.emacs # I'm probably going to Hell for this.
Making a sword or shield? What if it breaks in battle? Making a wagon wheel? What if it breaks down in the middle of nowhere? Making a horse harness? What if it fails pulling a carriage uphill? Making a chair? What if it fails when some person sits on it? Making a steak? What if it has a sharp bone sliver in it? Writing a control system? What if you miss something? THEN YOU FIX IT, that's all. Be as careful as you can of those things you can think of; ask for help so you have a chance to get more than a narrow view. But when something goes wrong, the "I should be totally safe, and I'm gunna sue ya" thing is a sickness, not a feature of a well functioning society.
All this "total safety, all the time" hysteria is really wearing. It's hurting us more than it's helping us.
A well lived life will entail risk, and probably lots of it. Not to mention non-optimum choices made for reasons you'll look back upon with utter confusion later. Or, you can live in a pillow-sided room eating only gruel that was sterilized by gamma rays. I know what I choose. Do your best, learn from your mistakes, remediate any that you can, and move on. If some crap you bought breaks, throw it out and replace it. If you got hurt, try to heal. End of story. The ethics are obvious. The smothering is insidious. But I think it's going to get a lot worse before it gets better. There's far too much money in finger pointing. And we're just too stupid, collectively, to do anything about it.
.
I've fallen off your lawn, and I can't get up.
I've seen these jobs get shipped back quite quickly when management did not account for the issues produced when the oversees people aren't bound by much in the way of ethics (when one of our companies commented about bad tests the response from India was "We didn't think you would catch that"). Things get shipped back rather quickly when they stop working.
IEEE has a code of ethics. They talk about the implications and the best strategy for establishing what they call ethical dissent:
http://www.onlineethics.org/Resources/ethcodes/EnglishCodes/IEEEguidelines.aspx
What you believe is unethical, may not be unethical to others.
Having said that, they also have noted that being a whistleblower is not a good career move.
http://spectrum.ieee.org/at-work/tech-careers/the-whistleblowers-dilemma
In the US, in particular, there is very little to protect a whistleblower. There are laws about non-retalization, but they only work if the whistleblower is basically proven right at trial. Even that will not prevent the employer from providing poor raises, no advancement, and poor performance reviews. Leaving for another employer effectively shed the protections and often brings with it a reputation that was actively damaged during the trial.