写点什么

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

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

关注

评论

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

从源码解析 MobX 响应式刷新机制

岛上码农

flutter ios 前端 安卓 6月月更

提升管道效率:你需要知道如何识别CI/CD管道中的主要障碍

龙智—DevSecOps解决方案

ci CD CloudBees CI/CD管道

spring4.1.8扩展实战之一:自定义环境变量验证

程序员欣宸

Java spring Spring Framework 6月月更

vue中mixins的使用方法和注意点

源字节1号

软件开发 前端开发

leetcode 47. Permutations II 全排列 II(中等)

okokabcd

LeetCode 搜索 数据结构与算法

vue计算属性

小恺

6月月更

功能标记是什么?一文了解它的作用,以及它的最佳实践

龙智—DevSecOps解决方案

perforce Helix Core 功能标记

深圳3月14日起全市停工停业7天居家办公心得|社区征文

老周聊架构

后疫情时代企业应对策略 6月月更 初夏征文 高效工具 高效沟通

消息队列存储消息数据的 MySQL 表格

流火

逐向双碳:东数西算中的绿色需求与竞争焦点

脑极体

Vue-7-计算属性和方法的区别

Python研究所

6月月更

SDN系统方法 | 6. 网络操作系统

俞凡

架构 网络 sdn SDN系统方法

搭建前端监控,如何采集异常数据?

杨成功

架构 大前端 监控系统

企业架构的第一性原理

涛哥 数字产品和业务架构

企业架构

模块八作业

天琪实刚亮

架构训练营

前端食堂技术周刊第 40 期:HTTP/3、WebContainers 登陆 Firefox、Remix Conf 2022、VueConf US 2022

童欧巴

Vue 前端

1.5 什么是架构师(连载)

凌晞

架构 架构师

【您编码,我修复】WhiteSource正式更名为Mend

龙智—DevSecOps解决方案

代码安全 WhiteSource Mend

八大误区,逐个击破(2):性能差?应用程序少?你对云的这些担心很多余!

龙智—DevSecOps解决方案

Atlassian atlassian云版 Atlassian白皮书

NixOS 22.05安装过程记录

sai

NixOS Nix

Android MaterialButton使用详解,告别shape、selector

yechaoa

android 6月月更 material design MaterialButton

什么是数据驱动

奔向架构师

大数据 数据仓库 数据驱动 6月月更

加强区块链技术司法应用

CECBC

OpenMAX (OMX)框架

程思扬

音视频 编解码

【sql语句基础】——查(select)(单表查询)

写代码两年半

sql MySQL 数据库 数据库· 6月月更

合理地配置线程池

急需上岸的小谢

6月月更

Java—流 Stream

武师叔

6月月更

居家办公期间如何提升沟通效率|社区征文

北洋

初夏征文

Teambition 协作应用心得分享|社区征文

北洋

初夏征文

模块八

ASCE

【LeetCode】查找和替换模式Java题解

Albert

LeetCode 6月月更

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