Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

When I co-oped during college, I had to fill out an evaluation of the co-op afterwards. One metric I always had to rate was how much the company required me to "Make ethical decisions related to your profession."

This always seemed kinda silly- I mean, my first co-op was writing java apps to manage industrial radios. There wasn't much moral ambiguity going on.

Anyway, I'm wonder what sort of ethical dilemmas one might actually encounter in software development.

Edit:

It should be noted that no ethically-trained software engineer would ever consent to write a DestroyBaghdad procedure. Basic professional ethics would require him to write a DestroyCity procedure, to which Baghdad could be given as a parameter. - Nathanial Borenstein

share|improve this question
3  
A lot of the stuff presented as unethical here is either illegal or can get the company into other sorts of trouble (like losing the ability to accept credit cards). – David Thornley Oct 1 '10 at 22:01
10  
Being from Baghdad I find that quote highly offensive. An ethical programmer wouldn't make such a quote. Instead, he would write the quote with DestoryX as the procedure name. :%s/Baghdad/X/ – hasen j Nov 10 '10 at 23:43
show 3 more comments

closed as not constructive by Mark Trapp Oct 1 '11 at 9:05

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.

33 Answers

1 2
up vote 89 down vote accepted

In my opinion, the most common ethical dilema related to the software development profession is in front of everybody and we rarely notice:

Incurring in 'technical debt' without letting the customer know it.

That is, being asked to implement a mediocre solution because of cost reasons when you know that in the long term that solution will bring more problems and eventually the cost will be greater to the customer (or company) than implementing a better solution from the beginning.

Sometimes there is no choice and you have to do it. But I think that as professionals, we are ethically forced to explain how the cheap solution will impact long term costs and make sure that the customer understands the trade-off and is willing to deal with those consequences.

share|improve this answer
1  
Excellent answer Sergio! – Carson63000 Oct 1 '10 at 4:01
3  
If I had a penny for everytime I heard upper level stick with the cheap quick solution. – Chris Oct 1 '10 at 12:17
3  
Right but they're two different people. If you are asked to cut corners by your boss (ie. your direct customer) what obligations to you have to your boss's customer (ie. the eventual user)? – interstar Oct 2 '10 at 17:26
5  
I tried that at the beginning of my career but after 2 years I gave up. I lost count of how many times other people told me what tools and patterns to use for solving a problem because otherwise the team that would receive my code "wouldn't understand it". Being forced to a solution for other lazyness is the most depressing thing I have to deal with my job as a programmer – happy_emi Oct 7 '10 at 12:20
1  
@kirk.burleson: They care about cost, which is what they're eventually going to incur. – Scott Whitlock Nov 10 '10 at 3:47
show 8 more comments

The pressure (usually from higher-ups unfamiliar with the technical issues involved) to put DRM into the program "to keep people from stealing it."

Not only is this technically impossible in the Internet Age--all it takes is for one person anywhere to find one mistake and crack it one time and upload their crack, and anyone in the world can get your program for free--it's also morally repugnant.

In any other context, creating software that takes the control of the system out of the hands of the owner of the computer and causes the computer to act against the owner's will and against his interests is known as hacking, and it's a serious crime. I see no reason why DRM shouldn't be regarded in exactly the same way, the DMCA notwithstanding.

share|improve this answer
15  
I've never understood the whole DRMed music thing. Surely, if you really wanted to rip it, all it would take is to connect the audio-out and audio-in jacks on your sound card and use a sound recording program. You lose no quality (if you use a good cable) and end up with a non-DRMed version of the same file. – Chinmay Kanchi Sep 17 '10 at 10:27
2  
@Chinmay - which is exactly the point that the music execs didn't get. You can see the movie and TV execs making the same mistake now. – ChrisF Sep 17 '10 at 11:29
4  
DRM in eBooks is driving me mad. Can we please please please hurry up the free market on this one? – Richard Gadsden Oct 1 '10 at 10:24
3  
all this money spent on DRM. someone should do the math and tell us how many hungry people could be fed, children inoculated, jobs created, etc. if DRM was eliminated. Once we can say that DRM denies medicine to children, make the point that DRM is evil, and we put it in terms that everyone can relate to. After that it is a non-technical job of manipulating public opinion, best performed by talk show hosts and views anchors. – BinaryNights Nov 7 '10 at 21:04
5  
While I hate DRM as much as the next guy. Some companies like Netflix have done such a good job of implementing it that it's invisible to the users. – Evan Plaice Nov 19 '10 at 20:58
show 7 more comments

In certain fields (aerospace, medical....) the pressure to deliver a build vs the desire to get everything right can be an ethical pull, when you start considering the consequences of letting an error slip through.

What do you do when you know your unit tests might not have covered all the edge cases, but you are out of time for testing?

What do you do when reading the code shows a tiny chance that under very rare conditions the software can have an error, but there is no time (or maybe no possibility) to reliably test for those conditions?

As a conscientious developer, I work toward getting everything right, but I certainly have felt the pressure to "just ship it".

share|improve this answer
2  
+1 - I think this is a dilema faced by programmers all the time. It may not be life or death, but a bad financial report could cost someone else's job or a lot of money. – JeffO Sep 17 '10 at 13:30
6  
@Jeff O Sometimes it is life or death. Take a look at Therac-25. People died in a very slow and painful way because of software bug. – AndrejaKo Oct 2 '10 at 7:56
2  
therac-25 is an extreme example that led to direct death of patients. I see situations every day of things that could cause a death chain reaction yet are easily overlooked. A simple miss-calculation in the production of a HTML report marks a row with the wrong CSS class. End result, the doctor interprets the result as being normal when it should have been flagged critically abnormal. When you think of it the error was trivial, yet very often medical systems will lack the testing, redundancy or stability even now when the lessons of the therac-25 should be burned in our conscience. – Newtopian Mar 15 '11 at 5:01
show 6 more comments

The advertising industry requires programmers (cf. Google) and can produce ethical dilemmas. There are some simple ones:

  • Are you writing software to spam people?
  • Are you writing software which you need to trick people into installing? (spyware, adware, useless toolbars which grandma doesn't know how to uninstall)

and some trickier ones:

  • Collecting user data and using it to advertise at people. What's reasonable? What's not? Privacy. Google. Oooh.
  • Marketing at kids. Exploiting kids? Exploiting parents through their kids?

and even trickier ones from affiliates of the industry:

  • http://www.gaiaonline.com/ -- Gaia Online. Spend $5 and get some animated bubbles on your avatar for a week, or some nonsense like that. The bubbles have a marginal cost pretty close to zero. What the deal? Are you exploiting someone? Or should you rely on them knowing what's really in their economic self-interest, lest you implicitly denigrate their values?
    • If you worked for / partnered with that site (say, programming the gift card infrastructure - which you can actually buy in real stores, it's totally crazy) is it going to leave you feeling sleazy? If it were icky, could you be justified in saying "it's bog-standard computer engineering work, which is relatively fungible, and it's pretty inevitable, so it really doesn't make a difference who does it" or something to that effect?
share|improve this answer
6  
There are enough reputable companies out there that do not need these kinds of dirty tricks that you shouldn't ever need to work for one that does. As for consumers paying $5 for buying things that to you seem worthless, that's their decision, not yours. – Robert Harvey Sep 17 '10 at 5:50
1  
Have you seen the BillMyParents card? I about choked when I saw the advertisement on a wikia strategy guide for a game I was playing. I hear that they're thinking about adding a BillMySpouse card type in the future. – Evan Plaice Nov 19 '10 at 21:00
show 1 more comment

A number of years ago I worked for a company which sold vehicle insurance through dealerships. When making a sale, payment, or claim, dealerships penned in and mailed forms to our processing centers. Afterward, these forms were punched into our accounting system a large data entry team.

A few months after I was hired, I was asked to create a system which allows our dealerships to submit forms online, where they would be inserted into our accounting system in near real time. After the system went into production, paper forms were slowly phased out, and my company laid off an entire data center of minimum wage working class people.

I'm not sure if its unethical, but its deeply unsettling knowing that you're writing software with the expectation of putting people out of a job.

share|improve this answer
37  
In the long run, economies grow by putting people out of jobs. These people are then available to hire doing different things, and so the workforce as a whole does more stuff. It can be awfully painful in the short run, of course. – David Thornley Sep 17 '10 at 2:01
8  
If you buy a Roomba instead of hiring a maid, is it ethical? – fennec Sep 17 '10 at 2:53
6  
If you've taken advantage of people who are less employable, by asking them to do crappy tasks for 8 hrs a day and make them feel like they'll alway have a job so they should be loyal to the company, then yes. – JeffO Sep 17 '10 at 15:58
8  
-1 This is absurd. All progress is based on replacing obsolete ways of the past. – Daniel Cassidy Oct 3 '10 at 19:13
5  
I do feel for people in the short-term when they lose a job, but minimum-wage data entry? You did them a favor. – JeffO Oct 4 '10 at 12:45
show 6 more comments

Not sure if this is ethical necessarily, but I was recently asked to code a payment form where the users would provide their payment information (credit card, billing address, etc.) to be stored in a web-accessible database (obviously not directly accessible from the web, but on the same server as the website and not extremely secure) and the site admins would then email this info to their suppliers.

Personally, I refused to code it since the people providing their payment info don't know that this is actually happening behind the scenes (I did say that I'd do it if they provided full disclosure and told people that their credit card details would be emailed around, though since most people don't read I felt that even this wasn't necessarily going far enough), and I feel it's our duty as technologists to understand the implications of the code we write and how it will be used. Basically, I wouldn't want my name associated with an app that was going to be used that way.

share|improve this answer
4  
That sort of design can get you in real trouble with credit card companies. Are your company and their suppliers willing to risk not being allowed to accept credit cards? If you're being asked to do risky things with credit card info by managers impervious to ethical arguments, ask why they want to violate their credit card vendor agreement, and if they know what happens if they get caught. – David Thornley Oct 1 '10 at 21:36
2  
I discovered that our E-Commerce websites did this and I reported it to management only to have them tell me they were aware of the issue. WELL GOD DAMN FIX IT!, but they wouldn't. – Brandon Wamboldt Oct 2 '10 at 0:59
1  
I think that emailing that information is almost as dangerous as saving it on a webserver. One cleverly placed sniffer placed in either network and a lot of people lose their credit card numbers. Such information should always be sent over an encrypted connection. – Evan Plaice Nov 19 '10 at 21:03
show 1 more comment

You write a bit of code at your job. It's very generic code; solves a general problem. Maybe it's a script. Say, 100 lines.

Now you leave for a different company. You know (for whatever reason) that the chances are excellent that in your new job you will need that same piece of logic. You know that you can certainly recreate it from scratch; you're intimately familiar with the design.

Do you take a copy of the code with you? Or do you waste your time at the new job recreating it from scratch? Technically your old job owns the code. But ultimately the end result will be the same. What's the ethical action here?

share|improve this answer
1  
Ask the old place whether you can get a copy. – Aaron Digulla Oct 4 '10 at 7:58
3  
@David, it could be a copyright violation. In point of fact, if you recreate it (using "knowledge"), with virtually identical code, it could still be a copyright violation. The question is, is it ethical? For some people copyright is not the full answer. – Zac Thompson Nov 11 '10 at 4:33
3  
For the record, I don't really think just walking with a copy of the code is completely ethical. But I think the border between lines of code and general knowledge (as David describes it) is blurry at the small scale (maybe 100 lines is too big, but what about 20? or 7?). That's why I think this problem is realistic. – Zac Thompson Dec 23 '10 at 7:05
1  
You ask a quesions on stack overflow about how to it first, them post your solution as the answer... (This only works for small bits of code that your past employer is unlickly to care about anyway) – Ian Mar 15 '11 at 12:20
show 4 more comments

I used to be an IEEE/CS member. The IEEE has its own ten-point code of ethics, posted here http://www.ieee.org/membership_services/membership/ethics_code.html

Note that ethics isn't simply about refusing to do harm. Its also about actively taking steps to improve yourself, improve your peers (through mentoring/answering questions here on SE), and improve your profession in the eyes of the public; and these objectives are reflected in the IEEE code.

In terms of real life ethical dilemmas, I once had a sales rep falsify info on my resume to win a contract. This violates #3 on the IEEE code of ethics. I confronted the sales rep and asked him to correct the incorrect info, and he said "everyone does it." When I persisted, a partner told me they needed the contract or they'd go out of business. At that point, I started looking for a new job.

share|improve this answer
1  
all professional associations have a code of conduct (or in case of IEEE called a code of ethics), these are akin to the Hippocratic oath taken by doctors. These high level notes to members on how to conduct themselves professionally. The primary function of these codes is to ensure that one rouge member does not bring down the whole association. They are not really ethics in the sense of the question. – BinaryNights Nov 7 '10 at 20:45
3  
The one that I hate the most, and the one that creeps up the most is always the potential for a conflict of interest. It is so easy to unwittingly blunder into a situation that quickly becomes uncomfortable, often just through following your nature to try and please people. – Tim Post Nov 10 '10 at 7:38
show 1 more comment

Read http://programmers.stackexchange.com during working hour.

share|improve this answer
2  
Uh-oh! Sorry; logging off now. – anthony-arnold Jan 7 '11 at 4:17

Revealing a secret or non-released project to competitors, or passing source code to competitors.

share|improve this answer
8  
How many times has this actually presented itself to you as a problem you gave serious consideration to? – AShelly Sep 17 '10 at 15:02
2  
companies routinely steal sales leads from each other. the more daring ones peek at competitors product roadmaps. but nobody wants the competitors source code. it is not conducive to business continuity. – BinaryNights Nov 7 '10 at 20:00
show 5 more comments

Today I had an opportunity to get a six-month co-op job with a well-known defense contractor. The pay and benefits would have been incredible, but I had to skip the opportunity. I just don't believe it's ever really justifiable for software developers to be involved in war. The excuse that defense software is used to save lives is invalid: in war, saving one life often means extinguishing another, and I couldn't live with myself if I had even a semicolon to do with that.

We're intellectuals, not barbarians.

share|improve this answer
4  
I'm curious as to the reason for the downvote, though perhaps this would have been a better comment than an answer. In any case, I think it's a valid answer to the question: realistically, the ethical problems that arise in programming have to do with either how the product is made, which other answers have covered, or what the product is used for, which I was trying to address. – Jon Purdy Oct 3 '10 at 2:59
4  
@Aaron, so, are we to understand that you consider the United States government unethical for entering World War II, and subsequently winning it? (For that matter, are you even aware that the United States spent a LOT of money rebuilding Germany and Japan after World War II was over?) – John R. Strohm Nov 10 '10 at 13:17
2  
If you're not advocating complete pacifism (a defensible view, but not one most people actually hold), you're allowing for the existence of weapons. If you accept the existence of weapons, it seems odd to have moral objections to having better rather than worse weapons. BTW, war has solved a lot of things, for better or worse. Vietnam solved some issues, although not the way we wanted them solved. – David Thornley Nov 10 '10 at 18:54
2  
@David Thornley: I believe that human suffering is bad by definition, so that which minimises suffering must be good. Absolute pacifism is by that logic the theoretical ideal. Unfortunately for idealists, humans aren't fundamentally pacifistic, though neither are they fundamentally flawed as a consequence. We are how we are. Accepting that weapons exist doesn't require tolerating an increase in the potential for human suffering brought on by improved weapons. War has solved many things, but I suppose the question is whether it'd've been needed if war weren't a factor in the first place. – Jon Purdy Nov 11 '10 at 9:23
3  
I'd rather work in the defense industry and help defend my civilisation from those trying to destroy it than sit idly by and let that destruction happen... In fact I'd likely sign up for the armed forces if I weren't medically disqualified. – jwenting Mar 15 '11 at 10:06
show 6 more comments

One ethical decision most software developers have to make is the fight against what is best for the company and what is best for myself.

For example you may be tasked with making a small GUI app in C#. If you were very experienced in Winforms and could hash it out in half a day you may decide instead to take 3 days and learn WPF and do it via WPF instead. Because it's better for you.

share|improve this answer
3  
If I want to write it in WPF, I make the best business case for doing it in WPF that I can. But if they still want to do it in Winforms, then that's what I will do. – Robert Harvey Sep 17 '10 at 5:42
9  
If you take the extra time to learn WPF, the company now has an employee with a wider/better skillset. That's not a bad thing. (Yes , one can take this to (bad) extremes.) – Frank Shearar Sep 19 '10 at 18:45
show 1 more comment

Nothing to do with programming, but at my first hi-tech job, I was a developer, tester, and network administrator.

Our VP of sales used to visit me on the last day of the quarter and ask me to set back the clock on the accounting server a few days (so they could get a few more days of sales in before reporting earnings) - this was a public company.

I did it once, then resigned just short of 3 months later (I just couldn't do it again).

share|improve this answer
3  
They did - about a year after I left. – Alan Oct 1 '10 at 22:32
show 2 more comments

At the company where I'm currently working I've been asked to:

  • Write spyware that covertly captures all shell commands, builds, environment info, etc. of our developers.
  • Go to a customer site, and when they are not looking, copy a proprietary specification to my USB stick.
  • Use several copyrighted pieces of software without licenses.
  • Sign up for "trial" versions of software multiple times to avoid paying for a license, even though we know the tool is useful and we plan to use it commercially.
  • Convince our customer into paying for tools that we use exclusively for internal company development by telling them that we need the tool to develop their software.

I have refused to participate in any of these unethical behaviors and on several occasions asked to speak to company counsel to ask for legal/ethical guidance. I have on each occasion been refused access. In each case I refused to accommodate these unethical and/or illegal requests.

share|improve this answer
7  
I'd get a new job if I were you... Soon they'll ask someone in accounting to 'forget' to pay you or to pay you a bit less hoping you won't notice... – configurator Dec 23 '10 at 1:22

Spend time talking about non-work and then count that as work time. Not specific to software development at all, but still something to be aware of.

share|improve this answer
2  
@fennec: Does that make a difference? – Robert Harvey Sep 17 '10 at 5:56
9  
@Robert - yes. If you paid hourly you are directly "stealing" time from your employer. If you are paid a salary you a probably only "borrowing" the time as you'll end up paying it back when you have to work late/weekends (as inevitably happens). – ChrisF Sep 17 '10 at 11:31
4  
My workplace used to be deadly quiet. That was useful for the purposes of concentration, but the downside was that if you picked any two employees at random, the chances were they wouldn’t know each other. Then, not so long ago management started actively encouraging people to socialize at work. The end result was that employees became much more aware of who other teams were and what they were doing. There was a marked improvement in the cohesion of the department as a whole. I’m not sure this would have happened if every conversation had to be about ‘work’. – Daniel Cassidy Oct 3 '10 at 19:32
show 5 more comments

I think there are lot of ethical challenges in the world of data mining. Programmers who don't care how much they can screw up other people's lives by not caring about the quality of the data they mine for credit reports comes to mind. I'll never forget my sister being asked what kind of car my ex-sister-in-law (she and my briother had been divorced for ten years at that point) drove in a business credit application for instance. If they are using information like that which is totally irrelevant and outside the control of the applicant what else are they doing that is worse but we don't know about?

Data mining is also why I'm getting nasty creditor calls for some person I never heard of who probably lived in this house 30 years ago or who is a neighbor I don't know (I understand they do this to embarrass the creditor to his neighbors which is not only wrong but I'm pretty sure it's illegal, too).

If you work in financial systems you could be asked to write a program to steal from the company in a way that it would be hard to find. This is likely not the corporation asking but it is possible someone who can fire you could ask for this if he or she were unethical.

It is unethical to store people's private information in an unecrypted fashion so that anyone who steals the database backups can see it. Lots of people have had their identities stolen this way and I know I have been notified several times (most recently by a Life insurance company, before that it was the company where we had our 401K) that my data had potentially been stolen. As a programmer you have a responsibility to protect the personal information you collect.

share|improve this answer
show 2 more comments

I once worked for an ISP. Among the thousands of other web sites hosted on our servers was one site which offered "modelling" services. It had a database of models (who had paid quite a lot of money to be there), along with their "glamour" pics, mostly nudes.

In addition to this one, the owner of this site also ran a number of other sites using our hosting offering various other not-quite-kosher services (another one he ran was basically a pay-me-to-do-your-homework-for-you service for lazy school kids), and had a reputation among the ISP staff for being quite an unpleasant person to work with.

However, he paid good money to the company to run all these sites, and also regularly paid for design and development work.

My ethical dilemma came when I was first asked to do some development work on the "glamour" site. It was an extremely uncomfortable project, and some of the photos I saw on there I wish I hadn't seen. I did the work, under protest, since it was already paid for and promised and there was no-one else available, but I made it clear that I wouldn't work on a site like that again. Fortunately management respected me in that.

share|improve this answer
6  
I'd see the fake homework site as more unethical than the "glamour" site, but perhaps that's just me. – TRiG Nov 27 '10 at 18:41
show 1 more comment

Being asked to code something that obviously serves an unethical purpose.

share|improve this answer
6  
What do you consider obvious? In the aerospace industry there are people who write software for weapons systems that kill people. Do you consider that unethical? What if the weapon system saves lives because it is used for defensive purposes? – Robert Harvey Sep 17 '10 at 5:52
1  
Unfortunatel, things don't seem obvious until after we find them. – JeffO Sep 17 '10 at 15:55
1  
There are obviously many gray areas, but if you are on the receiving end of requirements that auto-generates fictional workitems in an expense report up to a maximum auditing threshold for example the intent is very clear. – Bill Sep 17 '10 at 18:36
4  
I once got a call from a guy who wanted my consulting firm to write a mail server specifically to send out spam. He said he was willing to pay handsomely, in cash, under the table. I told him not to call back. – Bob Murphy Oct 6 '10 at 6:36

Whether to delay shipping the software to allow time to fix more known bugs or ship the software earlier and make consumers pay for the fixes (obviously this depends on how much control you have over the release date).

share|improve this answer
show 1 more comment

Working with unlicensed or incorrectly licensed bits (software, components, utilities, code, etc) to develop apps/system/solutions for which your company gets paid, increasing profit margins.

Perhaps not directly with programming per se, but I believe it counts.

share|improve this answer
2  
At the fringe, you often have situations where the license contracts just don't add up with reality. Say you have 15 employees but created 200 accounts in a bug tracking software so customers can see the status of their bugs (read only). How many licenses should you buy? 215? Just for seeing the bugs? Sounds like a rip-off me. But of course the vendor of the bug tracker will see that slightly different. – Aaron Digulla Oct 4 '10 at 8:01

Conflicts of interest are what I try to avoid the most. Often (if you are a good natured person) you never see these coming until they are right on top of you.

I worked briefly for a company as an all around technology 'go to' person. I ran the network, I made the web sites, I developed some custom software and handled the on-call tasks. The opportunity came at a really good time for me, I was between major projects as a freelancer and needed something to plug some financial holes. I made it clear that I was not an employee, just a very part time contractor and that did have other clients, just none in the same industry.

The CEO of the company also owned a charity, which was doing good things. He asked if I'd mind helping to re-do the web site in anticipation of a large fund raiser. I wasn't really busy, it seemed like a good enough cause and favours tend to come back to you in good ways.

What I did not know is, the charity site was going to take a LOT more time than I anticipated. I didn't realize quite what they wanted until I got too far into things to pull out. If I did, there would be no way that they'd be ready for the fund raiser.

Meanwhile, stuff started really heating up at the company. I fell way behind on several things, a lot of people who were depending on commission were being let down and the CEO directed me to work exclusively on the charity stuff and asked that I not tell anyone what I was doing.

I never saw that coming. There I was, I had to explain to people why things were delayed, and here's the CEO asking me to be dishonest. There's no good way out of something like that. At this point I just realized what I walked into and I knew that no matter what I did, someone was going to get mad.

Consequently, I no longer take 'side projects', even unpaid, for whatever cause.

I believe that most productive people (who go through the bother of having a job, etc) are also generally good natured and want to follow rules. Some people, however (at least in my experience) aren't so good at realizing when they are effectively putting someone in a very compromising position.

You really do have to be careful, your work environment can go from fantastic to dreadful very quickly in these kinds of situations, and you almost never see them coming.

share|improve this answer
show 1 more comment

Ethical issues I have actually run up against while programming (and what I did in parenthesis):

  • Company was contracting with the government of a totalitarian country (I complained to the CEO, who took my concerns seriously but was still mulling it over when that government's forces massacred several thousand student protesters on TV).
  • Criminals were using company computers to store and distribute child pornography and the division's lawyer forbade me from stopping it, from fear that the newspapers would hear about it and give us a bad name (I called the company's ethics hotline; somehow, the only upshot of this I noticed was that my boss, who supported my actions, was fired; the lawyer also left the company, of her own will or not I don't know).
  • The CEO of my company was proposing to offer a "free" service that would become un-free once the user had committed to using the site (I refused to develop the feature and was summarily fired).
  • A customer had uploaded copies of the famous Mohammad cartoons to our website, which offered file-sharing, and my boss wanted to me to delete it to avoid risk of violence (the customer took down the images voluntarily).
  • The CEO wanted to spam millions of people with messages about our site (I talked him out of it).
  • I was assigned to work on a Defense Department subcontract where the prime contractor was insufficiently skilled to fulfill the contract (I asked my CEO to reassign me.)
  • I was leading a project for the Navy to track Soviet submarines, some years after the Soviet Union had ceased to exist; the contracting office pointed out that some day, some other country might develop a submarine threat (I quit.)
  • My company had supported the upload of hundreds of millions of our customers' photos, and then realized how much it cost in disk space; the COO embarked on a program of down-res-ing all these supposedly archival images (I quit.)
share|improve this answer

The single most common ethical pressure you're going to see as a programmer is the pressure to fudge/fake deadlines and estimates. Alot of this other stuff is far worse on an ethical scale, which means that most of the time, you won't see it. But if you stand up and say "Feature X will take 6 weeks", then you are going to get people trying to tell you to revise the estimate down to 4 weeks or 3 weeks ALL THE TIME.

share|improve this answer
1  
I had a client who used to pressure us into revising down estimates. We kept telling him that the estimate is there to be realistic, and the he will be billed for the time it actually takes no matter what the estimate is - so revising them down won't be any good for him anyway. – configurator Dec 23 '10 at 1:46

Being told to copy code (e.g. from another website) that doesn't belong to the company you are working for, which in the case of languages like PHP or ASP would require unauthorized access to the other companies servers (JavaScript, CSS and HTML one can just copy directly -- still illegal).

I've never been asked to do so, but I was accused of it once as part of a larger lawsuit brought against a company I was contracting for. The plaintiff's case against me was ridiculous: their site was using ASP, I built ours from scratch using PHP; not only did I not have access to their servers, I didn't even know the name of the company I was supposedly stealing from until the lawsuit was filed. It actually went to trial, I had to take the stand, but I was completely cleared.

share|improve this answer
1  
Even OSS doesn't necessarily help as most company's won't honour the license terms by opening up what they've used the code for which means they're no better off than had it been proprietary code. There are some key elements of OSS that haven't been tested in court (notably if you use an OSS library how much of the resulting product do you have to open up - just your changes to the library or the whole thing. It can be read both ways and many OSS advocates say it's intended that it should me the whole thing). OSS is still a potential minefield if used commercially. – Jon Hopkins Nov 10 '10 at 11:52
2  
@Jon Hopkins: Anything looks like a legal minefield if you ignore legal professionals and just believe what random people tell you. The licenses are written fairly clearly, and are relatively few in number, and you will not get into trouble unless you're trying to get around the license. – David Thornley Nov 10 '10 at 18:57
show 2 more comments

I was once asked to implement a feature in an order processing system that would create orders, and modify inventory, but not track any record of any 'sale' (or purchase orders or anything else).

It was for cash sales that weren't being reported as earnings.

share|improve this answer

In any profession (not just programming) you will face the ethical dilemma of doing what's best for your company's bottom line versus doing what's best for the paying customer.

Take the recent judgement against Verizon Wireless over its Internet usage fees. Verizon designed the user interface of its phones so that the web browser or widget store could be accessed from the main screen by simply pressing the directional controller -- accidentally or not. Affected customers allege that doing so caused a $1.99 charge to be incurred on their bill if they did not sign up for pre-paid wireless Internet access. Even exiting the browser right away wasn't enough to prevent the charge.

It was estimated that this brought Verizon $300 million per month due to approximately 87 million customers making this "mistake." There's no doubt that the Verizon UI designers and programmers were aware of the consequences of making it easy to bring up the web browser.

As an employee of a company, you should program what your boss tell you to program. But enough Verizon employees were disgusted with this practice to blow the whistle on it.

share|improve this answer

For me what the company itself does is likely to be the single biggest factor. Even the worst behaved software house is likely to be morally better than a defence contractor.

The most significant end of things is industries that completely rely on IT but are morally ambiguous.

On-line gambling, porn and dodgy pharmaceutical sales all spring to mind. These are distinct from, say McDonald's (which some people may see as just as bad) because in these areas there are whole companies that wouldn't or couldn't exist if it weren't for programmers (as opposed to McD's where they'd just find it harder but could ultimately still work around the limitation).

share|improve this answer

I refuse to work in certain industries because of ethical concerns. Mostly that's the tobacco industry, as I don't want to have anything to do with the production and distribution of lethal drugs. Similarly I won't have anything whatsoever to do with any criminal enterprise (so I won't create any software that is likely or certain to be used to break the law).

share|improve this answer

In my opinion there is one ethical issue relevant to any computer work that you could find.
I would label it the ethics of computing.
In a world with so many problems, I believe that it has become incredibly important when programming, to ask yourself: "will this program help someone?" "will this program solve an important problem?" "Is it worth the electricity, plastic, time and energy that will go into its creation and use?"

share|improve this answer

Programmers often end up able to give the ultimate hard no on any feature under development, as a consequence of being in the best position to say if a feature is unfeasible. Intentionally confusing "No, that's impossible" with "No, I disagree with that feature", rather than making arguments in terms of user hostility or improving the product as a whole is a very easy way to win some arguments, but also mildly unethical.

share|improve this answer
show 1 more comment
1 2

Not the answer you're looking for? Browse other questions tagged or ask your own question.