Sunday, April 27, 2008

The ethical responsibilities of programmers.

In any profession, there is a certain ethical responsibility that is implied when you choose to fulfill the requirements of the job. For certain professions, the implications of ignoring your ethical responsibility can be disastrous. Think of what might happen if you doctor decided that he wanted to save a few bucks and give placebo instead of actual antibiotics to patients. But with other professions, the line between what is acceptable for profits and career advancement vs your ethical responsibility may not be so clear.

In programming, it is not often the case that we will never work on anything critical to the lives of the general public. If Facebook suddenly suffered from a catastrophic failure, no lives would be lost. If Microsoft Office suddenly decided to give a STOP: 0x0ff2ee80 error, someone would not drop dead.

On the other hand, programmers often work on critical systems such as gas and electric management systems, traffic lights, automotive safety systems, medical equipment programming and many other critical uses. In either case, I believe that there is a strong ethical responsibility to deliver the best code that you are capable of, and if the program is going to be used for a "critical" use it should go through the most exhaustive testing possible to ensure that it will not fail under any foreseeable circumstance. Failure to do exhaustive testing would be gross negligence, and that programmer (or manager) would be responsible for any lives lost or affected by their decision.