大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

程序员誓言

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

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

关注

评论 1 条评论

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

京东JD商品sku信息API返回值解读:数据驱动的商品属性研究

技术冰糖葫芦

API boy API 接口 API 文档

API主导的商业模式是否将在AI时代蓬勃发展?

幂简集成

AI API

腾讯、阿里、B站最新面经汇总,有的妥妥的凉经

王中阳Go

golang 面试题 大厂面经 Go进阶

英特尔推进面向未来节点的技术创新,在2025年后巩固制程领先性

E科讯

得物质量管理体系的建设与应用

得物技术

测试 质量 企业号 2024年5月 PK 榜

软件适应性定义以及作用简单讲解-行云管家

行云管家

软件 行云管家 软件适应性

解锁高效创新:IPD策略如何重塑产品开发流程

不在线第一只蜗牛

大数据 产品开发

软件测试学习笔记丨黑盒测试方法论-场景法

测试人

软件测试

INFINI Labs 产品更新 | Console 1.24.0 操作日志审计功能发布

极限实验室

console Gateway 极限科技 产品更新发布

“她”来了,陪伴赛道巨变!为GPT-4o加上你的一个数字分身

京东科技开发者

通过MVEL表达式和Apache Chain职责链模式解耦MQ消息处理节点的实践应用

京东科技开发者

暗水印——空域:音频水印(看不见我吧 啦啦啦~)

京东科技开发者

NineData云原生智能数据管理平台新功能发布|2024年4月版

NineData

sql 数据迁移 数据备份 NineData 对比工具

Oracle到PostgreSQL的不停机数据库迁移!

NineData

oracle postgresql NineData 无停机迁移 异常告警

Flink的状态原语详述

木南曌

实时计算

报名开启|智能化可观测:可观测开源开发者Meetup

TRaaS

活动报名

跨云厂商的不停机数据库迁移!使用NineData就可以了

NineData

Google 数据库迁移 多云架构 无停机数据库迁移 跨云厂商

观测云产品更新 | 监控、场景仪表板、查看器、服务管理、DQL等

观测云

监控

京东秒送售后系统退款业务重构心得| 京东零售技术团队

京东科技开发者

Python异常处理:基础到进阶的实用指南

我再BUG界嘎嘎乱杀

Python 编程语言 软件开发 异常处理

NineData亮相GOPS大会:揭秘新时代企业级数据库DevOps最佳实践

NineData

数据库 DevOps 工具 NineData SQL IDE

ClickHouse沙龙来了,NineData将分享数据管理与同步的关键技术!

NineData

Clickhouse Meetup 杭州 NineData 迁移同步

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