tags:

views:

472

answers:

7

Does ethics have anything to do with programming? Let's think analogously about a doctor. Does a doctor's job have anything to do with ethics? Well, I suppose even a sociopath can get the degree and perform their residency, but it is crucial that doctors do think about ethics. They need to know whether its OK to perform abortion, euthanasia, cloning, stem cell research, etc. - apart from the legality in any particular state, and apart from the technical aspects!

Similarly in computer science, ethics are important. We have questions on here (stack overflow) whether to implement features on a system that will inevitably be used for spying. What about spamming?

So it seems to me that there are ethical questions that are relevant to programming. If so, what are they? Conversely, what are the irrelevant ethics? (And "all ethical questions are irrelevant") is a fine answer (though I would think incorrect), just defend the assertion.

+7  A: 

The ACM code of ethics is the standard.

http://www.acm.org/about/code-of-ethics

You guys can add your own ethics after this. :)

Suvesh Pratapa
Rats, you beat me by 14 seconds
Cuga
Sweet, I didn't know that, thanks for the post!
Daniel
I see a big problem pretty early in there "1.5 Honor property rights including copyrights and patent." *Neither* of those are property rights. They fall under two totally different legal realms with protections purposely far weaker than property rights. 1.6 basicly tries to say the exact same thing another way too. One wonders exactly who pushed this part...
T.E.D.
Copyrights and Patents might be two completely different things, but they do fall under different types of Intellectual Property rights.
Suvesh Pratapa
Only because people who held both decided to call it that. It sounds better for them because property rights are way stronger than the actual rights the law gives them. In truth, they are two totally different legal concepts, and neither has anything whatsoever to do with property law.
T.E.D.
+3  A: 

The ACM (Association for Computing Machinery) has a Code of Ethics that I think is very well thought out: http://www.acm.org/about/code-of-ethics

Also, check out this post: http://stackoverflow.com/questions/86708/what-should-be-included-in-a-programmers-code-of-ethics

Cuga
Beat you to it! :)
Suvesh Pratapa
+2  A: 

"Dont be evil" - Thats that best ethical guidline I have come across in software.

gonzohunter
What do you define as evil? That seems ambiguous.
Eldila
I'm surprised, Google seems to be doing a pretty good job at this...
Zifre
@Eldila - It seems less ambiguous than subjective. However, I haven't found too many people whose ideas of "evil" are all that far appart.
AllenG
@Zifre +1 Haha-- I'd also add Microsoft and Apple to that list.
Cuga
I think its pretty clear what evil means. Its more a general guideline.
gonzohunter
@AllenG - Subjective would be a better word to use. Also, although there are plenty of black and white issues, there is no short of ethically gray issues. If ethics were that simple, the legal system wouldn't be nearly as complicated.
Eldila
Ask the imprisoned Chinese dissidents who got narced out by Google how that's working for them.
T.E.D.
+1  A: 

Even though the question is a directly to computer science.

Being a computer engineer, IEEE code of ethics could be look into.

TStamper
+2  A: 

Ethics are more about the person and the social group (society, peers, etc.) than the field of work. If your ethics tell you spamming is unethical, don't contribute to it. If your ethics apply only to your job they're probably too arbitrary to be ethics at all.

Jarrod
+1  A: 

The analogies to medical science don't end there. "First, do no harm" is applicable for both doctors and programmers, IMO.

Matthew Jones
+1  A: 

Frankly, I don't think you can list it all. Perhaps some of it can be classified.

You can find youself in situations where you are directed (or just tempted) to write code that breaks the law.

  • Example: I've often refused to use someone else's code in violation of their licensing agreement.

You can find yourself in situations where you are directed or tempted to "cut corners" on testing or proper software design in situations where human safety is an issue.

  • Example: I once refused to interview with a company that coded firmware for medical devices in C (about the most error-prone language in existence).

You can find yourself in situations where the actual intended purpose of the code you are directed to write violates your morals.

  • Example: I once turned down a job offer writing firmware for smartbombs. I know someone's gotta do it, but it ain't gonna be me.

You can find yourself in situations where you are directed to write code that isn't inherently immoral, but is inherently flawed, or indirectly encourages bad behavior.

  • Example: This is a bit squishier, but I've been dragged kicking and screaming into doing jobs that implemented dongles and license servers. Coding a voting machine with no paper trail would be another good example.

The thing you have to realise about most of these issues is that your bosses don't have your perspective as an expert in software, so often they don't even realise they are asking you to do something unethical. It isn't a comfortable thing to have to do, but if you don't point it out, the evil one is really you, not them.

T.E.D.