【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

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

评论

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

git使用ssh

刘旭东

git SSH

Teradata的离开,是国内ToB服务转变的信号

ToB行业头条

接口测试的测试要点

Liam

测试 接口测试 接口测试软件

从MVC到DDD转变过程中的一点碎碎念

为自己带盐

DDD CQRS

英特尔研究院探索负责任的生成式AI,让AI应用真正惠及大众

科技之家

快速开发光伏电站数字孪生运维系统——实践类

阿里云AIoT

阿里云 物联网 IoT

创建MQTT连接时如何设置参数?

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 连接参数

Apipost正式发布《API行业白皮书》!

不想敲代码

API 白皮书 行业趋势 行业报告

如何从0开始搭建 Vue 组件库

京东科技开发者

npm UI vant Vue3 组件库

大模型为什么是深度学习的未来?

蓝海大脑GPU

人工智能 深度学习 大模型

天翼云联合国际咨询机构IDC发布《中国医疗云建设与应用白皮书》

天翼云开发者社区

火山引擎数智平台的这款产品,正在帮助APP提升用户活跃度

字节跳动数据平台

大数据 客户数据平台 客户 客户数据 企业号 2 月 PK 榜

如何在Excel中查找并高亮数据

Geek_249eec

C# .net Excel VB.NET

LED显示屏怎么翻新?

Dylan

LED LED显示屏 led显示屏厂家

分布式云原生平台Kurator v0.2.0正式发布!一键构建分布式云原生平台

华为云开发者联盟

云计算 华为云 企业号 2 月 PK 榜 华为云开发者联盟

墨天轮【第二届数据库掌门人论坛】圆满收官 | 含嘉宾精彩观点回顾

墨天轮

数据库 Serverless TiDB oceanbase 国产数据库

OpenYurt v1.2 亮点速览丨云边流量峰值相比原生 K8s 降低 90%

阿里巴巴云原生

阿里云 开源 容器 云原生 openyurt

打造自主可控云网算力,天翼云为湖南数字经济发展注入新动能

天翼云开发者社区

eKuiper 1.8.0发布:零代码实现图像/视频流的实时AI推理

EMQ映云科技

物联网 IoT 视频流 流式计算 企业号 2 月 PK 榜

安全可信| 首批!天翼云智算平台率先通过可信算力服务评估

天翼云开发者社区

了解医疗上云门道,尽在“共铸国云 红云行业思想汇”!

天翼云开发者社区

人工智能 LLM 革命前夜:一文读懂ChatGPT缘起的自然语言处理模型Transformer

阿里技术

人工智能 自然语言处理

接口调试时如何实现接口之间的数据传递?

不想敲代码

90%企业在探索的敏捷开发怎么做?极狐GitLab总结了这些逻辑与流程

极狐GitLab

DevOps 敏捷开发 持续集成 CI/CD 持续交付

使用 Ingest Pipeline 在 Elasticsearch 中对数据进行预处理

Se7en

聚焦现代化应用安全,F5的安全扩增,稳了!

F5 Inc

架构 安全 API 应用

腾讯内网“Redis 深度(全彩版小册)”限时开源!面面俱到太全了

架构师之道

Java 面试 架构师

PostgreSQL:内存结构

天翼云开发者社区

serverless与容器优缺点

天翼云开发者社区

serverles

关于DataLeap中的Notebook,你想知道的都在这

字节跳动数据平台

数据库 大数据 数据治理 数据研发 企业号 2 月 PK 榜

C#/VB.NET 如何在不同工作簿之间复制单元格范围

在下毛毛雨

C# .net Excel 文档操作

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