想要成為真正優(yōu)秀的程序員是不是真的很難?
很多人認為要想成為一名優(yōu)秀的程序員,那就需要一天24小時每天不斷地編程——睜開眼睛要編程,閉上眼睛睡覺的時候還要夢到編程——我認為這是一種矯枉過正的方法。沿著這條路走,只會讓你精疲力盡,猶如夸父逐日一般,死在半道上。
我覺得問題的關鍵是要想明白你為什么要編程。坦率地說,我編程是因為我喜歡別人用我的程序,這也是我之所以在讀書的時候成績不怎么優(yōu)秀的原因(我并 不熱衷于參加編程競賽以及類似事情)。因此,我也不喜歡參與純研究的項目——只在論文上討論各種點子,而不付諸于行動不去寫代碼(除非恰巧碰到的是研究項 目和開源項目)。
我在編程上并不是一個唯美主義者。我的觀點是能工作、有用的代碼就可以被定義為優(yōu)雅,即使它看上去是一團亂糟糟的GOTO語句。
我認為的“優(yōu)秀的程序員”應該是這樣的:
-
偷懶戰(zhàn)略。優(yōu)秀的程序員更傾向于靈活工作而非死工作,所以如果你想要將編程當作長期的職業(yè)規(guī)劃,那么學習重用代碼和自動化繁瑣的任務是至關重要的。
-
在職業(yè)生涯早期,有機會就多多了解從需求分析到最終發(fā)布整個的軟件流程,這樣你才能學習從終端到終端的設計——還可以激發(fā)你的信心。
-
生活中除了編程以外,應該還要有某項能讓你經常外出活動的業(yè)余愛好。這樣才能改善你消耗在鍵盤上的健康。
-
如果你想要在編程這一行待個三五十年,那么***學點拿手絕活,讓別人在某個領域不敢小覷于你,密切關注這方面的技術進步,保持同步。
-
多了解幾門編程語言——特別掌握你準備精通的編程語言。并且***能從不同的編程范式(程序,設置,功能等)來了解語言。
-
相關的:不必過于擔心你不知道的新的Zwizzle-Wiz算法。如果不需要實施細節(jié)的話,了解一些相關領域重點算法以及比較重要的通用算法(如 排序和搜索)的特點和功能就可以了。沒有必要囫圇吞棗、傻不拉幾的試圖想要記憶100種算法的實現(xiàn)(我看到有人曾經這么做過),你的小腦袋會爆掉的。
-
了解如何面試程序員。英雄總是惺惺相惜,作為一名優(yōu)秀的程序員,建設優(yōu)良的團隊,也是你的部分責任。
-
了解公司業(yè)務的相關內容,以及你的代碼需要如何與之匹配,這有助于你正確地作出相關的決策,避免走一些彎路。
-
問問相關人員的想法,看看他們對你的代碼的評價,包括產品經理、QA、現(xiàn)場支持人員、專業(yè)的服務工程師和實際使用的客戶等。
-
相關的:不要錯過任何一個和客戶交流的機會。但是一定要注意自己的行為舉止:耐心聆聽,哪怕客戶的想法聽上去非??尚?,這主要是因為他們不是程序員的緣故。但是,如果你能借此機會好好思考關于如何使用代碼以及使用過程中的日常挑戰(zhàn),那么將有助于你提高你的產品。
-
對于我,我是Unix哲學——一系列通用設計原則的鐵桿粉絲。雖然這些原則并不總是有效,但它是指點我如何連接優(yōu)良代碼—系統(tǒng)—設計的指南針。
所以,對于“想要成為一名真正優(yōu)秀的程序員是不是真的非常難?”這一問題的答案,可能的確是非常艱難非常辛苦的,特別是要想成長為一名優(yōu)秀的程序員是需要一段很長的時間。但是只要你愿意好好學習代碼的系統(tǒng)知識和機制,那么我相信你一定可以長風破浪會有時,直掛云帆濟滄海。