Business software is Messy and Ugly: This post tosses out an interesting point.
One of the developers asked the question point blank: “What do you do when your managers tell you to make a mess?” I responded: “You don’t take it. Behave like a doctor who’s hospital administrator has just told him that hand-washing is too expensive, and he should stop doing it.”
This post extends the point a bit further.
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.
Put another way, crappy code becomes an ethical issue when third-parties are involved. As a programmer, is it your responsibility to refuse an order that would injure a third party? How sharp or blurry is that line?