回想起來(lái)就像是在昨天。那是2000年,在數據結構課程的課堂上,Pargas博士站在前面給我們講一些關(guān)于數據結構的話(huà)題,一個(gè)SSH的畫(huà)面投影在我們前 面的墻上。有人問(wèn)了一個(gè)問(wèn)題,他說(shuō)了一些東西,差不多是這樣的話(huà)“是這樣,如果你想成為一個(gè)真正的計算機科學(xué)家,你需要從現在開(kāi)始就使用vi編輯器”。 我想他是在笑談,課后感覺(jué)他說(shuō)的話(huà)并不是完全的正確,但作為年輕且容易被感染的我,回到寢室立刻就開(kāi)始學(xué)習如何使用vi。學(xué)習過(guò)程不容易,花費了不少時(shí)間,但一旦掌握了其中的竅門(mén),我發(fā)現,使用vi的確可以更快的做事情。 時(shí)間推到6年前,那時(shí)我對TextMate十分的著(zhù)迷。我的工作是做Java開(kāi)發(fā),但同時(shí)我學(xué)習Rails,在業(yè)余時(shí)間開(kāi)發(fā)一些Rails項目。那時(shí)幾乎所有我讀的文章和觀(guān)看的視頻都是說(shuō)明和演示如何使用TextMate來(lái)完成文本編輯工作的方法技巧的。事實(shí)上,我每天都在使用的Eclipse想要把我變成一頭蠢豬。于是,我買(mǎi)了一臺Mac電腦,開(kāi)機后十分鐘內我就買(mǎi)了一套TextMate裝了上去。 說(shuō)老實(shí)話(huà),這兩種編輯器沒(méi)有一種使我成為一個(gè)更好的程序員。 ![]() 優(yōu)秀的工具并不會(huì )把你變得更優(yōu)秀。你使用的工具確實(shí)很重要。事實(shí)上,它們非常棒。但老虎伍茲即使用幾根樹(shù)枝也能把我們全部打敗,梅西即使不穿鞋也能把我們踢的很慘,拉斐爾-納達爾即使使用一個(gè)60年代產(chǎn)的老式木質(zhì)網(wǎng)球拍也能把我們任何一個(gè)人打敗。該死,他即使用乒乓球拍也能打敗我們。技術(shù),知識,以及鍛煉出來(lái)的經(jīng)驗是你在與人對比中最重要的部分。 所以,工具造就不出程序員。那什么可以呢?我想,造就一個(gè)偉大的程序員的諸多因素都依賴(lài)于你所從事的事和與你共事的人,但從很多在軟件開(kāi)發(fā)領(lǐng)域取得了巨大成功的人身上,我看到了很多共同的特征,我覺(jué)得值得與你們分享一下。我并不確定這些特征你是否能學(xué)得到,或者你天生就有,但我強烈的感覺(jué)到,如果我能花更多了時(shí)間去追求這些特征,而不是鐘情于更換編輯器,我一定能取得更大的進(jìn)步。 以人為本我知道的最好的程序員總是把人放在第一位。他們明白他們是在為人寫(xiě)軟件,即使那只是一些復雜系統的后臺程序或協(xié)議,除了程序員沒(méi)有人會(huì )用到它們。他們寫(xiě)文檔,因為這很重要。他們幫助其它人如何使用自己的程序代碼。他們愿意付出更多的努力去解決更復雜的問(wèn)題來(lái)讓人們以正確的方式使用他們的軟件。 對學(xué)習有很大的胃口神奇的程序員對知識有一種可笑的饑渴感。他們總是對你說(shuō)一些新的、有趣的東西。他們習慣于大量的閱讀(不論在線(xiàn)的還是線(xiàn)下的),他們喜歡嘗試,從中學(xué)到經(jīng)驗。他們對新出現的語(yǔ)言和平臺毫不擔憂(yōu)恐懼。 掌握問(wèn)題規律的本領(lǐng)當你做開(kāi)發(fā)有了一段時(shí)間后,你會(huì )發(fā)現有時(shí)出現的問(wèn)題和你曾經(jīng)處理過(guò)的問(wèn)題看起來(lái)驚人的相似。能夠識別這些問(wèn)題,把過(guò)往的解決方案應用到你當前的問(wèn)題上,這是一個(gè)很有用處的本領(lǐng)。如果每次都能改進(jìn)這個(gè)方案,那是更好了。 注意,這并不意味這你可以盲目的認為過(guò)去這個(gè)方案可行,現在它就一定可行。這種過(guò)往問(wèn)題和現在出現的問(wèn)題的類(lèi)型匹配是很有技巧性的。你需要認真判斷何時(shí)使用一個(gè)歷史方案是可行的,什么時(shí)候是不行的。 有一點(diǎn)神經(jīng)質(zhì)我弟弟在高中時(shí)上了一次Python課,當我問(wèn)他是否喜歡這課時(shí),他說(shuō)我腦袋一定出問(wèn)題了才去愿意當一名程序員,他說(shuō)編程是他這輩子子做過(guò)的最無(wú)聊的一件事。從某種程度上講,他是對的。大多數的日子里我是對著(zhù)計算機說(shuō)話(huà),而不是人。想到這些要把一行一行的基本的長(cháng)長(cháng)短短的語(yǔ)句拼成一個(gè)軟件,我不由的打了大大一個(gè)冷戰。并不是所有的人都喜歡做這種事情,但是我知道的最優(yōu)秀的程序員絕對是熱愛(ài)制作軟件的。 執著(zhù)軟件開(kāi)發(fā)是一個(gè)實(shí)際上比任何人的想像都要緩慢的開(kāi)發(fā)過(guò)程。它很費時(shí)間。有時(shí)候你必須要有最夠的耐心去精雕細琢出你需要的代碼。有時(shí),作為程序員,我們會(huì )寫(xiě)出非常有趣的代碼,但也有時(shí)候,我們不得不哭喪著(zhù)臉去寫(xiě)一大堆過(guò)去曾經(jīng)寫(xiě)過(guò)的代碼。想想偉大的程序員之所以能堅持下來(lái),是因為他們能看到他們所從事的事業(yè)的大藍景,他們喜歡這一點(diǎn)一點(diǎn)走向目標的開(kāi)發(fā)過(guò)程。 這就是我想到的構成一個(gè)優(yōu)秀程序員的一些特征,但這并不是全部,所以我想聽(tīng)聽(tīng)你的觀(guān)點(diǎn)。你認為是什么使一個(gè)程序員變的優(yōu)秀? 本文原始地址:是什么造就了偉大的程序員? |