I want to ask you a question about ethics.
Let's pretend you've been working under contract to write a handful of components for some larger project. Nobody told you what the larger project really is, but the contract pays well and you've been given all the information you need to finish your work.
About the time you've reached the halfway point in your work, you uncover the goal of the larger project. The project is an application that will email thousands and thousands of phishy messages and collect information from users through a website. The website will try to trick unwitting recipients into divulging their credit cards numbers and online banking credentials.
At this point, you have to make a choice. Let keep this hypothetical questions simple, and restrict you to one of two choices:
Do you consider #1 unethical? What about #2?
Let's throw in one more option:
3. Keep working on the project, but inject some monkey business.
What if, for #3, you delivered some code like this:
Or this:
Or this:
Those code snippets give the software problems that are hard to track down. Is #3 being unethical, or being a vigilante?
Note: I've never been in such a situation - I'm just taking a poll.
Comments
arnulfo: Yes, I tried to keep this as a simple black and white scenario. I'm just curious how different people will react.
However if you take the $$ after becoming aware of the illegal nature of the project, you become a party to the illegal stuff they are doing and if you try sabotage, then you are guilty of and liable for doing them malicious harm, however much it might be deserved.
Stop working on the projcet, and get out of the contract. If you keep working on something you think is illegal/immoral/unethical, would you really be doing your best work? And if so, could you live with yourself?
As for staying on with the project, and intentionally sabotaging it, that would definitely open yourself up to liability issues.
I think the best decision would be to break the contract, and do something to counteract what you think is coming. If it's illegal, contact the police, if it's immoral/unethical, work on a counter to it.
I agree this scenario is unlikely, but it would make a great movie, wouldn't it?
I didn't include any option for contacting the authorities. After all, if such a scenario were to occur it would probably be an international setup - just to muddy the legal waters.
Supose you working on data mining components and you find out that these components will be used in a profiling and tracking application to monitor email. This software will be used
--to detect terrorist activity potentially saving lives
-- tracking of political dissidentes in different countries, potentially taking lives.
-- spamming and whatever creativity brings
It might be illegal but taking measures against it might be even treason.
quit, sabotage, continue?
That said, I would be very hesitant to enter into any contract to build a specific component for a specific client where I did not know exactly what my work would be used for. The money offered would have to be substantial, or the client someone I personally trusted.
Should I, all unlikeliness aside, end up in exactly the scenario proposed, I would finish the job and walk away. I might try to ensure that the software produced detailed logs in a hard-to-find place. I might also try to ensure that e-mails produced by the software were somehow watermarked and easily identifiable.
In fact, an analagous scenario scenario happened to me before. I'll write it up as a blog entry.
Contact the authorities as a co-operating witness (aka whistle-blower) (i.e. keep taking the money until the authorities have enough information to successfully prosecute). If the solution is not solvable locally, seek local immunity for the sabotage.
And when it comes right down to it, all most of us as developers ever create are tools. There are very few types of applications I can think of that couldn't be used in beneficial ways as well as detrimental ways (viruses and worms are the obvious choices, but some of the technology is useful in other areas).
Good point - and if the software isn't deployed - could law enforcement do anything? The defense could always argue that the code was going to be used in a legitimate ecommerce site.
Let´s say that there are issues with all the alternatives.
1. If you continue you would be cooperating with Big Bro. As The NRA said; guns don´t kill, people do, but guns are for killing and in this case the developer knows that he is building a tool for government repression, for whatever reasons.
2. If you quit your avoiding your duty to protect country against terrorism. If the tool can be used for repressing no violent people tough luck.
3. If you sabotage the system you are violating the trust that was put on you and maybe putting your country on jeopardy
Nearly everyone has mentioned soemthing along the lines of "contact the authorities".
If it was so easy to get illegal web sites into trouble - why are there so many of them? Why do I still get nigerian bank scam emails everyday?
Code your component exactly to spec and tell them you have other commitments and leave, but finish your code.
I'd make sure I had *very* good reason to believe what I believe before taking such drastic steps.
Nearly everyone has mentioned soemthing along the lines of "contact the authorities".
If it was so easy to get illegal web sites into trouble - why are there so many of them? Why do I still get nigerian bank scam emails everyday?"
Posters to your blog subscribe to a given set of ethics, which apparently not everyone does.
My own answer would be to contact a lawyer. I have been in positions where I'm writing code for an organization which does some unethical things by proxy (supporting companies that IMO do unethical things). I also buy index stocks that represent companies that do unethical things. I also get goods that I'm sure some of are made under unethical circumstances. What am I doing about it: not much.
I haven't been in this position but I have had significant problems convincing IT recruiters that I will not work for killers, conmen or extortionists. Too many of them say, yeah, sure, but how about this online gambling site.
I would try the FBI or your state's Attorney General. I would also contact MasterCard and/or Visa. If this is a big enough operation, the credit card companies would have more than enough reason to go after the people behind the site.
1. Are legally and ethically responsible for your work, and hold public safety paramount
2. Adhere to a strict code of ethics
(from: www.theregister.co.uk/...)
Both of those engineering requirements would require you to break your contract or act as a whistle-blower as C.J. Anderson suggested