写点什么

软件行业的道德、价值与实践

  • 2017-11-12
  • 本文字数:2313 字

    阅读完需:约 8 分钟

在 Meduim 网站最近的一篇博文中, Christiaan Verwijs 提出了授予软件开发人员的权力是否应该以道德行为准则为基础的疑问。Verwijs 在标题为《软件开发人员的道德规范?》一文中解释说,软件开发人员对世界具有重大影响,并且他们具有“保护隐私、开发安全应用程序以及通过构建产品以促进产品多样性的责任。” Verwijs 继续阐述说:

“软件开发者”是一种职业,可与律师或医生相媲美。任何一门职业所具备的典型特征就是它会有自己的道德准则,就好比医生遵循的希波克拉底誓言或是一些工程师所遵循的阿基米德誓言一样。

2015 年大众公司的丑闻向我们展示了一个伦理妥协的极端案例,最终导致一名工程师在今年 8 月被判刑。这名工程师通过“在尾气排放控制模块中设计巧妙且隐蔽的算法,以侦测汽车何时进行排放测试”,操控实际的尾气排放测试结果。

大众公司丑闻发生后,我们与 IEEE Spectrum 杂志进行了沟通。以色列内盖夫 Gurion 大学的商业伦理学教授 Yotam Lurie 博士评论说:

大众软件工程师作为一名专家,竟忽视了自己的信托责任,这着实令人震惊。为确保安全性,即使效率或者经济性并不高,但专家在整个组织内部是具有半监管责任的,在该起事件中,具体指的是环境安全。

在今年早些时候的采访中, Scrum.org 的产品负责人 Dave West 对可能导致道德歧义的情况进行了评论:

如果你被迫要求按时完成任务,或者当事情关乎你个人的生计,你就很难定夺孰对孰错了。道德准则可提供环境和框架,以支持专业人士。我很希望能够看到一个标准化的行业道德准则。而我们自己的道德准则是不断完成提升航天器类软件专业性的使命。

Robert C. Martin (Bob 叔叔)在 9 月份向 InfoQ 的 Ben Linders发表了他自己关于程序员誓言的提议,其中涉及到 9 个关于工艺、透明度和反馈环的声明。该声明首先提到,“我不会编写不利的程序代码”,马丁继续解释说:

软件开发者可对用户造成两种不利。 第一个是最明显的,就是开发的软件可能会出现运行错误。 我们应承诺尽最大努力提供不会出现运行错误的软件,而这似乎也是合乎情理的。

进而,Martin 继续阐述构建软件的职业责任,即软件结构设计应将后期是否能够对该软件进行灵活调整考虑在内。

程序员时常会对用户产生的第二种不利影响则体现在软件的结构设计上。用户通常都希望一款软件可以进行灵活的调整或更改,毕竟软件应体现出灵活性,用户需要他们的软件系统足以跟得上社会和技术的快速发展变化,所以承诺尽全力维护软件的灵活性,这应当不算过分。

Lurie 在其 2015 年发表的题为“软件工程师的职业道德:道德框架”的文章中给出了一系列可能会在 SDLC 各阶段均涉及到的道德问题, Lurie 解释了软件开发中对道德思考的需求:

在该条件下,软件开发者(专家)和终端用户(客户)之间将存在某种权力关系,这必然需要基于道德制衡使其能够正规化,以确保滥用现象的发生…

Lurie 进一步解释说,有些行为通常被认为是单纯的技术活动,这些应给予伦理道德的思考:

更具体地说,这些看起来貌似属于软件包的关键技术特性,如质量、可用性、可靠性、精确性、适用性和安全性,实际上决定了该产品具有什么功能以及如何为客户提供服务的问题。软件产品的这些关键技术特性实则具有重要的道德影响。

在 ThoughtWorks 近期的一篇关于构建软件、技术原理的“核心价值和实践”博文中, Evan Bottcher 分享了“软件构建工艺”中所反映的“基础软件工程价值”的见解。

Bottcher 写到:

价值观是信念的一种描述,如果这些属性存在,我们将能够构建软件,并且不仅可满足用户和客户的需求,而且有信心在短期或长期时间段内顺应快速的软件变更。

Bottcher 以 XP 的价值观和原则为基础,提出了快速反馈、简洁、可重复性和零冗余代码四个核心价值。 这些反过来还将支持 8 个核心工程实践:

  • 设计简单
  • 代码集体所有权
  • 结对编程
  • 重构
  • 测试驱动设计
  • 持续集成
  • 重复性任务的自动化
  • 垂直切片

Bottcher 提到,这些价值观和原则应该适用于所有可交付的成果,包括 MVP 在内。

当一款软件真正面临被抛弃时,是应该做出权衡的。 然而,这些均为一些核心价值观以及实践做法,即便是短期交付的成果,仍存在不确定性。 放弃采纳这些实践做法将降低你的效率,即使在短期内也是一样。

Martin 还强调了不要向程序员誓言相关的一些做法妥协的重要性。

每个程序员都有被过度结构化和混乱的代码严重阻碍的经历。这种代码写起来看似简单,但却使系统处于一个令每个人都低效的状态,其他人效率越低,他们便会觉得采纳捷径的压力越大,这使得系统处于不断恶化的状态。 请重复我的话:“若要走得快,首先需做得好”

Verwijs 所描述的软件开发人员的道德规范,围绕以用户为中心、开发人员与团队间关系提出了道德规范的相关建议,以及与故障和复杂性、透明度、质量和用于保护用户安全和隐私的快速反馈环的诚信度问题。Verwijs 的道德规范是通过实践来呈现的。 他解释了采用单一代码的困难:

这些道德规范涉及的其中一个问题是,仅当绝大多数开发人员接受这些道德规范并且它们成为教育培训的一部分以后,才会产生效果。我们当然还未达到该程度。

在大众丑闻这个事件里,被判刑的工程师被要求服刑 40 个月,并支付 20 万美元的罚金,虽然这名工程师并没有策划该起丑闻,但检方的备忘录指出:

该名工程师明确自己所作所为是错误的,但他通过安慰自己说,自己仅仅是一个工程师,主要工作就是不管可行与否,都要提出切实可靠的解决方案,以此来降低自己由于诈骗行为产生的道德负罪感。

查看英文原文: Ethics, Values and Practices for Software Professionals


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-11-12 18:005565

评论

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

图算法、图数据库在风控场景的应用

NebulaGraph

图数据库 风控

大道至简,自治为王 | 2022年12月《中国数据库行业分析报告》精彩抢先看

墨天轮

数据库 Serverless 云数据库 国产数据库 polarDB

女生参加前端培训学习有前途吗?

小谷哥

TypeScript 前端工程最佳实践

京东科技开发者

typescript 前端 前端开发 编程语言】

这个团队敢闯、会创,北京交通大学团队结合昇思MindSpore技术助力打造“智慧安全交通”

极客天地

如何通过Java提取PDF中的图片

Geek_249eec

Java PDF 图片

论文复现丨基于ModelArts进行图像风格化绘画

华为云开发者联盟

人工智能 华为云 12 月 PK 榜

头像类NFT的未来,实际价值在哪里?

博文视点Broadview

校招面试真题 | 你的期望薪资是多少?为什么?

霍格沃兹测试开发学社

【kafka运维】Leader重新选举运维脚本

石臻臻的杂货铺

kafka 运维

创元集团的数智化实践 这次选择了和火山引擎VeDI搭档

字节跳动数据平台

大数据 数据治理 12 月 PK 榜

线上线下大数据培训机构应该怎么选

小谷哥

【JVM实战系列】「监控调优体系」实战开发arthas-spring-boot-starter监控你的微服务是否健康!

码界西柚

Java JVM Alibaba Arthas 12 月 PK 榜

MyBatis是如何初始化的

华为云开发者联盟

Java 开发 华为云 12 月 PK 榜

数据人PK也无人,为什么业务部门的数据需求都是急活?

雨果

数据开发 数据工程师 数据服务

启科 QuSaaS 真随机数解决方案与 Amazon Braket 结合实践

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 Hero 专栏

【基础知识】PCB板上的字母数字是什么意思,代表哪些元器件?

华秋PCB

元器件 PCB PCB设计

技术分享 | 测试的本质是什么?

霍格沃兹测试开发学社

企业大数据价值最大化的关键因素

元年技术洞察

大数据 数据中台 数字化转型

探索科创服务升级之路,星创科服“贴身陪伴”硬科技冠军企业成长

硬科技星球

什么是数据管理?看完这篇你一定有收获

雨果

数据管理

学习大数据技术后的就业前景怎么样

小谷哥

如何在云原生环境中实现安全左移?

SEAL安全

云原生 安全 DevSecOps 12 月 PK 榜

车载LED显示屏的4大性能指标

Dylan

LED显示屏 户外LED显示屏 led显示屏厂家

带你读AI论文丨针对文字识别的多模态半监督方法

华为云开发者联盟

人工智能 华为云 文字识别 12 月 PK 榜

数据中台选型前必读(七):解读数据服务的四大关键技术

雨果

数据中台 DaaS数据即服务

计算机科学通识-01-电子计算机发展史

邱比特讲编程

计算机基础 计算机 计算机教育

云上安全办公,就用华为云桌面

科技说

远程灵活办公,就用华为云桌面

科技说

前端培训机构学习前端开发难度大吗

小谷哥

武汉java培训后可以选择那些就业方向

小谷哥

软件行业的道德、价值与实践_语言 & 开发_Rafiq Gemmail_InfoQ精选文章