八種方式成就更出色的代碼編寫者

jopen 8年前發布 | 7K 次閱讀 程序員

八種方式成就更出色的代碼編寫者

1.提醒自己還有多少內容需要學習

學習的第一步在于了解自己還有哪些不足之處。雖然這樣的結論聽起來非常直觀,但經驗豐富的程序員能夠更為精確地判斷填補不足需要投入的具體時間。很多計算科學畢業生會傲慢地認為“我什么都懂”,并希望把自己已經掌握的一切展示給新同事們。但事實上,“我知道自己在做什么”才是最重要的,這樣的態度能夠幫助大家更好地學習新知識。

2.不要執著于證明自己是對的

為了真正成為一名卓越——而不只是合格——的程序員,大家需要從實踐中積累經驗。不過需要注意的是,經驗也有可能讓我們一次又一次重復糟糕的行為并養成負面習慣。我們都遇到過擁有八年經驗的老程序員……但有些人只不過是在每年重復自己的習慣,而且一重復就是八次。為了避免此類問題,大家應該審視自身并自問“我要如何做得更好?”

新手軟件開發人員(以及老鳥們)都應該抱著欣賞的態度看待自己的代碼。他們需要編寫測試以證明自己的代碼能夠切實生效,而不僅僅是避免其出錯。真正杰出的程序員實際上樂于接受自己的錯誤——因為他們知道,即使自己沒有發現,用戶們最終也會將其指出。

3. “代碼能跑”并不是終極目標,而只是起點

是的,我們開發工作的第一步總是編寫出符合質量規范要求的軟件。普通程序員都能做好這項工作,但他們之所以普通,是因為達成這項目標后他們就開始轉向其它任務。

需要強調的是,這種小成即安的心態就像是想讓一張隨拍成為一件藝術品。出色的程序員都很清楚,第一個迭代版本僅僅只是起步:它能夠確切起效,那么恭喜各位!但這并不是終點,接下來我們要讓它變得更好。

這一流程中的重要組成部分在于定義“更好”的確切含義。是否需要進一步提高其運行速度?易于編寫說明文檔?更具復用性?改進可靠性?具體答案取決于應用程序自身,不過這個流程應當被始終保持下去。

4. 三次編寫成就卓越作品

合格的程序員編寫出“能跑”的軟件。卓越的程序員則編寫出真正優秀的軟件成果。而優秀的成果幾乎不可能在首次編寫時出現。這種杰作通常需要進行三次編寫:

  1. 第一次,我們編寫軟件以證明解決方案可行性。其他人可能沒有意識到這只能算是概念驗證型方案,但我們自己應該清楚地了解這一點。
  2. 第二次,保證其確切起效。
  3. 第三次,保證一切完全符合預期。

不過著眼于最優秀的開發人員,這些步驟似乎表現得并不明顯。他們做的每一項工作似乎都才華滿載,但事實上,這類搖滾明星級別的開發者根本不會在第一與第二版本階段展示自己的軟件開發成果。淘汰代碼并重新開始能夠讓我們的個人工作流程真正變得“更好”。

如果不出意外,那么“編寫三次”的方式能夠幫助大家了解如何找到最理想的解決途徑。另外,這也能夠防止我們陷入思維慣性。

5.閱讀代碼——閱讀大量代碼

大家可能希望我會在這里提點具體的建議,很明顯最常見但也最有價值的建議就是提升編程技能。不過很多朋友也許還沒有發現,閱讀他人的代碼其實非常重要。

在閱讀他人的代碼時,我們會了解到其他開發者是如何處理編程難題的。不過請別單純從字面上理解這項提議,大家應當更多地將其視為一種教訓以及挑戰。為了更好地發揮其作用,我們需要回答以下幾個問題:

  • 我會如何編寫編寫這部分代碼? 我們該如何以不同方式實現同樣的效果,又是否準確理解了其他人的解決思路?
  • 我學到了什么?我該如何將這項技術應用到我過去已經編寫的代碼當中?(‘我從沒想到要在這里使用遞歸下降……’)
  • 我該如何改進代碼?如果存在合適的開源項目,而大家又想到了改善其質量的辦法,請立刻著手進行!
  • 基于相關作者的風格進行代碼編寫。這種作法能夠幫助大家準確把握其他編寫者的設計思路,并借此提升自己的移情能力。

這些步驟需要以認真的態度逐步推進。編寫自己的答案,具體形式可以是撰寫個人日志、博文、代碼審查報告或者在社區論壇上發布帖子。向朋友解釋某個現實問題能夠幫助我們整理出解決方案,將其寫下并分享分析結論,這能讓我們更好地理解自己如何以既定方式重現他人代碼。這正是我之前提到的自省心態的一部分,使得各位能夠冷靜地判斷自己的長處與短處。

警告:即使閱讀了大量代碼,大家仍然未必能夠成為出色的程序員,就像是那樣閱讀過大量杰出文學作品但卻自身水平依舊低下的作家。很多珍惜生命 員會將開源項目或者其它軟件視為“答案來源”,甚至傾向于直接復制/粘貼其中的代碼以解決類似的問題。這么干只會讓各位成為更為拙劣的程序員,因為我們這只是在盲目接受其他人的智慧,卻未對其加以檢驗。(另外,這種免費午餐式的作法會導致我們意識不到新bug的引入。)

6.編寫代碼,而不僅僅滿足于現有工作

著手推進個人編程項目有著諸多優勢。首先,這能幫助大家學習現有工作所接觸不到的工具與技術,并使大家在未來的職業發展中更具競爭力。無論大家是在為開源項目做貢獻還是參加當地社區組織的無償工作,編寫更多代碼都能夠幫助我們積累起技術水平與自信心。(另外,大家的個人項目也能夠向潛在雇主切實證明,各位一直保持學習狀態且永不自滿。)

出于興趣編寫代碼的另一大優勢在于迫使各位自己尋求答案。我們無法將最困難的部分留給其他人,那樣我們往往會在尚未進行充分思考前就向技術高手求助。

額外提示: 大家最好不要選擇那些自己已經非常熟悉的項目。經歷失敗非常重要!不過在實際工作中失敗卻非常要命,特別是在限定了嚴格的時間進度的前提下——這也是參與個人項目的重要理由所在。

7.盡可能以一對一方式同其他開發人員協作

這有助于讓我們靜下心來傾聽他人意見。這可能意味著進行組隊編程,或者參與編程馬拉松,抑或是加入某個編程用戶群組(例如Vermont Coders Connection)。當為開源項目做貢獻時,大家應當高度關注來自用戶以及其他開發者的反饋意見,也許這些批評觀點中包含著極有價值的共同點。

大家可能會找到一位值得信任、能夠切實指導我們工作,甚至足以點撥我們完善職業規劃的好伙伴。千萬不要因為懶惰而錯失這寶貴的機遇。

8.學習技術而非工具

編程語言、工具與方法總是在不斷變化。有鑒于此,盡可能多地涉獵不同語言與框架就變得非常重要。大家應該將著眼于放在編程基礎身上,因為基礎知識永遠不會改變; 換言之,更多重視結構而非編程。如果大家認為只有一種正確方式完成某項任務,那么不妨親自進行實踐。教條主義會損害我們學習新鮮事物的能力,并導致各位在適應變化時顯得比較遲鈍。

原文標題: 8 Ways to Become a Better Coder

【51CTO.com獨家譯稿,合作站點轉載請注明來源】

來自: http://developer.51cto.com/art/201603/506839.htm

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!