What is an ethical dilemma in software engineering, and why did Berenbach and Broy give the typical ones names?
A situation in which a professional must choose between competing values, such as personal against professional ones; naming the recurring patterns raises awareness and so makes them happen less often.
Berenbach and Broy (Professional and Ethical Dilemmas in Software Engineering, IEEE Computer, 2009) identified nine dilemmas that recur in real projects, named them and placed them in the context of the IEEE code of conduct. None of them needs a villain: each one puts an ordinary engineer between two things they care about, for example keeping the manager happy and telling the customer the truth. A pattern with a name is easier to recognise while you are in it, and easier to raise in a meeting.
The nine: Mission impossible, Mea culpa, Rush job, Not my problem, Red lies, Fictionware vs. vaporware, Nondiligence, Canceled vacation, Sweep it under the rug.