基督教有十诫,犹太人因遵守它而生活富足;同样,程序员的世界里也有十诫,遵守它的人可以获得内心的平静,直面别人对其代码的点评。对一名创造者来说,作品被指点评价甚至误解都是宿命……如何在这种时候还能听进去并获得意想不到的收获?你可以认真读一下这份编程哲学。
忘我编程(Egoless Programming)一词由杰里·温伯格(Jerry Weinberg)1971 年在其著作《计算机编程心理学》(The Psychology of Computer Programming
)中提出。温伯格使用这个词语来描述当一个开发人员开发到一定阶段以后,可以让同行过来评议其代码的开发方式。
同行评议可以让多人一起来寻找逻辑漏洞,评估算法选择是否合适甚至发现语法错误。温伯格发现,鼓励其他人寻找错误和有待改进的地方,可以让软件开发的速度和质量有戏剧性的提高。当然,这个时候对于开发人员来说,就必须放弃固执的己见,让自己处于忘我(Egoless)状态。
同行评议
不同的开发方法论中多次提及了同行评议机制,而且看起来它也逐渐成为大家的共识。结对编程(两人一组共同编程)可以被简单地视为同行评议的一种应用。同样地,开源软件大多质量较高,也得益于开源社区「海量」的同行评议。
当然,脸皮比较薄的开发人员在这种时候会感觉到非常不适。因为和写作或创作一件艺术品一样,编程是一个比较个人的事情;艺术家不会允许别人对他的作品说三道四,同样,当别人贬低我们的代码作品时,我们同样很难接受。所以这个时候,就需要一套规则或指南,来帮助开发人员进入忘我(Egoless)状态,让他们自己与他们的代码分开。
十诫
1. 接受「自己会犯错」这个事实。错误不是关键,关键是我们需要在投入生产之前尽早找到它们。比较幸运的是,除了像「火箭发射引导软件」这样非常重要的软件外,代码错误很少是致命的,所以我们大可微笑接受,然后继续前进。
2. 你不同于你的程序。同行评议这个机制是对事不对人,所有的目的都是为了找出错误,而且也一定会找出来的。所以不要过分带入个人情感。
3. 无论你懂得多少,总有人懂得更多。三人行必有我师,总有一个人可以告诉你一些你没有想到的问题,所以即便你认为没有必要,也请听听别人怎么说。
4. 不要在没有商量的情况下直接重写别人的程序。在「修改程序」和「重写程序」之间有一个界限,你需要知道这界限。同时,确保修改后的代码和原代码保持同样的风格,而不是强赛硬加。
5. 对待不懂的人需要保持尊重与耐心。并非所有人员都懂你的代码,尤其是那些非技术人员,所以他们对于程序有一些误解也实属正常。越是这个时候,越要保持尊重与耐心。
6. 世界上唯一不变的就是改变。需求在变,平台在变,工具在变……所以微笑地接受一切变化就好。
7. 权威来自于知识而非职位。知识产生权威,权威带来尊重,所以如果你想在一个开放的环境里面获得尊重,请提升自己的知识。
8. 坚定信仰,但也要能坦诚面对挫败。记住,你的想法有时会被驳回,不要在意,更别在最终还是采用回了你想法的时候说「看吧,我早就说过」。这只会让你的想法更加不受重视。
9. 不要过于不合群。不要做一个「成天待在小黑屋里面,只会敲代码」的人。一个成天游离于人们视线之外、不受控制的人,在一个开放的、讲究合作的环境里面是不会有什么话语权的。
10. 与人为善,对代码苛刻。尽可能让你所有的评论都能够对改进代码有所帮助,比如代码规范、性能提升等。
作者:Jeff Atwood
原题:The Ten Commandments of Egoless Programming
出处:hhttp://t.cn/RS0sTWb
翻译、编辑:李亮
开智好文
领取专属 10元无门槛券
私享最新 技术干货