Software Architecture Has Ethical Consequences

?

Software Architecture Has Ethical Consequences

Michael Nygard

THE ETHiCAl diMEnSion in SoFTWARE is obvious when we are talking about civil rights, identity theft, or malicious software. But it arises in less exotic circumstances. If programs are 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 about how a program behaves, I am really decid- ing what my users can and cannot do, in ways more inflexible than law. There is no appeals court for required fields or mandatory workflow.

Another way to think about it is in terms of multipliers. Think back to the last major Internet worm, or when a big geek movie came out. No doubt, you heard or read a story about how much productivity this thing would cost the coun- try. You can always find some analyst with an estimate of outrageous damages, blamed on anything that takes people away from their desks. The real moral of this story isn’t about innumeracy in the press, or self-aggrandizing accoun- tants. It’s about multipliers, and the effect they can have.

Suppose you have a decision to make about a particular feature. You can do it the easy way in about a day, or the hard way in about a week. Which way should you do it? Suppose that the easy way makes four new fields required, whereas doing it the hard way makes the program smart enough to handle incomplete data. Which way should you do it?

?

??Required fields seem innocuous, but they are always an imposition of your will on users. They force users to gather more information before starting their jobs. This often means they have to keep their data on Post-It notes until they’ve got everything together at the same time, resulting in lost data, delays, and general frustration.

As an analogy, suppose I’m putting up a sign on my building. Is it OK to mount the sign just six feet up on 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 an hour installing the sign, at the expense of taking two seconds away from every pedestrian passing my store. Over the long run, all of those two-second diversions are going to add up 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 will on your users. Always be mindful of the impact your decisions have on those people. You should be willing to bear large burdens to ease theirs.

时间: 2024-10-10 10:46:23

Software Architecture Has Ethical Consequences的相关文章

Software architecture vs code

Software architecture vs code I presented two talks last week with the title "Software architecture vs code" - first as the opening keynote for the inaugural Software Design and Development conference and also the next day as a regular conferenc

software architecture

12 what is a stakeholder. 11 what kind is UML? UML is a seminotation way. 10 List notation ways for architecture documentation and give their differences. there are three notation ways: Informal notations, semiformal Notation and Formal notations. in

Inside Cisco IOS Software Architecture(第一章,系统基础知识)

由于本书写于1990年代,CEF还是cisco最新的黑科技. 所以其中很多关于操作系统的内容已经不太正确.Cisco的操作系统也从最开始的IOS一种形式到后来的Linux做control plane的IOS,IOS-XR,IOS-XE,NX-OS 等等等. 我相信书中提到的很多玩意已经不再使用,或者起码有所变化,但是由于没有更新的版本的书讲新的操作系统的内部,所以还是只能从这本书上了解.从学习的角度来看,从一个比较原始的形态学习也有助于一步步理解更复杂的系统. 所以不要过分纠结书的年代和细节内容

《Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects》Vol.2 笔记

GoF的23种经典模式使得设计模式开始成为程序员的通用语言.<Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects> Volume 2主要总结了并行系统中四大类16种设计模式.这里是一个摘录整理. Service Access and Configuration Wrapper Facade 它将底层的系统级API包装成加面向对象的,统一的和可移植的接口.像Thread, Mu

Agile software architecture design document style..( sketches and no UMLs)

http://www.infoq.com/articles/agile-software-architecture-sketches-NoUML If you're working in an agile software development team at the moment, take a look around at your environment. Whether it's physical or virtual, there's likely to be a story wal

CS 350 Software Design / SE 310 Software Architecture

CS 350 Software Design / SE 310 Software Architecture I Homework Assignment - Part 1 NOTE: this is a very demanding project and it will require a lot of effort and a substantial amount of time. For part 1 of this project, spending a just few hours or

software architecture slide 2

34 33 what are cohension levels from bad to good? coincidental logical temporal procedural communicational sequential functional 32 what are coupling levels from bad to good? content common external control stamp data message no coupling 31 what is c

software architecture slide 3

1 what is an architectural pattern? An architectural pattern is a pacakge of decisions that is found repeatedly in practice has known properties that permit reuse and describes a class of architectures

Building Maintainable Software-java篇之Keep Architecture Components Balanced

Building encapsulation boundaries is a crucial skill in software architecture. -George H. Fairbanks in Just Enough Architecture Guideline: ? Balance the number and relative size of top-level components in your code. ? Do this by organizing source cod