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