硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

程序员誓言

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

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

关注

评论 1 条评论

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

封神总结!蚂蚁金服+滴滴+美团+拼多多+腾讯15万字Java面试题

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

iOS 面试策略之语言工具-Swift

iOSer

ios swift 面试

安卓rxjava面试,面试一路绿灯Offer拿到手软,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

封神总结!12W字“多线程与高并发实战手册”成功助我涨薪19K

比伯

Java 程序员 架构

区块链如何推动数字化转型?

CECBC

区块链

解决方案的设计与积累——课程总结

Deborah

BUG!从编写 Loader 到窥探大佬 Debug 全过程

HZFEStudio

小程序 webpack 构建工具

翻译:《实用的Python编程》InstructorNotes

codists

Python

介绍一款能取代 Scrapy 的爬虫框架 - feapder

星安果

Python 爬虫 Scrapy feapder

思维训练

Ryan Zheng

流量分析中常见的指标简单总结

五分钟学大数据

4月日更

比微信文件传输助手更好用的传输工具|Telegram

彭宏豪95

微信 效率 文件传输 4月日更 Telegram

ceph-csi源码分析(2)-组件启动参数分析

良凯尔

Kubernetes 源码分析 Ceph CSI

Go 的 UTF-8 实现

Rayjun

utf-8 Go 语言

JVM-技术专题-虚拟机知识遗漏盘点

码界西柚

JVM

【网络】【操作系统】详解select、poll、epoll

Linux服务器开发

后端 网络编程 Linux服务器开发 网络io eopll

都在看的18WJava核心成长笔记 让我成功收获字节、阿里、腾讯大厂Offer!

学Java关注我

Java 编程 架构 架构师 程序人生】

深入理解Spring框架之AOP子框架

邱学喆

aop 动态代理 cglib ProxyConfig AspectJ

当时尚撞上区块链,为潮酷创意赋予专属

CECBC

时尚产业

150页的剑指Offer解答PDF,它来了!!!

秦怀杂货店

Redis-Cluster集群

Sakura

4月日更

ARST-日常打卡3

pjw

想拿到10k-40k的offer,这些技能必不可少!作为程序员的你了解吗?

Java架构师迁哥

Redis的常见问题

赖猫

c++ redis Linux 后端

DAPP系统开发运营版,DAPP系统开发案例源码

系统开发咨询1357O98O718

怎么做到的?3个月入职蚂蚁金服(Java岗)从年薪10W到年薪30W

Java架构师迁哥

Vue源码思想在工作中的应用

执鸢者

Vue 大前端

安卓rxjava使用,4面字节跳动拿到Offer,面试必问

欢喜学安卓

android 程序员 面试 移动开发

Web3.0时代需要什么样的企业级协作工具?

猫Buboo

四面拿到京东Java岗 30K offer 全过程分享

Java架构师迁哥

2个月从0到1,一年5次迭代,百度“量桨”效率喷涌背后的工作秘诀

脑极体

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