写点什么

无我编程的十条戒律

  • 2017-06-11
  • 本文字数:1202 字

    阅读完需:约 4 分钟

“无我编程”发生在开发阶段,表现为技术团队经常通过同级评审的方式来发现软件中的缺陷。目的是让所有人(包括作者)都参与寻找缺陷,而不是证明软件产品里没有缺陷。人们会交换各自手上的代码,相互进行评审,并且大家都有这样的共识:代码的原始作者会犯错误,而作为评审者,他们会找出这些错误。最后的结果是,每个人都从自己的错误以及别人的错误里有所长进。这就是“无我编程”的由来。

无我编程的十条戒律,最早出现在由 Gerald Weinberg 于 1971 年出版的经典著作《程序开发心理学》里。Stack Overflow 网站的联合创始人 Jeff Atwood 在博客上再次列出了这十条戒律。要知道,在这本著作出版的时候,Jeff 才一岁。虽然已经过去了几十年,但这些原则并没有被时间侵蚀,仍然值得每一位程序员拜读。

  1. 接受自己会犯错的事实。关键是要在错误进入到生产环境之前把它们找出来。所幸的是,除了小部分在喷气推进实验室里开发火箭制导系统的程序员,大部分错误都不会造成致命的后果。所以,我们一定能够而且也应该要学会嫣然一笑,然后继续。
  2. 不要使用代码来针对个人。要记住,代码评审的目的是为了找出问题,而且总归会找到问题。如果真的找到了问题,请不要把它作为针对个人的借口。
  3. 不管你知道多少“秘籍”,总有人比你知道得更多。如果你开口,他们就会教你更多的东西。在你认为没有必要的时候,学会接受他人的建议。
  4. 不要不经讨论地重写代码。“修复代码”与“重写代码”是有明显的区别的。了解这些区别,并在代码评审的框架之内进行程式化的变更,而不是单独作战。
  5. 尊重比你懂得少的人,并对他们抱以耐心。与技术人员打交道的非技术人员认为技术人员要么是妄自尊大的讨厌鬼,要么是爱撂挑子的倔驴。所以,我们不要用我们的愤怒和不耐烦去加深他们对我们的这种印象。
  6. 这个世界唯一不变的就是变化。敞开胸怀,面带微笑地去拥抱变化。把每一个需求变更、平台变更或工具变更都看成是一个新的挑战,而不是令人厌恶的麻烦。
  7. 真正的权威来自于知识,而不是职位。知识造就了权威,而权威会迎来尊重。如果你想要在一个无我的环境里得到尊重,那么充实你的知识吧。
  8. 坚定你的立场,优雅地接受挑战。要知道,你的想法有时候会遭到反对。你可以证明自己是对的,但不要试图报复,不要总是叫嚷着“我早就说过”,不要把被否定的想法看成是一个牺牲品或者某种战斗口号。
  9. 不要成为“小黑屋里的人”。不要躲在小黑屋里写代码,就算偶尔露个面,也只是为了买一杯可乐。躲在小黑屋里只会让你与其他人失去联系,淡出他们的视野,失去控制。在一个开放的协作环境里,你会找不到自己的位置。
  10. 批评代码,而不是人。对人好一点,而不是代码。让你所有的评审为代码带来积极的改进,把你的评审与局部标准、程序规范和更好的性能结合在一起。

感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-06-11 19:004101
用户头像

发布了 322 篇内容, 共 147.4 次阅读, 收获喜欢 148 次。

关注

评论

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

关系型数据库,NoSQL数据库,NewSQL数据库权威整理

hanaper

阿里资深工程师写出这份Java异步编程指南,竟获GitHub百万点赞

Java~~~

Java 架构 面试 计算机 TCP协议

数据结构是存储的基石

卢卡多多

数据结构 9月日更

webrtc NACK与RTX

webrtc developer

WebRTC NACK

Redis 6.0 多线程重磅发布!来了解一下吧

Linux服务器开发

数据库 redis 网络编程 Linux服务器开发 单线程

阿里内网疯狂传阅的“M8级”分布式架构笔记,GitHub刚上线就霸榜

Java~~~

Java 架构 面试 分布式 微服务

伴鱼:借助 Flink 完成机器学习特征系统的升级

Apache Flink

大数据 flink

Grafana Labs 携手阿里云,将提供国内首款 Grafana 托管服务

阿里巴巴云原生

云计算 阿里云 云原生 可视化 Grafana

搞懂 ArrayBuffer、TypedArray、DataView 的对比和使用

每天进步亿点点

9月日更

大厂炸锅了!这份全程无尿点的Java彩版面试开挂攻略在GitHub火了

Java~~~

Java MySQL 架构 面试 JVM

Flink 在顺丰的应用实践

Apache Flink

大数据 flink

计算机工业的生态链(一)

姬翔

9月日更

使用 Flink Hudi 构建流式数据湖

Apache Flink

大数据 flink

阿里最新21版Java面试系列手册已出炉,竟堪称GitHub面试杀手锏

Java~~~

Java 架构 面试 JVM 面经

白嫖!一口总结了金九银十(P5-P7级)1000多道Java面试题,20+大厂必考点及Java面试框架知识点!

Java 程序员 架构 面试 计算机

CV和NLP融合应用,百度联合国内外机构成功举办ICDAR 2021文档图像与语言研讨会

科技热闻

私有化部署竟是企业对低代码选型的重要要素

低代码小观

企业 开发工具 云服务器 低代码平台 私有化部署

老板:把系统从单体架构升级到集群架构!

程序员 架构 分布式 后端 计算机

重放浏览器请求多链路性能测试实践

FunTester

浏览器 性能测试 接口测试 全链路压测 FunTester

Apache Flink 在京东的实践与优化

Apache Flink

大数据 flink

微信后台基于时间序的海量数据冷热分级架构设计实践

OpenIM

GitHub上火了的MySQL性能调优手册,全篇无废话不愧是清华神人

Java~~~

Java MySQL 数据库 架构 面试

一文搞定Matplotlib各个示例

华为云开发者联盟

Python 深度学习 Numpy matplotlib 绘图库

5 款阿里常用代码检测工具,免费用!

阿里巴巴云原生

阿里云 云原生 云效

同程内网流传的分布式凤凰缓存系统手册,竟遭GitHub强行开源下载

Java~~~

Java 架构 面试 分布式 微服务

Flink 1.14 新特性预览

Apache Flink

大数据 flink

腾讯质量效能提升最佳实践:智能自动化测试探索和建设

WeTest

百度混部实践系列 | 如何提高 K8S 集群资源利用率?

百度开发者中心

最佳实践 方法论 k8s

内核模式(Kernel Mode)vs 用户模式(User Mode)

Fox666

多租户是一种技术

金蝶天燕云

多租户

如何使用OkHttp实现websocket

Changing Lin

9月日更

无我编程的十条戒律_语言 & 开发_薛命灯_InfoQ精选文章