我认识到一个非常有悖常理的现象,优秀的程序员都是即懒又傻的。
因为懒,他才会写出各种各样的工具来替自己干活。因为懒,他才会想办法避免去写无聊重复的代码——因此避免的代码的冗余,消减了维护的成本,使重构变得容易。最终,这些由于懒惰激发出的动力而开发出的工具和最佳编程实践方法提升了产品的质量。
懒惰的程序员也因此变成了优秀的程序员。当然,这只是事情的一部分;从一个懒惰的程序员变成一个优秀的程序员,他/她会在学习如何能够永远保持懒惰时表现出惊人的不懒惰——也就是,什么样的软件工具能让自己干活更轻松,什么方法能避免繁冗,如何能让工作更容易的维护和重构。
其次,(我将用多一点篇幅来说明这一点,因为我发现这个观点比第一个更难接受。)优秀的程序员都是傻的。为什么?因为如果他很聪明,或他知道自己很聪明,他就会:
a)停止学习
b)对自己的工作不再高标准、高要求
第一点将会导致他不再努力的去发现新的技术,让自己工作的更快捷。第二点将导致他的代码变得难以debug,难以重构。在程序员和编译器无休止的战争中,程序员最好一开始就投降并承认是自己的错,而不是编译器的错(除非是关于字符编码问题,有些编译器确实有问题)。
但是,还有一个优秀的程序员必须笨的更重要的理由。为了寻找到更好的问题解决方案,他必须保持一个谦虚的心态,他必须跳出模式想问题。某种程度上,这会让他们回到小孩的思维模式;因从未经历“no”的打击而极具创造力。
相反的思维模式就不是那么具有创见性,会认为对现状了如指掌,会接受现状。可是又有谁知道多少你认为的不可能是真正的不可能?知道的越少你就会越激进。你开发的工具越好,你的产品就会因为它们变得质量更高。
相 似的,当同事问我:“这为什么不好用?”大多数时候是因为他们修改错了问题(例如,他想链接lib1,但他实际链接的是lib2,或事实上他根本没有链接任何lib)。当你向一个同事求助,尤其是编程问题,你一般不会告诉他更多关于项目的事情。当他问一些很傻的问题时,你潜意识里就会抵制回答,因为你认为你知道的很清楚,但事实上你并不是这样。
事情当然有另外一面。太笨也就想不出任何办法,做错事,解决不了任何问题。而太聪明的喜欢坐着计划好问题,但却很少行动。实用主义的程序员取其中。他知道,10次决策一次错误比起只有五次正确决定而另五次什么都不做要好的多。
这有点像一个关于蜈蚣的故事。蜈蚣很擅长使用它的100条腿一起走路。它从来没有想过它是如何能做到这些的。直到有一天,一个臭虫问他,“你是如何控制这么多腿走路的?你不觉得让它们按一定的节奏配合走路很难吗?”臭虫说完就走了,蜈蚣却仍然坐在那里思考,思考如何走路的,不解,甚至(此生中的第一次)有些担心了。从那天起,这个蜈蚣再也没能走一步。
所以,如果你想实现某个事情,不要想太多。当然,这也只是事情的一半….
原文链接:
译文链接:
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://www.jmbhsh.com/shipinzhuangshi/31957.html