編程高手是如何練成的?

如何才能訓(xùn)練成為一個編程高手?
—?1?—
我覺得能分成這樣 3 類:
第 1 類:天賦和成就都很高的人中龍鳳,比如能一個人寫出 WPS 的求伯君、一個人開發(fā)出電子郵件 Foxmail 的張小龍,對開源領(lǐng)域影響很大的章亦春等人。
第 2 類:有不錯的口碑同時廣為人知的技術(shù)大牛,他們一般在知名公司的重要崗位任職過,對技術(shù)純真熱愛,同時熱衷分享,比如耗子哥、阮一峰、尤雨溪等人。
第 3 類:工作中被我們視為崇拜對象、未來有希望企及的高 P 或者架構(gòu)師。
對比所謂的 PPT 架構(gòu)師、以及講到技術(shù)原理就滿嘴跑火車而編碼能力卻稀松平常的人,我傾向給「編程高手」下一個更務(wù)實的定義:那就是實際工作中,能做到高效率、高質(zhì)量、且穩(wěn)定輸出的人。看似容易,實則很難。我對這個定義的詳細(xì)解讀如下:
高效率:編程效率能做到團(tuán)隊中的 Top,對于復(fù)雜需求或者復(fù)雜問題能夠快速理解,具備將復(fù)雜工作拆解成一系列簡單子問題并搞定這些問題的人。他們能從實際場景出發(fā),有造輪子的能力,也有不造輪子的覺悟。
高質(zhì)量:編程質(zhì)量能做到團(tuán)隊中的 Top,設(shè)計方案的合理性、編碼的嚴(yán)謹(jǐn)性、測試方法、監(jiān)控運維方案等,都能思考全面的人。
穩(wěn)定輸出:給高效率和高質(zhì)量增加的限定。我覺得只有量變引起質(zhì)變,真正形成了自己的方法論,能持續(xù)搞定一類問題,而不是單個問題的人才算是高手。
—?2?—
如果是編程低手,他們的答案通常有這幾類:
1、性能指標(biāo)都不清楚,遇到問題也不知道該用什么工具,這一類人應(yīng)用層都不達(dá)標(biāo)。
2、初步定位到一個疑似瓶頸點后,就著手優(yōu)化,最終解決的只是一個淺層次的性能瓶頸問題,根本原因并未觸達(dá)到。
3、能定位到根本原因,但是對于解決方案的合理性缺少深入思考,不追求極致,最終只是用了曲線的方案再次隱藏了性能問題。
通過這個例子,我其實想說明兩點:
1、不具備底層知識,你的視野根本就觸達(dá)不到底層的東西,思維以及能力永遠(yuǎn)只能停留在應(yīng)用層面,能解決的問題有限。
2、讀源碼、學(xué)習(xí)各種原理,所有這些都只是學(xué)習(xí)和鞏固知識的過程,真正體現(xiàn)編程水平的是實際解決問題的能力,因此如何將知識變成有效的經(jīng)驗?這個才是關(guān)鍵,做不到要么是實踐不夠,要么是壓根沒研究明白。
—?3?—
END
有熱門推薦??
1.?慌了 !CTO 點名要搞個灰度發(fā)布系統(tǒng) !
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點“在看”,關(guān)注公眾號并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。
謝謝支持喲 (*^__^*)

