However, demanding this kind of ethical decision from programmers is really unfair.
What would help, IMO, is a culture of whistleblowing, with protections and assurances in place so programmers suffer no consequences if "forced" to make an unethical decision. And yes, this would involve either Government or another kind of entity with superior authority over the company, which is in itself a whole different can of worms.