天天看點

為什麼優秀的程式員既懶又笨

為什麼優秀的程式員既懶又笨

我認識到一個非常有悖常理的現象,優秀的程式員都是即懶又傻的。

因為懶,他才會寫出各種各樣的工具來替自己幹活。因為懶,他才會想辦法避免去寫無聊重複的代碼——是以避免的代碼的備援,消減了維護的成本,使重構變得容易。最終,這些由于懶惰激發出的動力而開發出的工具和最佳程式設計實踐方法提升了産品的品質。

懶惰的程式員也是以變成了優秀的程式員。當然,這隻是事情的一部分;從一個懶惰的程式員變成一個優秀的程式員,他/她會在學習如何能夠永遠保持懶惰時表現出驚人的不懶惰——也就是,什麼樣的軟體工具能讓自己幹活更輕松,什麼方法能避免繁冗,如何能讓工作更容易的維護和重構。

為什麼優秀的程式員既懶又笨

其次,(我将用多一點篇幅來說明這一點,因為我發現這個觀點比第一個更難接受。)優秀的程式員都是傻的。為什麼?因為如果他很聰明,或他知道自己很聰明,他就會:

  • a)停止學習
  • b)對自己的工作不再高标準、高要求

第一點将會導緻他不再努力的去發現新的技術,讓自己工作的更快捷。第二點将導緻他的代碼變得難以debug,難以重構。在程式員和編譯器無休止的戰争中,程式員最好一開始就投降并承認是自己的錯,而不是編譯器的錯(除非是關于字元編碼問題,有些編譯器确實有問題)。

為什麼優秀的程式員既懶又笨

但是,還有一個優秀的程式員必須笨的更重要的理由。為了尋找到更好的問題解決方案,他必須保持一個謙虛的心态,他必須跳出模式想問題。某種程度上,這會讓他們回到小孩的思維模式;因從未經曆“no”的打擊而極具創造力。

相反的思維模式就不是那麼具有創見性,會認為對現狀了如指掌,會接受現狀。可是又有誰知道多少你認為的不可能是真正的不可能?知道的越少你就會越激進。你開發的工具越好,你的産品就會因為它們變得品質更高。

為什麼優秀的程式員既懶又笨

我從工作中總結出,一個優秀的程式員,在從經理那裡确認一個需求時,他需要以一個笨人的思維模式;他會從最簡單的,孩子般的問題問起。他不會想當然的接受這個問題提供者提供的資訊。在web開發中一個典型的交談會是這樣:

“昨天,一個客戶說我們網站上的logo圖檔無法顯示。”

“他重新開機浏覽器了嗎?”

“是的。”

“他重新開機計算機了嗎?”

“他清空緩存了嗎?”

“他用的是IE6嗎?”

“他确信是沒看見嗎?”

“他是在電腦螢幕上看我們的網站嗎?”

“什麼?”

“是這樣,他也許把它列印了出來。”

“不,看是盯着螢幕看的。”

“除了logo,他能看到網站上的其它圖檔嗎?”

“什麼?哦,我問問。”

為了說明我們的主題(這個故事完全是虛構的),我們假設客戶真的關閉了浏覽器的圖檔顯示。也許是他兒子幹的。不管怎樣,如果你用“聰明”的模式思考,你很難找出這樣的答案。是以這個程式員問的問題都不需要任何的程式設計知識。因為這是一個很傻的問題,是以隻有傻辦法才能解決。

數 年前,我曾就因為我的一次更新而弄壞整個網站的事情進行了一此很長的電話讨論….事實證明是因為那個家夥把他的浏覽器的CSS給禁掉了。從那時起,我就開 始懷疑一切,而不是因為這樣一個簡單的事情而聆聽一個半小時什麼是代碼品質的抱怨。最終,猜測是我的更新出了問題….隻是一個猜測。如果你想解決問題,最 好的方法是隻聽事實部分,不要聽他們認為的可能的原因。

為什麼優秀的程式員既懶又笨

相 似的,當同僚問我:“這為什麼不好用?”大多數時候是因為他們修改錯了問題(例如,他想連結lib1,但他實際連結的是lib2,或事實上他根本沒有連結 任何lib)。當你向一個同僚求助,尤其是程式設計問題,你一般不會告訴他更多關于項目的事情。當他問一些很傻的問題時,你潛意識裡就會抵制回答,因為你認為 你知道的很清楚,但事實上你并不是這樣。

事情當然有另外一面。太笨也就想不出任何辦法,做錯事,解決不了任何問題。而太聰明的喜歡坐着計劃好問題,但卻很少行動。實用主義的程式員取其中。他知道,10次決策一次錯誤比起隻有五次正确決定而另五次什麼都不做要好的多。

[英文原文:Why Good Programmers Are Lazy and Dumb ]

上一篇: 筆試經曆
下一篇: 經曆地震

繼續閱讀