为什么我是世界上最好的程序员?
我这个人比较谦虚,不好意思自个夸自己。所以请允许我从《McConnell’s Code Complete 2.0》一书中摘录其关于个性的篇章来说明:
编程的强烈内在本质,使得个性显得尤为重要。连续8小时将注意力集中在代码上有多难,你也是知道的。你应该也有过因为前一天精神过于集中导致第二天 完全精疲力竭的经验。可能上午8点到下午2点之间你还能专心致志,但是一过这个点就有一种想放弃的感觉。尽管你并没有放弃——但是,从下午2点到下午5点 你任由浑浑噩噩的头脑支配你编码,然后再花大量时间来修复这段时间写的代码。
编程工作基本上是不受人待见的,因为没有人能够真正了解你的工作内容。我们都有过这样的项目,在项目中我们花了80%的时间用于研究我们觉得有趣的小片段,20%的时间则用来建立剩下80%的程序。
雇主不能强迫你成为一个优秀的程序员:甚至很多时候他们也没办法判断你是否优秀。如果你想成为伟大的程序员,那么你得负责让自己变得伟大起来。而这是你的个性问题。
可取的个性特征列表的榜首往往是谦逊:
没有人能真正足够聪明到可以驾驭计算机编程。哪怕是充分理解一个普通的程序也需要具备消化吸收理解它们的能力。你将你的聪明劲往哪里使以及使用的方式比你有多少聪明更重要。
在1972年的图灵奖讲座上,Edsger Dijkstra发表了一篇题为《The Humble Programmer》 的文章。他认为,大部分编程是为了弥补IQ的局限。那些最擅长编程的人也是能认识到自己IQ不是那么高的人。他们很谦虚。而那些最不擅长编程的人,往往拒 绝接受这样一个事实,即他们的头脑无法胜任任务。他们的自尊心阻碍了他们成为伟大的程序员。你越是学习弥补IQ的不足,你就越能成为更好的程序员。你越谦 虚,提高得就越快。
许多好的编程习惯其目的就是为了减少脑细胞的负载。你也许会认为编程的上策是开发心智能力,这样就不需要那些辅助编程的“拐杖”了。可能你会认为那 些使用“拐杖”的程序员低人一等。但是,根据经验表明,那些谦虚的程序员,由于会去弥补他们在编码中犯下的错误,所以他们的代码错误更少,代码更容易为自 己和他人所理解。真正的下策应该是那些既犯错误又拖延时间的方式。
当给应聘人员面试相关编程职位的时候,我一直在找那些敢于在需要的时候说“我不知道”的人。那些不能和不愿意这么做的应聘人员,我会在心里给他们打个叉,因为这些类型的程序员是危险的。“我能,我知道”虽然听上去挺美,很有诱惑力,但实际上既肤浅又有危害。
开发博客的世界难道不像一个令人震撼的不断喷射知识的源泉——同时亦是令人难以置信的谦逊?有那么多的人写博客,其中不乏这个领域的大咖,比我聪明比我优秀。
但是,我们的工作不是比别人更优秀:我们只需要比我们一年前更优秀就可以了。