写点什么

无我编程的十条戒律

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

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

关注

评论

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

恒源云(GPUSHARE)_opencv(论文笔记)

恒源云

深度学习

使用logstash监控微服务项目,并制定索引格式

小鲍侃java

签约计划第二季

【11月】InfoQ写作平台荣耀月报:名单出炉!

InfoQ写作社区官方

话题讨论 热门活动

小企业如何落地elk日志收集系统

小鲍侃java

内容合集 签约计划第二季

前端避坑指南丨辛辛苦苦开发的APP竟然被判定为简单网页打包?

YonBuilder低代码开发平台

大前端 APP开发 APICloud 跨端开发

恒拓高科WorkPlus - 政企IM私有化解决方案

WorkPlus

使用logstash获取springboot控制台日志并传输到elasticsearch

小鲍侃java

签约计划第二季

面试腾讯:渗透测试工程师题型汇总

喀拉峻

面试 网络安全 安全 渗透测试

编曲时如何在FL Studio卷帘窗口修改单个音符音量

懒得勤快

VirtualBox 网络配置 NAT + Host-Only

李鑫磊

Kubernetes 虚拟机 网络配置 virtualbox

大型前端项目 DevOps 沉思录 —— CI 篇d

CODING DevOps

ci DevOps 持续集成 工作流

云编辑 | 使用 Cloud Studio 在线撰写预览并发布 Hugo 博客

宋天伦

CloudIDE Hugo Cloud Studio

使用linux搭建单机elk环境

小鲍侃java

签约计划第二季

在有道 | 同宇:一个正在老去的程序员

有道技术团队

程序员 技术人 工程师思维 人物访谈

安全RCE之未授权访问分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

在 Windows 笔记本上调试运行在 iOS 设备上的前端应用

汪子熙

大前端 web api iOS Developer 28天写作 12月日更

logback获取bootstrap.yml配置

小鲍侃java

签约计划第二季

数仓和数据中台长期霸权,数据湖最稳

用友BIP

数据胡

高可用 | repmgr 构建 PostgreSQL 高可用集群部署文档【建议收藏】

RadonDB

数据库 postgresql RadonDB

Istio 实践手册 |服务网格框架对比

xcbeyond

istio 28天写作 12月日更 Istio 实践手册

数据中台的OneID是个什么鬼

用友BIP

数据中台 主数据

在 ABAP 里模拟实现 Java Spring 的依赖注入

汪子熙

Java 28天写作 SAP abap 12月日更

低代码发展正当时,中国将取代美国成为低代码开发的全球领导者

金小K

RPA 低代码 低代码开发 低代码平台

使用自定义注解打印logstash日志

小鲍侃java

签约计划第二季

一个基于HTML的可定制轮盘——帮你告别选择困难症

海拥(haiyong.site)

html 大前端 28天写作 签约计划第二季 12月日更

使用docker安装elk环境

小鲍侃java

签约计划第二季

elk客户端与springboot整合

小鲍侃java

签约计划第二季

荣耀周榜公布!你上榜了么?2022.1.17-1.23

InfoQ写作社区官方

话题讨论 热门活动

Linux一学就会之Centos-文件权限管理

学神来啦

云计算 Linux centos linux运维

数据库自增 ID 用完了会咋样?

CRMEB

elk简介与背景

小鲍侃java

签约计划第二季

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