AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

程序员誓言

  • 2017-10-12
  • 本文字数:2137 字

    阅读完需:约 7 分钟

Robert Martin 认为,我们的社会要求人们对职业行为作出承诺;我们需要一份程序员誓言,因为我们的生命和财产依赖与软件能否正确地构建和运行。根据他介绍,程序员誓言必须由专业协会的成员来实行。

Robert Martin 是敏捷软件开发宣言的签署者之一,他建议程序员的道德规范应该符合程序员义务

(…) 事实是,程序员所服务的对象还不太了解我们程序员所拥有的巨大力量;我们程序员自己也不大了解。

正所谓能力越强、责任越大。我们程序员应该承担这份责任,尽心尽责地服务好社会。我们应该制定我们行为的框架和标准。既不是雇主、也不是政府,而是我们程序员自己应该决定,与已经掌握的权力而言,哪些是我们应该承担的责任。

在 2014 年 11 月发表的这篇文章中,Martin 首次分享了他对程序员道德规范的想法。他建议(程序员道德规范)应该包括几点:

  • 我们不会故意造成伤害。
  • 我们将按照预定的目的和生命周期来编写软件。
  • 我们的行为以荣誉和纪律为准绳。

这篇文章根据工程师职责协会的章程,为程序员提供了一个誓言。

Nils Löwe 写了一篇构建完善和可靠软件的软件开发者的责任

在过去几十年中,关于如何构建完善和可靠的软件我们已经学到了很多。软件危机让我们知道了我们的技术缺陷,作为优秀的工程师,我们发明了控制复杂性的流程和方法。不幸的是,我们忽视了除了技术上的挑战,还有需要承担的日益增长的责任。

我们的软件开发者在如此短的时间内积累了如此强大的影响力。但是我们不得不以同样短的时间去面对由这种影响带来的责任。

在他的文章中,Löwe 提到他的“负责任的软件开发宣言”旨在鼓励思考和讨论软件开发人员的责任。

2015 年 11 月,Robert Martin 发表了程序员誓言。他的誓言旨在捍卫和拯救专业计算机程序员的荣誉。誓言开篇写道:

  1. 我不会生产有害的代码。
  2. 我生产的代码将永远是我最好的成果。我不会故意允许结构或者行为存在缺陷的代码长期存在。
  3. 我将在每个正式版本中生成一个快速、可靠和可复现的证据,证明代码中的每个元素都按照应其有的样子运行。
  4. (…)

在 freeCodeCamp 上的那些年我写过的垃圾代码一文中,Bill Sourour 讲述了他为一个在线测验并推荐药物的网站编写软件的故事。虽然他所工作的网站表面上是一个药物综合信息网站,但客户的要求总是推广他们的药品。在文章的最后,他总结道:

作为开发者,我们通常是阻止潜在危险和不道德行为的最后一道防线之一。

随着越来越多的软件继续接管我们生活中的方方面面,对于我们来说,采取立场并确保我们的道德准则永远融入我们的代码中将变得越来越重要。

希腊2017 年敏捷峰会上,Martin 将发表题为“The Scribe’s Oath”的开幕式主题演讲。希腊2017 年敏捷峰会将于9 月22 日在雅典开幕,这是为开发者、团队领导、经理和高层主管举行的为期一天的会议。InfoQ 将以问答、总结和文章的形式报道本次峰会。

InfoQ 就“程序员誓言”的必要性、誓言的主旨以及如何实现采访了 Martin。

InfoQ:为什么我们需要为一个程序员誓言?

Robert Martin:大多数人、包括大多数程序员都没有意识到,我们的文明已经如此依赖于软件。如今,生命和财产取决于软件的正确构建和运行。每当生命和财产受到威胁时,我们的社会都强烈要求对专业行为作出承诺。誓言就是对这个承诺的一份声明。

InfoQ:你在 2015 年发布了程序员誓言。人们是什么反应?

Martin:很多程序员对此都很热情,有些人认为这很愚蠢。我不认为整个群体的反应真的多重要。真正重要的是外行人对此怎么看——以及立法者对此怎么看。最后,日常普通民众将强烈要求对专业行为作出承诺;并将要求对专业行为强制执行承诺和进行监督。

InfoQ:誓言第一条是‘我不会生产有害的代码。’你可以详细解释一下吗?

Martin:一个软件开发者可以对他的用户造成两种伤害。第一种最明显,就是软件出现了故障。毫无疑问,我们应该尽最大努力来保证软件不会出现故障。

程序员通常带给用户的第二种伤害是破坏软件的 _ 结构 _,用户认为软件很容易修改,毕竟它只是 _ 软 _ 件嘛。用户需要让他们的软件系统和社会的变化以及技术的变迁保持同步。这看起来也合情合理,我们应该保证尽最大努力来确保软件是 _ 软 _ 的。

InfoQ:誓言还建议,程序员应尽一切努力来保持高效率。他们如何在保证高质量的情况下做到这一点?

Martin:啊,这是一个棘手的问题。保持高质量时我们如何保持高效……质量和效率相互矛盾的看法是多年来我们一直自欺欺人的最大谎言。

每个有经验的程序员都会被糟糕的结构和混乱的代码所困扰。这部分代码“容易”写,但是会让系统拖累剩下的所有人。每个人越慢,使系统摆脱恶化状态的压力就越大。最后整个项目都慢下来,不可阻挡地向着零生产力发展。

重复一下我的话:“保证效率的唯一途径就是保证质量。”

InfoQ:大力推行程序员誓言是对的吗?如何实现?

Martin:最终可能需要通过诸如一些专业协会的会员制来实现。雇主只会聘请具有良好信誉的会员(可能借助法规),会员资格也可能因严重违反协会行为守则而被取消。

我知道目前没有人认为致力于讨论这些事情恰逢其时;但这一定是个必然趋势。

查看英文原文: Oath for Programmers


感谢冬雨对本文的审校。

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

2017-10-12 19:003206
用户头像

发布了 64 篇内容, 共 25.9 次阅读, 收获喜欢 11 次。

关注

评论 1 条评论

发布
用户头像
作为软件开发行业的一员,我们应该以客户的利益和自我责任为首要原则,绝不编写恶意程序,认真对待客户所需要的要求
2018-12-18 12:17
回复
没有更多了
发现更多内容

这可能是中文互联网第一本系统性讲解Terraform的入门教程

大可不加冰

云计算 IaC Terraform HashiCorp 不可变基础设施

出于信仰,我去考了一个证

大可不加冰

云计算 IaC Terraform HashiCorp

Python3 Note 浮点类型误差问题

awen

Python 浮点型 decimal

亚马逊云开发者 Meetup 又双叒叕来了,您报名了吗?

亚马逊云科技 (Amazon Web Services)

开源数据库

网络攻防学习笔记 Day26

穿过生命散发芬芳

5月日更 网络攻防

用Terraform申请Letsencrypt证书

大可不加冰

云计算 证书 IaC Terraform HashiCorp

Flink的流数据SQL

五分钟学大数据

flink 5月日更

5.29 相约杭州!云原生 Meetup 第二期杭州站报名开启!

青云技术社区

云原生

用 Java 实现坦克大战,这个有点强了!

Java架构师迁哥

helm-kubernetes的包管理器

片风

云原生 Helm 包管理工具

达利欧:我持有一些比特币,美元重回1971年,现金就是垃圾

CECBC

面向WEB开发的Docker(四):启动MySQL数据库

devpoint

Docker

FIL矿池挖矿算力分发系统开发搭建

薇電13242772558

数字货币 算力

5G加油站,需要中频段

脑极体

AI医疗发展中的机遇与有效监管

CECBC

人生算法:重新启动的精神装置

石云升

读书笔记 思维模型 5月日更

Python3 Note 如何合理使用assert

awen

Python assert

如何入门数据分析?

数据社

大数据 数据分析 5月日更

中台反思:云原生下API网关的选择

孤岛旭日

网关 api 网关 平台 技术中台

悟透前端:加深Javascript变量函数声明提升理解

devpoint

变量声明

安全专栏加餐

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

Terraform中使用prevent_destroy搭配override文件防止误删资源

大可不加冰

云计算 基础设施即代码 IaC Terraform HashiCorp

Flutter 混合开发基础

网易云信

flutter 框架

极狐GitLab 13.11功能回顾,含Kubernetes Agent和流水线合规性

极狐GitLab

系统运维 安全监控审计 #on-call #GitLab 极狐GitLabs

吾日三省 - DAY 16

Qien Z.

5月日更 半年总结

Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?

Linux服务器开发

redis 后端 多线程 Linux服务器开发 网络io

直播点播窄带高清之 JND 感知编码技术

网易云信

音视频 视频编码

原来,GitHub标星90K+的Leetcode刷题手册长这样

Java架构师迁哥

5分钟速读之Rust权威指南(十)

wzx

rust

数字人民币与区块链的区别与联系

CECBC

如何通过别名扩展Git

kenny

bash git git扩展

程序员誓言_语言 & 开发_Ben Linders_InfoQ精选文章