写点什么

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

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

关注

评论

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

《架构师训练营》第一周学习总结

ARTS打卡 第3周

引花眠

ARTS 打卡计划

架构师训练营第1周作业

一叶知秋

架构师训练营Week 01 学习总结

Just顾

就餐卡系统设计文档 【第一周】

mylove321

架构师训练营第一周学习总结

跨域刀

极客大学架构师训练营

训练营第一周学习总结

毛叫

极客时间 极客大学架构师训练营

「架构师训练营」第 1 周作业 - 食堂就餐卡系统设计

butterfly

架构师-悟性和技能

yupi

架构师训练营学习总结

weijin

作业一:食堂就餐卡系统设计

亮灯

【第一周】食堂就餐卡架构设计

星星

第一周作业(2)

佳明

架构师训练营第1周-食堂就餐卡系统设计

海滨

极客大学架构师训练营

架构师0期第一周总结

Nan Jiang

架构师训练营week01-食堂就餐卡系统设计

Just顾

食堂就餐卡系统设计

漫步跑小鸡

架构homework1-2

蜡笔小晗

信息的表示与存储-浮点数的表示

引花眠

计算机基础

架构师-Week1作业

龙7

极客大学架构师训练营

架构师如何进行软件架构设计学习总结

一点点..

就餐系统架构设计

草原上的奔跑

极客大学架构师训练营

把生活找回来

zhoo299

随笔杂谈

【架构师week01】总结

高程

总结 架构师

架构师、架构

stars

架构师训练营 第一周 作业

极客大学架构师训练营

【架构师week01】作业

高程

架构师 作业

食堂就餐卡系统设计

走过路过飞过

week01-就餐卡系统架构设计

强哥

极客大学架构师训练营

架构方法 - 架构师如何做架构总结(1)

Paula_l

「架构师训练营」第一周总结

极客

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