什麼緣由成就了一位優秀的程序員?(轉)

這些年我曾和不少程序員一塊兒工做,他們之中的一些人很是厲害,而另外一些人顯得平庸。不久前由於和一些技術很是熟練的程序員工做感受很愉快,我花了一些時間在考慮我佩服他們什麼呢?什麼緣由讓優秀的程序員那麼優秀,糟糕的程序員那麼糟糕?簡而言之,什麼緣由成就了一位優秀的程序員呢?程序員

根據個人經驗,成爲一個優秀程序員同年齡,教育程度,還有和你賺多少錢沒有任何關係。關鍵在於你的作法,更深刻地說,就是你的想法。我注意到我所欽佩的程序員都有一些類似習慣。不是他們所選語言的知識,也不是對數據結構和算法的深刻理解,甚至不是多年的工做經驗。而是他們的溝通方式,他們管理本身的方式,以及以他們精湛技術水平編程演講的方式。算法

固然成爲一個優秀的程序員還要具有更多特質,我也不能單單依靠是否存在(或者缺乏)這些特質來評判一個程序員。可是我知道當我看見它,當我看見一個程序員具有這些特質的時候,我認爲,「這我的真的知道他們正在作什麼」。編程

他們作調查研究網絡

或者叫「三思然後行」,或者叫「谷歌一下」數據結構

不論你怎麼稱呼它,大多數可能會遇到的編程問題已經以某種形式解決,傳道書早就記載着世界上原本就沒有什麼新鮮事。優秀的程序員在解決問題以前知道經過GitHub圖書館、網絡博客,或者經過與經驗豐富的程序員交流等形式來作調查研究。數據結構和算法

我見過甚至是優秀的程序員能夠快速找出解決方案,可是和我一塊兒工做過的糟糕的程序員歷來不求助於他人,結果作了大量的重複工做或者錯誤地解決問題,不幸的是,後來他們終將爲本身犯下的錯誤付出了代價編程語言

他們閱讀錯誤信息(並按照它們行事)函數

這包括解析堆棧路徑信息。是的,這是一件很是不幸的事情。可是若是你不肯意這麼作的話,怎麼才能知道哪裏錯了呢?我知道的高效程序員是不會懼怕深究問題的。低效的程序員看見有錯誤,但就是不肯意甚至是去讀這些錯誤信息。(這聽起來很好笑,但你會驚訝我遇到它的頻率)工具

更進一步地說,優秀的程序員發現問題立刻就解決它。讀錯誤信息對他們來講僅僅是個開始,他們渴望深究問題並查出問題的根源。他們不喜歡推卸責任,而是願意查找解決問題的方案,問題在他們這裏止步。測試

他們去看源代碼

文檔、測試、團隊,這些都會說謊。儘管不是故意的,可是若是你想確切地知道事情是怎麼回事,你必須本身親自看源代碼。

若是它不是你最擅長的語言,你也不要懼怕。若是你是一個Ruby的程序員,你懷疑在Ruby的C語言庫中有個錯誤,破解打開看看。是的,你可能拿不到源代碼,可是誰知道呢?你只是可能而已,你有更好的機會,總比你根本不去嘗試好吧。

不幸的是,若是你處在一個封閉源代碼的環境中,這會變得很是難,但道理是不變的。糟糕的程序員對於查看源代碼沒有絲毫的興趣,結果問題困擾他們時間,要比願意看源代碼的時間長得多。

They just do it

優秀的程序員趨向於主動去作。他們的心裏有着難以控制的衝動,當他們肯定問題或者發現新的需求時他們馬上會實現解決方案,有時過早有時太過激進。可是他們對問題本能的反應是正面解決問題。

有時這會使人很煩惱,可是他們的熱情是他們作好事情的一個重要部分。一些人可能拖延時間迴避問題或者等待問題本身可以消失,然而優秀的程序員一開始就解決它。簡而言之(或者顯而易見),若是你看見有人興致勃勃地查找問題並在解決,極可能你的手下有位優秀的程序員。

他們避免危機

這一般是糟糕程序員的特色:他們輕易地從一我的爲危機跳到另外一我的爲危機,在沒有真正理解一個問題以前就進入到下一個問題。他們會把責任歸咎於程序的錯誤,而後花費大把的時間調試已經運行良好的代碼。他們讓情感佔據主動,相信直覺,而不是仔細嚴謹的分析。

若是你匆匆忙忙地解決一個問題,甚至視每個問題爲震驚世界的災難。你極可能犯錯誤或者沒有解決潛在的問題。優秀的程序員花時間去了解發生了什麼錯誤,哪怕災難來臨的時候;但更重要的是,他們對待日常的問題像是要解決的重要問題,所以他們更準確地解決更多的問題,而且這樣作沒有提升團隊的緊張程度。

他們善於溝通交流

說到底,編程是一種形式的溝通交流。寫代碼和寫散文創做同樣,可以簡潔地表達你的想法很重要。我發現那些能夠寫簡潔郵件,優雅的狀態報告,或者甚至只是一個有效的備忘錄的程序員也將會是優秀的程序員。

這能應用在寫代碼還有英語上。用圓括號、括號和單個字母的函數寫出一行代碼固然是有可能的,可是若是沒有人理解它,有什麼意義呢。優秀的程序員會花時間以各類渠道交流他們的想法。

他們激情四射

我認爲這多是優秀的程序員最重要的方面(也許這點也適用於除計算機科學領域的其它領域)

若是你真的在意你所作的事情,若是不把它當成工做,看成一個業餘愛好、興趣或一件頗有吸引力的事情,那麼在該領域你比其餘人更有優點。優秀的程序員一直不斷編程。普通程序員一天工做八小時,而且沒有業餘項目,也沒興趣回饋社區。他們不會不斷地嘗試新方法,而只是爲了看看它們是如何運行而執着於編程語言。

當我看見一個程序員利用週末的時間作本身喜歡的項目時,參與創做他們天天能用到的工具時,執着於新的有意義的事情時:那個時候我確信我眼前的是一個使人驚奇的人。最後,優秀的程序員視他們的職業不只僅是賺錢的途徑,更是讓生活變得有些不一樣的方法。我認爲那就是成就最優秀程序員的真正緣由。對於他們來講,編寫代碼是改變世界的一種方法,也是我很是尊敬崇拜他們的緣由。

相關文章
相關標籤/搜索