This question isn't about ethical behavior in the workplace, like leaking code or stealing. I'm wondering, have you ever been asked to add a feature to an app that you thought was harmful to users, deceitful, or otherwise unethical, even though it met a business objective? Have you felt strongly enough about the users' need for a feature that you felt bad when it wasn't implemented?

+5  A: 

I have managed to avoid a lot of jobs making IE toolbars of various crappitude.

Most people want silent installers, no uninstall function, pop-ups, framed adverts and traffic logging. I've made it a habit to point out to the job-posters why their idea is bad and probably illegal.

Some project details look quite innocent. Something like: "It would be cool if we could have a toolbar that could show the user some of our content based on the site they're currently visiting" They're evil even if they don't know it yet.

Oh and once upon a time, I wrote an app that spammed NET SENDs across multiple subnets. I was a lot more evil when I was 16. Oh those were the days.

+17  A: 

Yes, and it behooves you as a professional to follow your code of ethics, instead of equivocating by saying it's not your call or that it's "just business." That's a cheap refuge for those of weak constitution.

Anyone can pass the buck, it takes a leader with integrity to let his actions flow from his principles.

Pete Michaud
If only we had some sort of required professional society for programmers; like engineers when they get their ring, or doctors with certification.
Well there's always the ACM or IEEE Computer Society. I could never figure out which was better though.
+3  A: 

I have actually encountered this quite a few times when I was doing projects out on RentACoder. I had people that were looking for mailing applications that could send 1 million plus e-mails per hour, with spoofed sending requirements. Some of them were noted in the posting, I simply passed them on, but I actually accepted a bid on a RAC project and had to back out as these types of things came up afterwards.

To me I cannot ethically create software that was going to be used to contribute to the spamming/phishing schemes that are going on today.

Mitchel Sellers
+4  A: 

I've felt bad before for delivering poor quality software - mainly because we weren't given any time to test it (not because I'm a poor quality developer ;). Or, in fact, properly understand what the customer's requirements were. This was in a previous job, where the sales guys would basically say anything the customer wanted to hear provided that they'd buy our product.

Once they got it, they realised that it actually wouldn't do everything that they wanted to do.

So although I didn't have to implement anything which was unethical, I have felt bad about users needing something which wasn't implemented!

Phill Sacre
+4  A: 

Many years ago I was working as a temp in an office where the managers were not very IT literate. They employed a group of temps (me included) to do a very repetitive job with a large number of Excel spreadsheets. It was mind-numbing work so I wrote a macro to do it for me to help pass the time.

Now I had a minor ethical problem - this macro could do all of our work in next to no time which would be great for the managers but not so good for all of us cash-strapped temps who would be out of a job (it was made very clear to us that we were only there to complete this task).

The governement often has inefficiencies like this, and when the coders go to the managers to 'fix' them, the managers refuse because they need to use up their budget or the pork barrel won't roll around to them next year.
Adam Davis
I'm just going to mention that you failed in your ethical duty to your employer. As it is, you only delayed the inevitable firing of everyone. Not to mention, anyone in the group who could get another job wouldn't be too bad off even if they got fired.
toast-it's interesting that you think I failed since I never said what I did in the end in the abve. For the record, I spread the decision to my colleagues and gave them all the macro. Our productivity went sky high and we were all fired. Thanks to a good report we quickly got jobs elsewhere.
+9  A: 

Probably the most common ethical issue you're likely to run into is software piracy, especially integrating open source software into a product in violation of its license. I've never done this myself or been asked to do this, but I have friends who have.

Eli Courtwright
I wonder how many companies still use evalutation versions of WinZip... a lot of places I've been to didn't have paid-for versions!
Phill Sacre
Good point, I've never worked at a place that licenses WinZip, even some that include the eval version in basic machine builds.
Guy Starbuck
I think there's a big difference between using open source against it's license, using a patented solution, and using an incorrectly licensed tool (like say you stole resharper). Respectively I think they may, probably, and won't bring down your company.
+8  A: 

I once turned down an entire project. I didn't feel comfortable helping a cigarette factory double their output.

Why not? People are going to smoke regardless of the factory's output.
If the output increeases, the cost decreases (basic efficiency equation) which allows more smokers to buy cigarettes than would otherwise (basic economics supply/demand equation). It's folly to assume that increasing supply won't increase smoking. Where do the extra cigarettes go?
Adam Davis
You can certainly look at it like "people are going to do it anyway", but there's something to be said for being able to sleep at night knowing that you refused to *help*. I say attaboy, harriyott.
Graeme Perrow
Thanks Graeme. Yeah, I knew someone else would do the project, and they did, and apparently it went well, but you're right - I'm sleeping much better.
I once did exactly the same. The project was a success without me of course, but I sleep at night. I was worried at the time I'd lose my job - I didn't and in the long run it helped rather than hindered my reputation.
Steve Haigh
+3  A: 

A friend of mine resigned over being asked to do something of dubious safety for a chemical firm. I have ultimate respect for that man.

John Nolan
+3  A: 

While working as a student, I was part of a team that wrote an online requisition handling system for our university that replaced a paper-with-carbon-copies system. The person whose job it was to enter the paper requisitions into the ERP system was subsequently let go. I hadn't anticipated that sequence of events, even though it seems obvious now.

But our industry does this. Repetitive tasks can often be programmed. I don't feel bad for implementing online banking system that reduced the number of tellers in the branches.
The ethical path for the organization is to anticipate the loss of the position and plan the re-tasking / re-training of that person in advance. That's a problem outside the scope of what a single programmer can solve.
Bob Cross
+2  A: 

Yes, and like @[mitchel-sellers] above some of them have come about from RentACoder, but I've also been requested to join job boards of php coders-for-hire that are obviously being asked to do black-hat SEO sorts of things.

Ill have to admit it's sometimes hard to draw the line; the lure of a quick payment on some easy work can be quite strong, but after once creating an app that was obviously used to create splogs I've turned away all other requests of that sort.

As far as features and user requirements are concerned, I don't view that as an ethical decision. The best you can do is to make your case that the app you're working on (or the app's users) need a given feature (or vice versa). If you've made a good case then perhaps you'll win out, but in the long run it's up to the business decision makers to determine what's of value, and as long as that's where the responsibility for those decisions lies then that's appropriate. Many's the time I've had to continue development on a table-based web-site when that's clearly (to me) the wrong decision, but is the "right" decision for the business. It's those times when I've found it useful to set my ego aside and do the best work I can under the circumstances.

+2  A: 

Ethics are the set of subjects on which people can have opinions. Morals are your answers to those questions.

i think it is immoral for financial institutions to send details of their customers transactions to the government, but our customer wanted software to aid in the sending of transactions to the government of Canada. The law required that they do, and so they did.

i disagree with it, but i still wrote it.

Ian Boyd
+4  A: 

Many years I turned down some work to implement a number plate recognition which would be linked to a speed-enforcement camera system and then linked to the licensing authority to fine drivers who speed. The company implied that they got a "per-fine" commission of a few pence....

I just wouldn't have been able to tell friends what I would have worked on and feel clean at the same time!

Ray Hayes
You'd think about how many lives your system is saving, and tell them to your friends.Anyway I shouldn't give commisions like the one you describe. It can backfires if the company is tempted to fine cars beneath the speed limits.
+2  A: 

A few years ago a friend of mine wanted us to write a simple DRM system for music. He had some contact that was screaming for it, offering loads of cash.

He knew it wouldn't really work... he just said that as long as it stopped most people it would be good enough. To put his expectations on hackability in perspective: He actually mentioned just doing a simple XOR.

I didn't want any part of it. Eventually, he didn't either.

+2  A: 

I used to work in the IT dept of a telemarketing company. A lot of the work was data cleansing; de-duping calling lists, matching customers and time zones, etc. It was not uncommon for a new list to come in with a lot of duplicates from a list we had just finished. Managers would insist on calling them anyway, since it was for a new (slightly different) cable package. I never felt like that was ethical. That whole business was just unpleasant to work in.

That's why I left, which is what I recommend anyone else do if they feel uncomfortable where they work.

+3  A: 

I had been engaged to write a browser plugin that would insert adds in the text as you browse. My customer had convinced me to do it because it was part of one of those schemes where you get paid to voluntarily be the target of those adds.

However, when the project was completed, the customer asked me to implement a rootkit to make the application "stealthy". I should have known better when I started the project. Then, it became a no-brainer... I walked away.

They found someone else that didn't have a problem writing a rootkit. I am not too proud of this but I know my code is out there somewhere bugging people. I also know that it was re-purposed to do keyword scanning in a spyware app. Yep... I'm really proud of that :(

Francis Beaudet
+3  A: 

Ok, since you asked for honesty, I will actually admit to having done something unethical. It is a bit cryptic but this is all the detail I am willing to go into.

I used to work with a company that was loosely associated with another in the same building. They had a project to scrape information off of another company's website. It basically required entering two integers, from the same set, and getting the result. When the originally agreed to do the project they did not realize that there were billions of combinations.

They were in deep because they had a tight time frame and couldn't DOS the website. They dragged me into a meeting because they were grasping at anyone who could help them. I went out of curiosity (and I was probably flattered to be asked). I remember having no intention of really helping them.

At first my only contribution was to state that it seemed unlikely that there were actually billions of combinations. I cannot fully explain without giving more details but it seemed to me that maintenance of that much data was not possible in this scenario. So I suggested there had to be either a formula or some kind of connection between the two data points that could be inferred if they looked at enough data. I suggested they look for a pattern and work it backwards. I felt ok telling them this because it seemed obvious to me.

Later though one of the developers sent out an e-mail which included an image from the site. When you input a number this image would pop up. The image directly correlated with the inputted number and its association to all the other numbers in the set.

It was an ah-ha moment for me. At this point it was became an intellectual problem and I thought I had divined an answer. Poking through the website we found that there were only say, 800 images. So now we could map all of the numbers in the set to one of 800 images. It drastically reduced the number of calls they had to make because we only had to check one number in each of the 800 image sets.

Looking back on it now I was excited to be part of the solution. I was friends with the guy running the company and he was in a bind and I was glad to help him out. And I was more than a little proud to have come up with the time saver.

But there is no doubt that I was part of a little corporate espionage. Since I didn’t actually do anything but give them the idea I doubt it is illegal. But I feel now that it was unethical, and that I should not have had any part of it.

+5  A: 

I was once asked to build a tool to facilitate sending out spam emails. After refusing to do this and being unable to convince my boss and the company that this course of action was wrong, I tendered my resignation and have never looked back. If we all took the responsibility upon ourselves to not write un-ethical software we might actually be able to change some things. As far as I'm concerned I won't be a part of a company doing things that I find to be un-ethical, there is always another job out there. And if there aren't any positions that won't allow me to do work that I consider ethical then that just means it's time for a career change.

Rob Booth
+2  A: 

I gave up a good systems analyst job to become a developer for a large payday advance company. I initially wanted to turn down this job because of the negative stigma associated with the payday advance industry. But the sign-on bonus and salary they were offering me was too good to pass up. Plus they had assured me that they were a legitimate company giving people a service that was needed and that they were well respected in the community (which turned out to be not true)

Even though they had lawyers making sure that everything the company did was "technically" legal, I had bad feelings about what the company was doing and where they were heading. It seemed like almost everything this company did was on the borderline of ethical and/or legal - which is probably common in the payday advance industry. I worked on several different things there that I had ethical issues with.

I stayed there long enough so that it didn't look bad on my resume. I finally couldn't take working there any longer when I expressed a concern about how something did not seem fair to the customer and one of the senior managers told me that if I was worried about ethics, then I was working for the wrong company because they were in the business of getting money out of people in any way that they could. I'm all for making money, but I'm not for screwing people out of it in order to get it. Luckily my skill set makes it fairly easy for me to find work (knock on wood) and now I'm working in a nice stable job for a reputable company.

+1  A: 

I was once offered a lucrative position at a gambling company where I would be leading a team with the mission of creating an online casino (people in that industry call it "gaming"). In addition to the fact that such a product could not legally operate inside the United States, I had severe work ethic problems with the whole concept (as in, "is this really why I went to school for all those years?").

I turned down the job when I realized that I never wanted to have to admit to my children that I was doing that sort of work for a living.

Bob Cross
+1  A: 

I once turned down a project for Philip Morris. It was an interesting project and it was a technical challenge. I believed that developing this platform would make Philip Morris more competitive (thus selling more cigarettes) and I did not want to be part of that. My company at the time accepted my choice.

Mingus Rude

In my first web developer job, I got to witness how my boss implemented "security features" to protect web pages. Customers required users to logon to the web application before being able to view content, so he made the start page ask for logon credentials, and have users key into the usual username/password textboxes. Once logged in, they get menus and links to access the other pages.

The thing is, those other pages are simply .html. Yeap, if one enters the URL direct to those HTML pages, violia, full page access without logging on. I questioned this design and he just shrugged it off as "not worth the time/cost of developing full-fledge security.... the logon page is just there to make him feel safe.... the users won't know better anyway.... "

I left the company soon after.


to be honest, im wondering if it comes down to cost in the end. not saying i endorse of condone unethical programming, but its through destruction that we learn to be better.

but i would think its down to the effects of ones actions, if the greater good wasnt at stake, and it didnt break any of your core morals, i think most people would have to really think about a unethical one time job.

im not actually a programmer myself, but if nobody hacked my site, i wouldnt have the tight security i have now.

so to a degree, i owe those who test me..they force me to be better

argruge e

Actually I end up like reviewing a porn website, that was awkward because client didn't give us a heads up about the application's nature. Also I turned a similar adult dating website since it doesn't fit to my code.

However it's kinda funny to getting paid to look porn :)

dr. evil
I could see that project dragging on and on if I were doing it. :-)
Mike C.

Once I've developed a bluetooth spammer which marketed as the next generation marketing!

This was about 2005. OK I'm ashamed of that, it was quite cool though.

dr. evil
+3  A: 

I was working on a website for an online magazine and was asked to find a way to show articles from other related magazines "in our own skin", as if they had come from us.

I told him "that would be copyright infringement" and he backed down after that. It's not like he didn't know it would infringe, but thanks to me showing him that I actually cared about it, he dropped the issue.

Kevin Laity