写点什么

程序员誓言

  • 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:002798
用户头像

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

关注

评论 1 条评论

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

Android JNI模板与读取系统属性笔记

Changing Lin

android

《我们一起学集合》-ArrayList

蚊子

数据结构 面试 ArrayList JAVA集合

程序员必知的几种限流方案

Java架构师迁哥

北京朝阳法院借力区块链化解物业纠纷

CECBC

法院调解

个人信息严控的时代,AI如何实现“安全”的智能营销?

星环科技

大数据

深扒!用6部分讲完Java性能调优:多线程+设计模式+数据库

996小迁

数据库 JVM 设计模式 多线程 性能调优

IDEA Malformed argument has embedded quote

会飞的猪

IDEA

Spring Security 实战干货:分布式对象SharedObject

Java spring 分布式

七面阿里成功offer,入职就是25k*16薪,还原我的大厂面经

Java 程序员 面试

CSS(七)——设置背景颜色和背景图像

程序员的时光

程序员 大前端 七日更 28天写作

2021直播电商下半场,“网易严选们”为何成主播良港?

脑极体

2021年了,还听到有些兄弟在问Kafka香不香?

后台技术汇

28天写作

Maintainer 聚光灯:KubeEdge 和 Volcano 的王泽锋

华为云原生团队

开源 边缘计算 华为云 批量计算

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

Sòrγy_じò ぴé

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

技术资讯 | 百度智能云拿下MTCS最高安全评级

百度开发者中心

行业资讯

阿里云重磅发布云拨测产品:深度挖掘数据,精准定位 IT 问题

阿里巴巴中间件

微服务“大门”如何选择?

阿里巴巴中间件

Elastic开源协议改了,用户怎么办?

星环科技

DevOps到底是什么意思?

xcbeyond

DevOps 方法论 软件测试 28天写作

讲真,一位8 年 Java 经验大牛的面试总结,你照猫画虎还怕收不到offer?

Java架构之路

Java 程序员 架构 面试 编程语言

编程小技巧之 Linux 文本处理命令(二)

程序员历小冰

Linux 编辑器 sed

“删库跑路”,这背后的数据安全你悟到了吗?

BinTools图尔兹

数据库 大数据 数据安全 数据库管理工具 删库

IntelliJ IDEA 20周岁啦,为期2天的周年庆活动对开发者免费开放

YourBatman

eclipse ide IDEA IntelliJ IDEA

为什么这么一道iOS小题目,这么多面试者搞不定?

Geek_24a3d9

面试 技术交流 ios开发

数学,离一个程序员有多近?

小傅哥

程序员 面试

产业区块链蓬勃发展 联盟链成为落地应用最大杀器

CECBC

区块链

阿里直招怒斩“P7“offer,自曝狂啃六遍的面试笔记

Java架构之路

Java 程序员 架构 面试 编程语言

加油,成功通过阿里P7Java岗面试,分享一些面试心得

Java架构之路

Java 程序员 架构 面试 编程语言

try-catch-finally中的4个大坑,不小心就栽进去了!

王磊

Java 异常处理 try finally

DjangoRestFramework框架简介及基本使用

行者AI

RESTful

我国首个自主可控区块链软硬件技术体系发布

CECBC

区块链

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