I've worked for several past employers whom I now disrespect (and whose leadership since earned them this disrepute), so this issue isn't merely hypothetical for me.
The principal question isn't about policing and punishment. It's about civic duty as an enlightened human being. Each of us either takes responsibility for our actions and does no harm, or we willingly do. On our part, that necessitates continuous diligence taking an interest in how the products of our work affects others.
Software has become an inescapable part of our society's technical and social infrastructure. Like scientists and engineers, S/W pros bear responsibility for how our work is used. And how it's abused. That's all I'm saying. Each of us has to work out the details for ourself, but dismissing them outright shirks that duty, and I believe, diminishes our humanity bit by bit.
You had shitty leaders I'm sorry about that, but maybe they were trying their best in a difficult situation -- it's probably not all fun choices. Or maybe they were just assholes -- updated.
I do not disagree with you on the "why" -- as Grove said I want to know how? You assume that each person can be trusted to figure this out for themselves -- maybe some people can be, but if you look at the entire population you will end with a distribution where more and more force will need to be used to coerce the fringe elements into compliance -- these fringes can destabilize the entire equilibrium since it might snow ball out of control as more and more people pile on seeing the benefits that it brings.
Then let them prove it! That's one thing an ethical code will ensure.