【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

程序员誓言

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

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

关注

评论 1 条评论

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

iOS MachineLearning 系列(20)—— 训练生成CoreML模型

珲少

开源一个网页版的 Xshell,支持 FTP 和 SFTP 两种方式!

Java你猿哥

Java json ssm Cookie xshell

YashanDB推出共享集群技术 剑指核心系统替换

YashanDB

国产数据库

经典智能合约案例之发红包

timerring

区块链

写给程序员的可逆计算理论辨析

canonical

开源 低代码 Docker 镜像 可逆计算 Nop平台

七年老程序员的三四月总结:三十岁、准备婚礼、三次分享

拭心

程序人生 总结思考

QUIC 协议:特性、应用场景及其对物联网/车联网的影响

EMQ映云科技

车联网 物联网 mqtt QUIC

1行代码合并多个PPT文件,Python自动化办公

程序员晚枫

Python PPT 自动化办公

Git安装和配置教程:Windows/Mac/Linux三平台详细图文教程,带你一次性搞定Git环境

小万哥

git Linux 程序员 后端 C/C++

大模型全情投入,低代码也越来越清晰

引迈信息

低代码 大模型 JNPF

希尔伯特旅馆里,住着AI的某种真相

脑极体

AI 智能涌现

2023-05-28:为什么Redis单线程模型效率也能那么高?

福大大架构师每日一题

redis 福大大

CSS小技巧使用 font-variation 让文字起飞

南城FE

CSS 设计 前端开发 动画 字体

C语言编程—枚举

二哈侠

深度学习进阶篇-国内预训练模型[5]:ERINE、ERNIE 3.0、ERNIE-的设计思路、模型结构、应用场景等详解

汀丶人工智能

人工智能 自然语言处理 深度学习 文心 ERNIE Transformer

实测 亚马逊AI 编程助手 Amazon CodeWhisperer(全网最全)

攻城先森

人工智能 编程 测试 AWS 亚马逊云科技

知识点总结

程序员小张

BeanUtils.copyProperties的11个坑

Java你猿哥

Java spring ssm bean

智能工厂 | 联合汽车电子有限公司汽车驱动科技上海智能工厂

工赋开发者社区

MySQL 启动apollo-adminservice 报错 Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'serverconf0_.Cluster' in 'field list

Andy

线程池是如何执行的?任务太多会怎样?

javacn.site

LangChain:构建个人AI代理从这里开始

devpoint

人工智能 AI langchain

数据可视化管理尽在RazorSQL注册激活版~

真大的脸盆

Mac 数据库管理 Mac 软件 管理数据库 数据库处理

文心一言 VS 讯飞星火 VS chatgpt (24)-- 算法导论4.2 6题

福大大架构师每日一题

福大大 ChatGPT 文心一言 讯飞星火

经典智能合约之智能拍卖

timerring

区块链

Go Module 语义化版本规范

江湖十年

Go 语言 go module go mod

ChatGPT对软件测试的影响

BY林子

软件测试 ChatGPT

用Python做一个翻译器 | Python小知识

AIWeker

Python 人工智能 python小知识

软件测试/测试开发丨学习笔记之用户端Web自动化测试

测试人

程序员 软件测试 自动化测试 测试开发 web自动化

GPT用于复杂代码生产所需要满足的必要条件

canonical

低代码 GPT GPT-4 可逆计算

人工智能与数据分析

Data 探险实验室

人工智能 机器学习 AI 数据分析 数据

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