我认识到一个非常有悖常理的现象,优秀的程序员都是即懒又傻的。
因为懒,他才会写出各种各样的工具来替自己干活。因为懒,他才会想办法避免去写无聊重复的代码——因此避免的代码的冗余,消减了维护的成本,使重构变得容易。最终,这些由于懒惰激发出的动力而开发出的工具和最佳编程实践方法提升了产品的质量。
懒惰的程序员也因此变成了优秀的程序员。当然,这只是事情的一部分;从一个懒惰的程序员变成一个优秀的程序员,他/她会在学习如何能够永远保持懒惰时表现出惊人的不懒惰——也就是,什么样的软件工具能让自己干活更轻松,什么方法能避免繁冗,如何能让工作更容易的维护和重构。
其次,(我将用多一点篇幅来说明这一点,因为我发现这个观点比第一个更难接受。)优秀的程序员都是傻的。为什么?因为如果他很聪明,或他知道自己很聪明,他就会:
a)停止学习
b)对自己的工作不再高标准、高要求
第一点将会导致他不再努力的去发现新的技术,让自己工作的更快捷。第二点将导致他的代码变得难以debug,难以重构。在程序员和编译器无休止的战争中,程序员最好一开始就投降并承认是自己的错,而不是编译器的错(除非是关于字符编码问题,有些编译器确实有问题)。
但是,还有一个优秀的程序员必须笨的更重要的理由。为了寻找到更好的问题解决方案,他必须保持一个谦虚的心态,他必须跳出模式想问题。某种程度上,这会让他们回到小孩的思维模式;因从未经历“no”的打击而极具创造力。
相反的思维模式就不是那么具有创见性,会认为对现状了如指掌,会接受现状。可是又有谁知道多少你认为的不可能是真正的不可能?知道的越少你就会越激进。你开发的工具越好,你的产品就会因为它们变得质量更高。
我从工作中总结出,一个优秀的程序员,在从经理那里确认一个需求时,他需要以一个笨人的思维模式;他会从最简单的,孩子般的问题问起。他不会想当然的接受这个问题提供者提供的信息。在web开发中一个典型的交谈会是这样:
“昨天,一个客户说我们网站上的logo图片无法显示。”
“他重启浏览器了吗?”
“是的。”
“他重启计算机了吗?”
“是的。”
“他清空缓存了吗?”
“是的。”
“他用的是IE6吗?”
“是的。”
“他确信是没看见吗?”
“是的。”
“他是在电脑屏幕上看我们的网站吗?”
“什么?”
“是这样,他也许把它打印了出来。”
“不,看是盯着屏幕看的。”
“除了logo,他能看到网站上的其它图片吗?”
“什么?哦,我问问。”
为了说明我们的主题(这个故事完全是虚构的),我们假设客户真的关闭了浏览器的图片显示。也许是他儿子干的。不管怎样,如果你用“聪明”的模式思考,你很难找出这样的答案。所以这个程序员问的问题都不需要任何的编程知识。因为这是一个很傻的问题,所以只有傻办法才能解决。
数年前,我曾就因为我的一次更新而弄坏整个网站的事情进行了一此很长的电话讨论….事实证明是因为那个家伙把他的浏览器的CSS给禁掉了。从那时起,我就开始怀疑一切,而不是因为这样一个简单的事情而聆听一个半小时什么是代码质量的抱怨。最终,猜测是我的更新出了问题….只是一个猜测。如果你想解决问题,最好的方法是只听事实部分,不要听他们认为的可能的原因。
相似的,当同事问我:“这为什么不好用?”大多数时候是因为他们修改错了问题(例如,他想链接lib1,但他实际链接的是lib2,或事实上他根本没有链接任何lib)。当你向一个同事求助,尤其是编程问题,你一般不会告诉他更多关于项目的事情。当他问一些很傻的问题时,你潜意识里就会抵制回答,因为你认为你知道的很清楚,但事实上你并不是这样。
事情当然有另外一面。太笨也就想不出任何办法,做错事,解决不了任何问题。而太聪明的喜欢坐着计划好问题,但却很少行动。实用主义的程序员取其中。他知道,10次决策一次错误比起只有五次正确决定而另五次什么都不做要好的多。
这有点像一个关于蜈蚣的故事。蜈蚣很擅长使用它的100条腿一起走路。它从来没有想过它是如何能做到这些的。直到有一天,一个臭虫问他,“你是如何控制这么多腿走路的?你不觉得让它们按一定的节奏配合走路很难吗?”臭虫说完就走了,蜈蚣却仍然坐在那里思考,思考如何走路的,不解,甚至(此生中的第一次)有些担心了。从那天起,这个蜈蚣再也没能走一步。
所以,如果你想实现某个事情,不要想太多。当然,这也只是事情的一半….
转自:
外刊评论IT网
分享到:
相关推荐
【优秀程序员的十个习惯】 1. 持续学习与跟进新技术:作为优秀程序员,保持对新知识的渴望至关重要。不断学习新的编程语言、框架和工具,关注行业动态,参与专业社区讨论,如CSDN、ITPUB、CHINAUNIX、digg.com等,...
成为优秀的程序员不仅在于编写高质量的代码,更重要的是养成一系列有益的习惯,这些习惯能够提升个人技能,促进团队协作,以及保持对技术的敏锐度。以下是对标题和描述中提到的十个程序员习惯的详细解释: 1. **...
《优秀程序员面试攻略》是一本专门为那些准备踏入或已经在IT行业中的程序员们量身打造的面试指南。这本书全面覆盖了计算机软件开发领域的核心知识,旨在帮助程序员在面试中展现出最佳的专业素养,提升成功获得理想...
【如何成为优秀的程序员】 在IT行业中,成为一名优秀的程序员是许多技术爱好者追求的目标。这不仅意味着具备扎实的技术基础,还需要不断学习、创新以及良好的团队协作能力。40分钟的嵌入式培训机构亚嵌老师的讲解,...
优秀程序员之路 Java开发经验及技巧大汇总优秀程序员之路 Java开发经验及技巧大汇总优秀程序员之路 Java开发经验及技巧大汇总优秀程序员之路 Java开发经验及技巧大汇总优秀程序员之路 Java开发经验及技巧大汇总优秀...
程序员成长路线图 从入门到优秀
优秀的程序员通常都具备极强的责任感和使命感,他们愿意为解决复杂的问题付出额外的努力。这种积极的态度不仅能够激励自己不断前进,还能带动整个团队的积极性。 #### 四、具备预见性和准备未知因素的能力 在软件...
优秀程序员必备的简历模板
欢迎访问: ... 发了n份简历都石沉大海,杳不音讯。 这可能就是你简历写的不得档,并非个人能力不行。 这里的7份简历,是人力资源经理从上千份简历中挑选出来的。 (应聘程序员的简历)
[12]优秀程序员之路——C++开发经验及技巧大汇总.zip上位机开发VC串口学习资料源码下载[12]优秀程序员之路——C++开发经验及技巧大汇总.zip上位机开发VC串口学习资料源码下载[12]优秀程序员之路——C++开发经验及...
如何成为优秀的程序员?请看程序员的10层楼
关于什么样的人可以被称为程序员,文章中给出了一个相对宽泛的定义:“凡是从计算机专业或相近专业毕业的、以编写程序为职业的人都可算得上是程序员。”然而,在早期,由于计算机行业的快速发展和技术的不断进步,很...
如何成为一名优秀的程序员。。。,在公司可以轻轻松松。。。
程序员成长路线图:从入门到优秀 程序员成长路线图是 IT 行业中一个非常重要的主题,作为一个 IT 行业职员,我经历过一个普通程序员成长的过程,同时也接触过许多不同层次的程序员。他们或在我身边匆匆而过,或与我...
那么,什么样的人适合成为程序员呢?程序员应具备哪些素质?同时,又有哪些禁忌需要避免呢? 首先,程序员需要耐得住寂寞。编程工作往往需要长时间集中精力,沉浸在代码的世界里,这需要一种静心专注的能力。静不下...
通过这种方式,伟大的程序员能够确保他们的解决方案既有效又高效,同时也能减少后期调试和修改的工作量。 #### 四、对代码的信任 伟大的程序员编写的代码不仅仅是功能上的实现,更是品质的保证。项目管理者对这些...
优秀程序员的45个习惯.rar ok good