天天看點

是什麼造就了偉大的程式員

導讀:本文是從《What Makes A Great Programmer?》這篇文章翻譯而來,譯文來自外刊IT評論《是什麼造就了偉大的程式員?》。軟體開發實際上是比任何人的想像都要緩慢的開發過程。它很費時間。有時候你必須要有足夠的耐心去精雕細琢出你需要的代碼。而造就一個偉大的程式員的諸多因素都依賴于你所從事的事和與你共事的人。

文章内容如下:

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

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

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

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

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

以人為本

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

對學習有很大的胃口

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

掌握問題規律的本領

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

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

有一點神經質

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

執着

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

這就是我想到的構成一個優秀程式員的一些特征,但這并不是全部,是以我想聽聽你的觀點。你認為是什麼使一個程式員變的優秀?

原文出處:[url]http://sd.csdn.net/a/20110608/299365.html[/url]