阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

为什么说软件开发人员应考虑道德问题

  • 2018-03-29
  • 本文字数:1945 字

    阅读完需:约 6 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

很多影响人们行为的软件,在创建时并未认真考虑道德上的建设。软件开发人员需扪心自问一些道德问题,例如“哪些人将会受影响?”、“哪些人会从中受到伤害”,以及“会对哪些人有利,抑或是产生不利?”。开发人员应该尽量回答这些问题,但对无法回答的问题也应坦然面对。

QCon 伦敦 2018 大会上,Circonus 的 CEO Theo Schlossnagle 就软件开发人员的职业道德问题做了演讲。InfoQ 以问答、展示、总结和文章覆盖本次大会。

InfoQ 采访了 Schlossnagle,内容涉及道德问题的重要性、软件开发人员在集成道德问题上应该怎么做,并探讨了不道德软件的后果。

InfoQ:为什么道德问题对软件开发人员十分重要?

Theo Schlossnagle:如果我们看看周边的人,做我们这一行的,编写代码并做出一些影响用户的决策。但是我们中的绝大多数并未受过严格的道德操守教育。在高中时期,没有上过道德课程;在大学期间,也没有参加过道德课程。这并不意味着我们不明白道德问题。伦理对人类而言是近乎天生的。

存在讨论道德问题的剧本,也存在思考道德问题的剧本,但是并不存在一个给出了答案的剧本。问题在于,人们的心理模式是自身去回答这些问题,而不是回避问题并视若无睹。

软件开发已经历了三十多年发展历程,最近十到十五年中,开发呈现出超级加速态势。影响人类行为的软件无处不在,但我们在创建软件时,并未围绕其进行强大的道德建设。

InfoQ: 您能举例说明开发人员可能会面对哪些道德问题吗?

Schlossnagle: 当然。在机场,有一些给皂机会自动检测使用者的伸手情况。但是,自动装置无法检测到非裔美国人的伸手情况。使用者需要在给皂器下放置一张白纸才能触发给皂装置。究其原因,并非在于工程师认为剥夺非裔美国人和黑肤色人的利益非常有趣的。这是一个缺失了道德质疑这一层的千层蛋糕。只是因为人们选择不提出质疑,并非是在受到质疑后回应以“我们就是要做坏事”。

重要的是我们应具有一个提出问题的开放式框架,因为道德问题几乎总是开放式的。例如,这将会对哪些人产生影响? 软件会出现什么问题?问题并非在于软件缺陷,并非在于代码行,并非在软件崩溃时,而是在于不对哪些人提供服务? 这些问题都是很难回答的,我们可能会搞砸。我希望人们能做到提出问题,并将其作为软件开发周期的一部分。

就肤色检测器而言,我根本不知道它有什么技术可言。但是如果这是一个简单的计算机视觉系统,其中可能使用了一个计算机视觉软件库。对于计算机视觉库而言,或许应该对在错误模型上训练肤色检测的后果进行一场小规模的道德辩论? 例如,我们还可以检测曲奇饼上是否存在像是巧克力块的老鼠粪便。还存在其它一些场景,不在一群不同的人身上进行训练,我们就有可能会剥夺少数人的权利。

InfoQ: 开发人员应如何将道德考虑集成于他们的工作中?

Schlossnagle:我认为软件开发人员已经做了大量工作,他们在开发代码时会尽量考虑安全问题。但是,他们并没有质疑自己,这样做会有什么道德后果?谁会因此受到伤害?谁会因此高人一等?会对谁有利或产生不利? 他们没有质疑这些问题。我的目标是将这些自然而然的过程引入到软件开发中。

有人应就此提出问题。每个开发者都会从你这里了解软件的受众是什么人。每位逐行编写代码行的底层开发人员,都应有能力将这些问题合并到他们所做的工作中,并且这种能力应从上到下贯穿始终。

InfoQ:开发人员应被问及哪些类型的问题?

Schlossnagle:问题高度依赖于开发人员的工作,他们使用哪种类型的软件。我自己要问的一个简单问题就是,这是否会对某些人造成伤害。我认为,人们所写的软件最终都会与人进行交互。我们是软件的最终消费者。我们构建软件是为了改善人类的生活,而不是让机器人的生活变得更好。即使我们这样做了,也是因为机器人会使人类的生活变得更好。链条的末端总是以人类作为技术的受众。只需质疑我的代码将如何被人所使用。

InfoQ:在支持道德问题上,软件社区应如何做?

Schlossnagle:鼓励软件社区在开发过程中专门增加道德问题。或许首先应在它们的代码库中添加一个给出问题和答案的 ethicalconsiderations.md 文件,并鼓励 Pull 请求。

InfoQ:不道德软件是否存在后果?

Schlossnagle:是的。我认为如果一个人做了不道德的事情,应该具有一定的法律后果。但伦理并不是由惩罚驱动的,而是由相互间的社会利益驱动的。在大学期间,我学会了如何提出问题,甚至是一些难以回答的问题,并坦然面对一些我至今依然无法回答的问题。道德问题就是其中之一。

Theo Schlossnagle 曾在 InfoQ 播客上探讨过“软件伦理与正确做事的必要性”问题。InfoQ 也曾就“更好的交流实现更好的工程”问题采访过他。

查看英文原文: Why Software Developers Should Take Ethics Into Consideration

2018-03-29 19:002663
用户头像

发布了 391 篇内容, 共 127.0 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

商务部CECBC区块链专委会副主任、数字经济商学院院长吴桐:建立完善稳健的基础设施 加速区块链与产业深度融合

CECBC

区块链

人民日报——大力发展数字经济

CECBC

数字经济

关于价值、目标、任务的思考

L3C老司机

深入理解MVCC与间隙锁

林一

MySQL MVCC

重学JS | ES6既有Set,为啥还要有Weak Set?

梁龙先森

JavaScript 大前端 编程语言 28天写作

「产品经理训练营」第二章作业

Sòrγy_じò ぴé

产品经理训练营 极客大学产品经理训练营 产品训练营

Python 中 lru_cache 的使用和实现

zikcheng

Python 源码分析 LRU

认识产品经理

ALone

产品 0 期 - 第二周作业

Jxin

能源革命背后的牛公司 (28天写作 Day16/28)

mtfelix

28天写作 能源革命

「产品经理训练营」作业02:利益相关方识别

狷介

产品经理训练营

Dockerfile ENV 使用指南

K8sCat

Docker Dockerfile ENV ARG

五分钟学会模板模式

田维常

mybatis

泪目!为什么Flutter能最好地改变移动开发?成功收获美团,小米安卓offer

欢喜学安卓

android 程序员 面试 移动开发

老师讲的真棒!2021Android精选面试实战总结整理,分享PDF高清版

欢喜学安卓

android 程序员 面试 移动开发

第4周课后练习-系统架构

潘涛

架构师训练营 4 期

第4周总结-系统架构

潘涛

架构师训练营 4 期

“区块链+产业应用”系列研讨会首场“大健康产业篇”在深圳举行

CECBC

健康产业

CSS(二)——CSS核心基础

程序员的时光

CSS 程序员 七日更 28天写作

一文带你读懂:设计模式的六大原则

后台技术汇

28天写作

「架构师训练营 4 期」 第四周 - 002

凯迪

架构师训练营 4 期 第4周

引花眠

架构师训练营 4 期

高效学习:如何学得更快更好

石云升

学习 28天写作

企业是如何选择技术栈来做离线数仓

大数据老哥

优雅编码 | 18个Javascript代码的小技巧

devpoint

代码优化 优雅

Scrum Patterns:Sprint计划会(译)

Bruce Talk

敏捷 译文 Agile Scrum Patterns

Nginx架构赏析

旺旺

nginx 架构 中间件

算法:匹配有效的括号,Swift 5中UITest从入门到精通, Swift 5 Viper Template,极客大学产品经理训练营 产品思维和产品意识, John 易筋 ARTS 打卡 Week 36

John(易筋)

ARTS 打卡计划 极客大学产品经理训练营 Swift 5 UITest Swift 5 Viper Template

自动泊车初步了解 (28天写作 Day17/28)

mtfelix

自动驾驶 28天写作 自动泊车

JavaScript06 - 操作符

Mr.Cactus

JavaScript

C++静态链接符号冲突的几种处理方法

ElvinYang

为什么说软件开发人员应考虑道德问题_语言 & 开发_Ben Linders_InfoQ精选文章