写点什么

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

  • 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:005428

评论

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

济源钢铁∣数智化转型实现超越周期的增长

用友BIP

智能制造

全球采购,打造企业韧性供应链

用友BIP

全球采购

Mac电脑视频处理软件 VideoProc Converter 4K直装中文版

胖墩儿不胖y

Mac软件 视频处理工具 视频工具

数据库进阶教程:数据模型、索引与并发控制

百度开发者中心

玩转HarmonyOS专项测试,轻松上架“五星”高品质应用

HarmonyOS开发者

“套壳”OpenAI,注定消亡!全球首个 20 万字大模型发布丨 RTE 开发者日报 Vol.63

声网

人工智能 RTE 实时互动

为什么都在说实时数据传输?

RestCloud

ETL 实时数据 CDC

专家观点∣小议事项会计兼评用友事项会计中台产品

用友BIP

事项会计 冶金

软件测试/测试开发丨ChatGPT自动生成基于PO的数据驱动测试框架

测试人

Python 人工智能 软件测试 数据驱动 ChatGPT

关于企业如何替换FTP和加速FTP的问题

镭速

替换FTP 加速FTP

九章云极DataCanvas公司入选可信开源大模型产业推进方阵首批成员

九章云极DataCanvas

新华网专访樊冠军:让YonGPT成为企业服务领域的高智商、全能型选手

用友BIP

2023全球商业创新大会

HarmonyOS跨进程通信—IPC与RPC通信开发指导

HarmonyOS开发者

OpenHarmony后代组件双向同步,跨层级传递:@Provide装饰器和@Consume装饰器

OpenHarmony开发者

Java-WebSocket vs Netty-WebSocket 资源占用

FunTester

从内核世界透视 mmap 内存映射的本质(源码实现篇)

bin的技术小屋

Linux 操作系统 内存管理 Linux Kenel mmap内存映射

软件开发项目管理体系,支撑体系,测试体系文档大全

金陵老街

建立可观测性宏观认知-从概念到过去10年的实践发展

刘绍

运维 软件工程 可观测性 基础架构

9月《中国数据库行业分析报告》已发布,47页干货带你详览 MySQL 崛起之路!

墨天轮

MySQL 数据库 oceanbase 国产数据库 StoneDB

动力电池电芯正负极缺陷检测

矩视智能

深度学习 机器视觉

IDO官网预售 设置您的IDO:开始您的IDO开发之旅

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 IDO代币预售

设计行业中如何保证图纸设计稿在数据传输中不会泄密

镭速

数据传输 文件传输

深入理解线段树 | 京东物流技术团队

京东科技开发者

数据结构 数据结构与算法 线段树 企业号10月PK榜

用友BIP商业网络-银企联助力新钢联集团结算效率高效提升

用友BIP

银企联

OpenHarmony Meetup深圳站招募令

OpenHarmony开发者

交易履约之结算平台实践 | 京东云技术团队

京东科技开发者

架构 系统设计 企业号10月PK榜 交易履约 系统建设

Spring扩展-Aware

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