写点什么

Bob 大叔提出程序员宣言

  • 2015-12-02
  • 本文字数:1800 字

    阅读完需:约 6 分钟

考虑到这一技术的重要性,和其他职业拥有的一样,Uncle Bob 向软件程序员提议了一种宣言。

一年前,Robert C. Martin,也就是 Uncle Bob意识到软件程序员的重要性,他写道:

我们统治了世界。…

_ 没有 _ 一件发生在我们社会当中的事情离得开软件。没有

如果没有了软件:电话不响。汽车不启动。飞机不起飞。炸弹不爆炸。烤箱不烤食物。车库门不开。钱不转手。电不产生。并且我们找不到去商店的路。…

Martin 继续观察到,在社会作出重大贡献的程序员应负责和遵循职业道德,来为了社会的美好而运用他们所拥有的权力。程序员应该决定什么是他们的责任,并且这些责任政府或雇主不应该强加给他们。另外他受 Order of the Engineer 的启发而勾勒出一套职业道德的蓝图。一年后,Martin 重写了道德的问题,这一次他写了更多关于代码的质量,提出了每一个成员都应该采用来“保护和维护这个行业的荣誉”的 The Programmer’s Oath 程序员宣言:

重要通知:接下来 InfoQ 将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注 InfoQ 微信公众号第一时间阅读精品内容。

  1. 我将不会生成有害的代码。
  2. 我生成的代码将会永远是我最好的作品。我将不会故意发布在行为或结构上有缺陷的代码。
  3. 伴随每一次发布,我会生成一个快速、肯定以及可重复的证据让代码的每个元素都按它应该的方式工作。
  4. 我将做到经常、微小地发布,这样就不妨碍别人的进步。
  5. 我将勇敢地和不懈地完善代码,不放过任何机会。我将永远不会让代码变得更糟。
  6. 我将尽我所能来保持自己的生产率,和其他人相比尽可能的高。我将不会做任何会降低生产率的事。
  7. 我将时刻确保别人能代替我,并且我能代替他们。
  8. 我将生成的判断在幅度和精度上是可信的。我不会在不确定的时候作出承诺。
  9. 我将永远不会停止学习及改进我的技术。

Martin 的提议在 Twitter 上得到了各式各样的反响,从:

‏@ klenkes74: 我的假设是如果我严格根据那些规定生活,我的雇主会解雇我。

‏@ QuiteVague: 大多数程序员不能够对此作出承诺——质量和业务需求之间的平衡并不掌握在他们的手上。…我已经把这些人中的每一个都提升到了各种各样的管理者当中。然后,正如我所说的,你赢得了一些,你失去了一些。:)

@DamienPetrilli: 非常的不切实际,完全不适用于现实世界中的大多数人。

@asthasr: #9 是唯一有效的。其他的都是不可能实现的(“证据”)或者依靠我们不能控制的外部因素。

@sleepyfox: 由于天生的不确定性,我认为#8 是不可能维持的。一个判断最好是一个猜测而不是一个承诺。

到:

@brianvhughes: 在最好的情况下,#5 是有希望的。#8 是不可行的。 但是,这也不全是不好的。

@simonbrown: “我将永远不会停止学习及改进我的技术。”<- 对!

@Khris_Fernandez: 我会乐意从现在开始我们在我从事的每一个项目上都签下这个!可悲的是,有些事永远不会做。不管怎样,谢谢 Bob。

@GGrell: 我笑了,我哭了,我欢喜。这就是我每天争取写软件的一部分真实写照。

应答那些不赞同宣誓需求的人,Martin 认为软件工程师应具备道德责任,并且像医生、律师和工程师一样,他们应该拥有一条宣言,这条宣言是“教条一般的定义”。

在相同的笔记上,Rugged Software 的创始人已经写了几年 The Rugged Manifesto ,一系列程序员被邀请来遵守的原则:

我很坚固,更重要的是,我的代码很坚固。

我知道软件已经成为当今世界的重要基石。

我知道这种基石角色随之而来的就是重大的责任。

我知道我的代码会以我没有预期到的方式使用,会以与其当初设计目标不同的方式使用,使用期限也会超出最初预期。

我知道我的代码会被充满才华而有毅力的敌对者攻击,他们会威胁我们的物质世界、经济运行和国家安全。

我知道这些事实,因此我选择变得坚固。

我很坚固,因为我拒绝成为漏洞和弱点的来源。

我很坚固,因为我的代码能够面对这些挑战,并不受它们的影响而继续运行。

我很坚固,不是因为这样做简单,而是因为这是必然之选,而且我已准备好面临挑战。

随着起誓与否,是否遵从宣言的每句话,可能每个人都同意软件工程师旨在编写出好的软件。那意味着什么以及如何实现它则是另一个故事。

查看英文原文: Uncle Bob Proposes an Oath to Programmers


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者(已满),InfoQ 读者交流群(#2)InfoQ 好读者)。

2015-12-02 18:003283
用户头像

发布了 218 篇内容, 共 68.5 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

生成式AI重构营销 超7成客户使用百度AI营销服务

Geek_2d6073

THE发布首届2025年跨学科科学排名

财见

除了Excel,哪些工具能快速绘制甘特图?6款推荐

爱吃小舅的鱼

甘特图

得物新一代可观测性架构:海量数据下的存算分离设计与实践

得物技术

文心智能体平台已汇聚15万企业,智能体分发量上涨16倍

Geek_2d6073

联想按下“AI加速键”!目标:与5000万中小企业共创

脑极体

AI

a16z丨2025 Web3 趋势预测:这些 Big Idea 或大有可为

TechubNews

Alibaba Cloud Linux:助力太保科技整体云平台0故障,提效30% | 龙蜥案例

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥案例

天津大学、浪潮信息、龙蜥社区等技术专家讲开源,龙蜥大讲堂12月精彩预告提前解锁

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥大讲堂

全方位探讨自主可信计算开源实践!龙蜥社区可信计算 SIG MeetUp 邀您报名

OpenAnolis小助手

操作系统 龙蜥社区 可信计算 龙蜥meetup

团队管理中如何做好目标管理

易成研发中心

团队管理 目标管理

DSP 的 CV 算子调用

地平线开发者

算法 自动驾驶; 算法工具链 地平线征程5

不是领导时该如何管理员工

易成研发中心

团队管理 项目管理

秒懂Requests响应时间获取技巧!

LLLibra146

Python 代码技巧 requests

23 位委员参会,第 28 次龙蜥社区运营委员会圆满结束

OpenAnolis小助手

操作系统 龙蜥社区 龙蜥社区运营委员会

上千人挑战,用通义灵码从 0 开始打造一款 App 爆火 | 第二课:搭建本机服务

阿里巴巴云原生

阿里云 云原生 通义灵码

如何成为一名“Java调优大神”?

了不起的程序猿

Java 面试 性能优化 架构师 jvm调优

HR Path通过收购Pay Human Group扩大全球版图

财见

Aeron 框架初探

FunTester

百度商业系统升级为“百度伴飞” :用生成式AI重构营销场域、经营、连接

Geek_2d6073

热忱如初,逐"智"前行 | 正雅齿科嘉兴智能生产基地落成投产

财见

B站,助力品牌与新一代年轻人共舞

财见

黑芝麻智能端到端算法参考模型公布,一文了解技术亮点

财见

AI招聘API:2024年国内外顶级平台的智能化解决方案

幂简集成

招聘 API AI招聘

软件开发进度频频拖延,项目进度问题如何解决

爱吃小舅的鱼

项目进度

上千人挑战,用通义灵码从 0 开始打造一款 App 爆火 | 第二课:搭建本机服务

阿里云云效

阿里云 云原生

云计算以及人工智能将为全球国内生产总值贡献数万亿美元

财见

人机协作智能体如何助力人形机器人产业发展?网易伏羲受邀分享前沿观点 | 活动预告

网易伏羲

人工智能 网易伏羲

ETL是什么?浅谈ETL对数据仓库的重要性

RestCloud

数据仓库 ETL 数据集成 企业数字化

Fish Speech 1.5 发布,TTS-Arena 排名开源第一;DeepMind Genie 2,一键生成无限虚拟世界

声网

NocoBase 1.4.0 正式版发布

NocoBase

开源 低代码 零代码 无代码 版本更新

Bob大叔提出程序员宣言_方法论_Abel Avram_InfoQ精选文章