是什麼造就了偉大的程序員?

原文地址 http://www.aqee.net/2011/06/08/what-makes-a-great-programmer/

 

想起來就像是在昨天。那是2000年,在數據結構課程的課堂上,Pargas博士站在前面給我們講一些關於數據結構的話題,一個SSH的畫面投影在我們前面的牆上。有人問了一個問題,他說了一些東西,差不多是這樣的話“是這樣,如果你想成爲一個真正的計算機科學家,你需要從現在開始就使用vi編輯器”。我想他是在笑談,課後感覺他說的話並不是完全的正確,但作爲年輕且容易被感染的我,回到寢室立刻就開始學習如何使用vi。學習過程不容易,花費了不少時間,但一旦掌握了其中的竅門,我發現,使用vi的確可以更快的做事情。

時間推到6年前,那時我對TextMate十分的着迷。我的工作是做Java開發,但同時我學習Rails,在業餘時間開發一些Rails項目。那時幾乎所有我讀的文章和觀看的視頻都是說明和演示如何使用TextMate來完成文本編輯工作的方法技巧的。事實上,我每天都在使用的Eclipse想要把我變成一頭蠢豬。於是,我買了一臺Mac電腦,開機後十分鐘內我就買了一套TextMate裝了上去。

說老實話,這兩種編輯器沒有一種使我成爲一個更好的程序員。

優秀的工具並不會把你變得更優秀。你使用的工具確實很重要。事實上,它們非常棒。但老虎伍茲即使用幾根樹枝也能把我們全部打敗,梅西即使不穿鞋也能把我們踢的很慘,拉斐爾-納達爾即使使用一個60年代產的老式木質網球拍也能把我們任何一個人打敗。該死,他即使用乒乓球拍也能打敗我們。技術,知識,以及鍛煉出來的經驗是你在與人對比中最重要的部分。

所以,工具造就不出程序員。那什麼可以呢?我想,造就一個偉大的程序員的諸多因素都依賴於你所從事的事和與你共事的人,但從很多在軟件開發領域取得了巨大成功的人身上,我看到了很多共同的特徵,我覺得值得與你們分享一下。我並不確定這些特徵你是否能學得到,或者你天生就有,但我強烈的感覺到,如果我能花更多了時間去追求這些特徵,而不是鍾情於更換編輯器,我一定能取得更大的進步。

以人爲本

我知道的最好的程序員總是把人放在第一位。他們明白他們是在爲人寫軟件,即使那只是一些複雜系統的後臺程序或協議,除了程序員沒有人會用到它們。他們寫文檔,因爲這很重要。他們幫助其它人如何使用自己的程序代碼。他們願意付出更多的努力去解決更復雜的問題來讓人們以正確的方式使用他們的軟件。

對學習有很大的胃口

神奇的程序員對知識有一種可笑的飢渴感。他們總是對你說一些新的、有趣的東西。他們習慣於大量的閱讀(不論在線的還是線下的),他們喜歡嘗試,從中學到經驗。他們對新出現的語言和平臺毫不擔憂恐懼。

掌握問題規律的本領

當你做開發有了一段時間後,你會發現有時出現的問題和你曾經處理過的問題看起來驚人的相似。能夠識別這些問題,把過往的解決方案應用到你當前的問題上,這是一個很有用處的本領。如果每次都能改進這個方案,那是更好了。

注意,這並不意味這你可以盲目的認爲過去這個方案可行,現在它就一定可行。這種過往問題和現在出現的問題的類型匹配是很有技巧性的。你需要認真判斷何時使用一個歷史方案是可行的,什麼時候是不行的。

有一點神經質

我弟弟在高中時上了一次Python課,當我問他是否喜歡這課時,他說我腦袋一定出問題了纔去願意當一名程序員,他說編程是他這輩子子做過的最無聊的一件事。從某種程度上講,他是對的。大多數的日子裏我是對着計算機說話,而不是人。想到這些要把一行一行的基本的長長短短的語句拼成一個軟件,我不由的打了大大一個冷戰。並不是所有的人都喜歡做這種事情,但是我知道的最優秀的程序員絕對是熱愛製作軟件的。

執着

軟件開發是一個實際上比任何人的想像都要緩慢的開發過程。它很費時間。有時候你必須要有最夠的耐心去精雕細琢出你需要的代碼。有時,作爲程序員,我們會寫出非常有趣的代碼,但也有時候,我們不得不哭喪着臉去寫一大堆過去曾經寫過的代碼。想想偉大的程序員之所以能堅持下來,是因爲他們能看到他們所從事的事業的大藍景,他們喜歡這一點一點走向目標的開發過程。

這就是我想到的構成一個優秀程序員的一些特徵,但這並不是全部,所以我想聽聽你的觀點。你認爲是什麼使一個程序員變的優秀?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章