写点什么

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

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

关注

评论

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

鸿蒙5开发宝藏案例分享---Web加载时延优化解析

莓创技术

抄作业!JNPF靠“拖拽”通吃7大行业?

秃头小帅oi

淘宝天猫拍立淘图片搜索商品接口(附代码示例)

tbapi

淘宝API 淘宝图片搜索接口 淘宝拍立淘接口 天猫图片搜索接口 天猫拍立淘接口

YashanDB与云服务的高效协同运作

数据库砖家

YashanDB与数据仓库的整合:如何实现数据集中管理?

数据库砖家

YashanDB与人工智能应用的结合前景

数据库砖家

华为Pura 80,让“三我”终相见

脑极体

AI

鸿蒙5开发宝藏案例分享---应用性能优化指南

莓创技术

YashanDB与区块链结合的可能性与未来前景

数据库砖家

YashanDB与容器技术结合,构建现代云原生数据库

数据库砖家

YashanDB与机器学习的结合:提升数据利用率

数据库砖家

常见的数据处理方法有哪些?ETL中的数据处理怎么完成

谷云科技RestCloud

MySQL 数据库 数据处理 ETL 数据集成工具

YashanDB与传统ETL工具的集成与应用

数据库砖家

鸿蒙5开发宝藏案例分享---跨线程性能优化指南

莓创技术

颠覆传统!飞算 JavaAI 如何让程序员告别 “996 地狱”?

飞算JavaAI开发助手

YashanDB实时监控与响应机制解析

数据库砖家

深入研究:淘宝天猫关键词搜索接口详解

tbapi

淘宝API 天猫API 关键词搜索淘宝接口 淘宝商品列表接口 天猫商品列表接口

深入研究:淘宝天猫商品详情接口详解

tbapi

淘宝API 天猫商品详情接口 天猫API 淘宝详情接口

深入研究:淘宝天猫商品评论接口详解

tbapi

淘宝商品评论接口 天猫商品评论接口 淘宝API 淘宝评论API 天猫评论API

鸿蒙5开发宝藏案例分享---Web开发优化案例分享

莓创技术

低代码与数字经济深度耦合:技术范式迭代下的企业数字化转型新路径

不在线第一只蜗牛

AI 低代码 数字经济

大数据-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL

武子康

大数据 hadoop mapreduce hive

无需公网IP,轻松实现ComfyUI远程访问

贝锐

内网穿透 ComfyUI

618 懒猫微服私有云大促

玄兴梦影

NAS 懒猫微服

YashanDB与人工智能结合提升数据库智能化水平

数据库砖家

智能手表地图新体验,RTOS系统助力全球行

高德开放平台

AI 地图 智能手表 高德

AI 应用开发(一):TRAE 下自定义 MCP Server

北桥苏

MCP AI应用开发

YashanDB与机器学习结合的未来发展趋势

数据库砖家

YashanDB优化技巧:提升数据库应用性能的实战经验

数据库砖家

万元好礼等你拿!飞算 JavaAI 炫技赛喊你当 “甲方爸爸”

飞算JavaAI开发助手

英特尔代工:协同生态建设,铸就客户信任

E科讯

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