如何成為優秀的開發人員?
http://news.csdn.net/a/20110612/299578.html
原文出自:http://thinkvitamin.com/code/what-makes-a-great-programmer/
來源:CSDN
作者:陳秋歌
對於每個從事開發工作的程式師來說,成為一名優秀的開發人員或許是他們一直所最追求的目標。就如何成為一名優秀的開發人員,Alan Johnson發表了一篇博文《What Makes A Great Programmer?》,CSDN對此文進行了翻譯,全文如下:
事情猶如發生在昨天,那是在2000年,Pargas博士正在給我們資料結構班講解有關資料結構方面的話題,當他講解部署SSH應用時,一個同學問了他一個問題,當時他圍繞“如果你想成為一個真正電腦科學家,你就要從學習vi編輯器開始。”說了一些事情。因為他說這些話的時候,面帶微笑,事後我並不覺得他的話正確。但當時由於年輕、易受影響,回到宿舍中,我就立即開始學習如何使用vi。這樣學習了了一段時間,我意識到一旦我掌握了其中的一些竅門,我就可以快速在vi中實現。
六年前,我迷上了TextMate編輯器軟體。當時我正從事Java軟體發展工作,並在業餘時間學習Rails並做一些Rails項目。那時幾乎所有我讀的文章和觀看的視頻都是說明和演示如何使用TextMate來完成文本編輯工作的方法技巧的。事實上,我當時每天用Eclipse,它正使我變成一個呆子。所以我買了一台Mac電腦,並在開機後的10分鐘內就購買了TextMate軟體並安裝上去。
我可以很老實地說,這兩種文字編輯器中的任何一個都沒有使我成為一個更好的程式師。
優秀的工具,並不能使你成為優秀的程式師。所選用的工具確實很重要。實際上,他們也很棒。正如Tiger Woods即便使用低劣的球棒也會擊敗我們,Messi不穿鞋照樣可以擊敗我們,Rafael Nadal在網球場用60年代的木制球拍也可能擊敗我們一樣。你所積累的技術、知識和經驗才是其中最重要的部分。
所以,工具不能成就優秀的程式師,那什麼可以呢?我認為成就一個優秀程式師需要的諸多因素都依賴於你所工作的內容和與你一同工作的人。但我發現,在軟體發展領域已取得巨大成功的人身上都存在一些共同的特徵,值得分享。我不敢肯定這些特徵你能否學得到或者與生俱來,但我十分強烈的感到,如果我更加注重這些特徵的培養,而不總停留在文字編輯器的替換上,我一定能取得很大的進步。
用戶第一
我認識的最好的程式師都會把使用者放在第一位。他們意識到軟開發出來是讓用戶用的,即便它是一個複雜系統的後臺或一個協定,除了其他程式師不會再有別人用到它們。他們把文檔說明書看得很重要並把它認真寫下來。他們還會幫助用戶去使用他們的代碼。他們也願意付出更大的努力以降低軟體複雜度,從而讓用戶更好的使用他們的軟體。
有強烈的學習欲望
令人稱奇的程式師都對知識如饑似渴,他們總會告訴你一些新鮮有趣的事。他們喜歡大量閱讀(無論線上上閱讀還是線下閱讀)。他們也喜歡動手嘗試,並從中獲取經驗。他們從不害怕嘗試新語言或新平臺。
問題匹配的能力
從事軟體發展工作一段時間後,你就會發覺,在開發過程中遇到的問題有時和你以前曾解決的問題極其相似。能迅速意識到這些,並把以前解決問題的方案迅速遷移到當前問題上是一個很重要的能力。更好的就是在每次解決問題的過程中能夠不斷優化解決方案。
但仍要注意,這並不意味著你可以盲目地說以前的解決方案對本次問題一定奏效。此時巧妙地進行問題類型匹配顯得很重要。什麼時候用以前的解決方案可行,什麼時候不行,對此你要有一定的判斷力。
熱愛軟體發展工作
我哥在高三時學習Python語言,當我問他是否喜歡這門課,他對我說,我極想成為一名程式師,但這對他來說是件最無聊的事。從某種程度來說,我認為他是對的。絕大部分時間裡,我面對的是電腦,而不是人。我常常因為把一行行長短不一的語句轉化成可工作的軟體而興奮。從事軟體發展的每個人並不是都喜歡做這個工作,但我曾見過的最優秀的程式師絕對是喜歡軟體發展的。
持之以恆
軟體發展的推進過程往往比人想像得慢很多。它需要花費很多時間來完成。有時你必須耐心地去完成你要寫的代碼。作為程式師,有時我們會寫一些確實很有趣的代碼,但有時我們也會因為大量寫重複的代碼而失落。我認為最好的程式師是可以一直堅持到最後的程式師,他們可以預見他們所從事工作的遠大前景,他們樂於享受一步步構建工程直到最終完成的過程。
以上是我認為可以優秀程式師的所具有的一些個性特徵,但並不意味著這是全部。所以我想聽聽你的看法。你認為什麼造就了成功的程式師呢?
原文連結:What Makes A Great Programmer?

