?
Software Architecture has ethical consequences
Michael Nygard
The ethical diMEnSion in software was obvious when we were talking about civil rights, identity theft, or malicious software . But it arises the less exotic circumstances. IF programs is successful, they affect the lives of thousands or millions of people. That impact can be positive or negative. The program can make their lives better or worse-even if just in minute proportions.
Every time I make a decision on how a program behaves, I am really decid-ing what my users can and cannot does, in ways More inflexible than law. There is no appeals court for required fields or mandatory workflow.
Another-think about it's in terms of multipliers. Think the last major of Internet worm, or when a big geek movie came out. No doubt, you heard or read a stories about what much productivity this thing would cost the coun-try. You can always find some analyst with a estimate of outrageous damages, blamed on anything that takes people away from th EIR desks. The real moral of this story isn ' t on innumeracy in the press, or self-aggrandizing accoun-tants. It's about multipliers, and the effect they can has.
Suppose you has a decision to make about a particular feature. You can do it with the easy-to-a day, or the hard-on-the-week. Which should do it? Suppose that's the easy-to-do makes four new fields required, whereas doing it's the hard-to-do makes the program smart enough to Handle incomplete data. Which should do it?
?
?? Required fields seem innocuous, but they is always a imposition of your on users. They force users to gather more information before starting their jobs. This often means they has to keep their data in post-it notes until they ' ve got everything together at the same time, res Ulting in lost data, delays, and general frustration.
As an analogy, suppose I ' m putting-a sign on my building. Is it OK to mount the sign just six feet up in the wall, forcing pedestrians to duck or go around it? It's easier for me-to-hang the sign if I don ' t need a ladder and scaffold, and the sign wouldn ' t even block the sidewalk. I get to save a hour installing the sign, at the expense of taking II seconds away from every pedestrian passing my stor E. Over the long run, all of those two-second diversions is going to add-to-many, many times more than the hour that I Saved.
It's not ethical to worsen the lives of others, even a small bit, just to make things easy for yourself. Successful software affects millions of people. Every decision you make imposes your would on your users. Always be mindful of the impact your decisions has on those people. You should is willing to bear large burdens to ease theirs.
Software Architecture has ethical consequences