A Programmer's Code of Ethics
- My programs encode the rules of modern society. I will take full responsibility for the programs I write.
- I will not write a program that intentionally fails to operate.
- I will not write a program that refuses to do tomorrow what it was able to do yesterday.
- I will not create a single point of failure, whether technical or political.
- I will not encode foolish rules just because someone paid me to do it.
- I will not give people what they want if what they want is not good enough.
- I will not stop people from taking my program's ideas and making them better.
- I will write programs to help each person produce their best, not to help the masses produce mediocrity.
- I will correct those who believe my program's failure is anyone's fault but mine.
- I will write programs to benefit even the people who don't deserve it.
Condensed "New Testament" Version
- Don't write for others a program you wouldn't want written for
Do I always follow all the above rules perfectly? Certainly not. In fact, I think I've broken every single one of them.
But thinking over all those situations and knowing what I know now, I'm pretty sure that in every case, it would have been better if I'd done the right thing. The exceptions don't feel like the right move; they just feel dirty.
That's how I know I'm on the right track.
Update 2010/05/22: Based on a suggestion from Chris Frey, slightly rephrased point #3.
ssh+2FA to all your machines, anywhere, without opening firewall ports.