无我编程(Egoless Programming)是一种编程风格,不是代码规范,旨在把代码评审中的人为因素最小化,应当在一个友好、合议方式进行,个人感情放一边,从而提高代码质量。
在《The Psychology of Computer Programming | 程序开发心理学》书中,温伯格首次提出了无我编程十诫。本文则是 Stack Overflow 联合创始人 Jeff Atwood 对这十诫的注解。程序员普遍很自我(ego),都应该看看本文,时刻提醒自己。
1. 理解并接受这个事实:人都会犯错
关键是在错误引入到产品前,尽早发现。幸运的是,在我们的行业中,除了那些在喷气推进实验室(JPL)开发火箭导航软件的人来说,大多数错误并不要命,所以我们可以并且应该从错误中学习,一笑了之然后向前看。
2. 你和你的代码是两回事
切记,审查代码是为了找出问题,问题当然会被发现。当发现问题时,别有情绪,别往心里去。
3. 天外有天,人外有人
三人行必有我师焉。寻求并且接受其他人的意见,特别是当你认为不必要的时候。
4. 不要盲目地重写代码
修改代码和重写代码,两者有明确的界限。搞清楚区别,通过代码审查,改变代码风格,而不是做一个孤独的执行者。
5. 以尊重、敬意、耐心对待非技术人员
经常和程序员打交道的非技术人员普遍认为程序员充其量不过是一群自负的人,还是爱哭的娇气包。不要用生气和不耐烦强化这种偏见。
6. 惟有改变方永恒
以开放的态度对待改变并用微笑接受改变。将每一次需求、平台、工具的改变看作一个新挑战,而不是一些要反对的麻烦。
7. 真正且唯一的权威来自知识,不是地位
知识带来权威,权威带来尊敬。所以如果想在无我的环境里获得尊敬,那么请增长知识。
8. 为信仰战斗,但也要优雅地接受失败
要清楚,有时候你的想法会被否定。即使结果证明你是对的,不要报复,或者最多说几次‘我早就告诉过你’,不要让你过去的想法成为殉道者或者战斗口号。
9. 不要做个死宅
不要成为一直在小黑屋里编程,只在买可乐时出现的人。这样的人不与人接触,不被重视,不受控制并且不能融入开放合作的环境。
10. 对事不对人
要批评的是代码,不是写代码的人。尽可能让评论正面,并且只关注于提升代码。评论只涉及内部标准、编程规范、提升性能等等方面。
原文出处:http://www.infoq.com/cn/news/2017/06/10-Commandments-without-program
推荐书籍:《The Psychology of Computer Programming | 程序开发心理学》