What I admire about professions like Engineering and Medicine
In short, their Code of Ethics.
Try this: Employ an Engineer. Ask her to slap together a bridge. The answer will be no
. You cannot badger her with talk of how since You Hold The Gold, You Make The Rules. You cannot cajole her with talk of how the department needs to make its numbers, and that means getting construction done by the end of the quarter.
Engineers have a certain line that they will not, cannot
cross. Doctors work the same way. I don’t agree with everything in this particular post, but one paragraph resonated with me:
Behave like a doctor whose hospital administrator has just told him that hand-washing is too expensive, and he should stop doing it.
Now, I don’t agree that you should refuse to slap together quick and dirty code that will be hell to maintain when told to do so. Whether that is a good idea or not is a judgment call. I choose to write software as cleanly as I know how within the constraints of my relationship with my client or employer. I choose to evangelize my judgment on the matter strongly.
But I don’t think I have the right to out-and-out refuse to do so when my employer or client insists. They suffer the consequences of software that is difficult to maintain, so they and they alone have the last word on the subject.
I don’t think I have the right to refuse to slap together quick and dirty code when my employer or client insists. However, if I am asked to develop software that is insecure and places private user data at risk, I will make the personal choice of saying no.
The 7 Habits of Highly Effective People is one of the most important books I have ever read. Each of the seven habits has helped me find and travel the path that brings meaning to my life. When I feel lost, I return to my well-thumbed copy and it reconnects me to my values. Very highly recommended.
Where I think the advice fits is where third parties—like users—are the ones who suffer the consequences. Doctors wash their hands because their patients’ health is at risk if they don’t. If a hospital administrator asks for a cover page on the TPS reports, a doctor cannot argue that she will not do it because it is inefficient. If it won’t kill a patient, the doctor must accommodate the administrator’s decision.
In the case of software development, if I am asked to develop software that is insecure and places private user data at risk, I will make the personal choice of saying no.
Of course, I do not have the protection of the law. If I am fired for doing so, I have no recourse. I can’t even collect unemployment benefits, I will be deemed to have been dismissed for cause. Programmers work at will, which means that you must value
your ethics very highly if you are to place your livelihood on the line for it.
To emphasize, I have strong opinions about subjects like iterative development and empowering teams. I think that some models of software project management are fundamentally flawed. But those things are matters of judgment. I can be swayed into going against my instincts if the person who bears the consequences of the decision insists on following their judgment instead. My ethics are a different matter.
And in the matter of ethics, I admire professionals who take a stand.Update
: I also admire midwives