技術大牛養(yǎng)成指南

2017-03-02 李運華 StuQ

作者|李運華
編輯|Alice Qin

有的人想成為大牛蹭秋,卻不曾為此努力仁讨。有的人辛苦耕耘洞豁,卻收獲寥寥。很多時候刁卜,你跟成功的差距并不是能力长酗,也不是運氣桐绒,或許只是正確的方法茉继?這是一篇不雞湯的成功學指南烁竭,如果你相信且愿意堅持嘗試吉挣,未必幫不到你睬魂!
一碗有勺子的雞湯
我工作已經將近12年了(其實12年才混到這個地步氯哮,天資實在是一般),在華為做了5年姆打,在UC做了6年幔戏,現(xiàn)在主要負責阿里游戲的中間件和組件的架構設計和實現(xiàn),包括用戶消息推送痊剖、系統(tǒng)異步通知系統(tǒng)等等邢笙。
同時我還帶了三四十人的研發(fā)團隊氮惯,除了工作以外想暗,我也喜歡寫博客说莫,是CSDN储狭、云棲的社區(qū)之星和博客專家,InfoQ的簽約作者慈参。
總體上來說驮配,我現(xiàn)在雖然還算不上業(yè)界頂級的大牛壮锻,但在公司也算一頭小牛了涮阔,今天我的分享將綜合自己的成長經歷給大家談一談怎么樣成為一個大牛敬特。我現(xiàn)在還在業(yè)界的大牛路上狂奔,但我覺得這些經驗和技巧應該是每個同學都可以用到自己的日常工作和生活當中的义图。
一鳴驚人背后是1萬小時的不斷練習
如何成為大牛召烂?這個問題之前有很多人問我:你是怎么成為技術上的一個大牛的奏夫?最開始的時候我也經常跟他們講你要去看看某某某開發(fā)方案酗昼,深入學習UNIX的開發(fā)等等這些“術”的東西麻削,后來我在思考,是否有成為一種大牛的“道”上面的東西叠荠,也就是說不管你做產品榛鼎、做運營者娱、做運維苏揣、程序員還是測試腿准,通過這個方式都能夠成為一個大牛呢吐葱?
通過尋找和思考弟跑,后來真的讓我找到了應用到所有行業(yè)孟辑、所有職業(yè)我稱之為成為大牛的一個道,這是1萬小時理論炭玫。
我先簡單介紹一下1萬小時理論吞加,我最初看到1萬小時理論是從《異類》這本書知道的衔憨,這是很出名的書袄膏,它非常有意思沉馆,我建議所有同學都去看一下悍及,它分析了很多成功人士背后一些我們通常情況下不了解或沒看到的一些現(xiàn)象心赶,得出一些比較令人震撼的結論缨叫,其中有一個理論就是1萬小時理論。
它里面有舉了一些例子销钝,比如說莫扎特蒸健,大家都知道他是音樂神童似忧,6歲就開始作曲了盯捌,你看完這本書就知道他真正出人頭地是20多歲的時候蘑秽,也就是說他雖然6歲開始作曲箫攀,但他當時作的曲也是比較不好的靴跛。
所以《異類》這本書里面提到了1萬小時的理論汤求,它對我是很有幫助的扬绪,成為世界上頂級的專家唯一的方法就是1萬小時持續(xù)不斷地進行練習挤牛,大家要特別注意“唯一”墓赴,也就是說絕大部分專業(yè)是沒有什么天才的航瞭,所謂的天才只是他一鳴驚人之后我們才這樣覺得刊侯,在他成為天才之前至少要經過1萬小時持續(xù)不斷的練習滨彻。

我第一次看到1萬小時的理論亭饵,覺得沒什么神奇的辜羊,我算了算八秃,我工作五年就會成為業(yè)界頂級的專家了,但想想這是不可能的,為什么呢舍悯?我反思了一下我自己的工作狀態(tài)萌衬,對于大部分人來說每天的工作很多時候是重復勞動秕豫,雖然我們一天工作8小時混移,但是只是重復以往的經驗歌径,并沒有刻意去訓練提升自己回铛。
有一個笑話是有一個10年工作經驗的人去面試茵肃,面試完了之后面試官跟他說其實你只有1年工作經驗,你把它重復了9年捞附。
對于1萬小時理論來說如果你深入思考其實它并沒有那么簡單胚膊,這意味著什么呢紊婉?意味著你每天要花3小時時間用于提升自己的技能喻犁,這樣一直做肢础,要持續(xù)大約10年時間传轰。大家想想每天持續(xù)十年去做一件事情去提升自己慨蛙,有幾個能做到,所以我們看到雖然有些人工作了10年异袄,但是也不一定能成為業(yè)界的專家烤蜕。
為什么我要強調每天3小時讽营?持續(xù)10年提升自己斑匪,你不能把你重復的工作算進去蚀瘸,你要在專業(yè)廣度和深度上面不斷擴展贮勃,才能業(yè)界一個頂尖的大偶偶危或者專家枫绅。
舉一個例子泉孩,一個小孩子每天唱《兩只老虎》,唱10年并淋,你覺得他會成為周杰倫嗎寓搬?肯定不會。當然1萬小時理論不適合一些領域县耽,尤其是不適合炒股句喷,特別是中國的股市兔毙,如果你花1萬小時去炒股唾琼,可能會傾家蕩產。
如何找到10000小時澎剥?
碎片化時間管理
Facebook提到了通過CI工具運行npm install時的問題锡溯,因為處于安全的考慮,他們的環(huán)境與互聯(lián)網是互相切斷的。最直接的解決方案就是單獨下載所需的模塊祭饭,并將它們包含到項目的源代碼中涌乳。但是,更新其中的某些數(shù)據(jù)模塊會帶來很大的影響甜癞。
1萬小時理論聽起來好像很簡單,每天持續(xù)3小時宛乃,也不難悠咱,但實際上真正做起來是很難的,就像我們互聯(lián)網的人加班加成狗征炼,感覺身體天天被掏空析既,時間從哪來,這是一個現(xiàn)實問題谆奥,不要說每天抽3個小時提升自己眼坏,每天抽1個小時陪女朋友或者找女朋友的時間都不夠。具體怎么做酸些?
首先是找到3個30分鐘:
第一個30分鐘就是早上的30分鐘宰译,假設你習慣8點起床,明天你把鬧鐘改成7點半魄懂,這就多了半個小時沿侈。

第二個30分鐘是睡覺前的30分鐘,假設你習慣玩游戲到12點市栗,明天晚上你玩游戲就玩到11點半缀拭。

第三個30分鐘就是上班到你座位上的30分鐘,有的同學擔心說我這30分鐘會不會影響我這一天的工作效率填帽,可能加班完不成蛛淋,還讓我擠出30分鐘來,這不用擔心篡腌,從我的經歷來看擠30分鐘不會影響你整體的工作效率褐荷,持續(xù)一兩年,你會發(fā)現(xiàn)自己的收益非常大哀蘑。

第二點是利用或節(jié)省路途時間
我們每天上下班都是一兩個小時诚卸,比如像我這種,怎么去利用時間呢绘迁?
首先是可以利用上下班路上的時間去看書合溺、聽書,也是可以做的缀台。如果你覺得上班路上是不能看書的棠赛,或者是不可能學習的,比如你坐廣州的3號線,這是舉世聞名的擠得要命的睛约,不要說看書了鼎俘,把手伸出去都不知道去哪了,那就建議大家搬到離公司近一點位置辩涝,雖然每個月多幾百塊錢的房租贸伐,但是你要相信這個投資節(jié)省下來的時間用于提升自己,它最終的收益是10倍回報都不止的怔揩。
第三點是周末4小時
周末還是不用怎么加班的捉邢,周末用于放松、睡覺商膊、看電影伏伐、娛樂,你也可以在周末里面規(guī)定自己擠出4個小時晕拆,也就是每天2個小時藐翎,這樣算下來,一天大概就兩個多小時实幕,再加上你在工作中的積累吝镣,每天3小時也不是很難。
接下來講一下我是怎么做的昆庇,我現(xiàn)在有2個小孩赤惊,而且我住的比較遠,應該在座的比我忙的也不會很多凰锡,看一下我是怎么做的未舟,我是坐廣州的四號線,坐四號線每天來回可以看一個小時的書掂为,每天早晚30分鐘裕膀,周末4小時,有的同學可能會有疑問勇哗,周末肯定要帶小孩玩昼扛,自己也要休息,哪里有4個小時欲诺,其實只要你去找抄谐,時間都會有的,我找的方法就是當我小孩睡覺的時候扰法,因為小孩子睡覺一般要睡三四個小時蛹含,大人一般睡一個小時、半個小時就差不多了塞颁,所以通過這種方式浦箱,大家可以看到2015年我一共看了84本書吸耿,有專業(yè)的,也有非專業(yè)的酷窥,人文社科咽安、歷史這些都有。
不過特別提醒一下對于男程序員來說有一個時間千萬不能少蓬推,就是陪女朋友的時間妆棒,因為對程序員來說找女朋友不容易,別看了這篇文章回去之后女朋友也不要了沸伏,就天天回去提升募逞,這也不是我們想要的生活。
10000小時理論如何輕松落地馋评?
雖然理論上很簡單,但真正要落地實行也并不那么容易刺啦,實行10000小時理論的關鍵在于堅持留特,我認為堅持的關鍵在于自己對于所從事的事業(yè)是否有“激情和興趣”。這點當然是核心玛瘸,但如果只靠激情支撐蜕青,持續(xù)10年也確實有挑戰(zhàn),正如一個朋友在分享會后問我的“要持續(xù)10年才能成為大牛啊糊渊,時間好長啊”右核!
如果說做一件事要10年后才能修成正果,估計很多朋友就會放棄了渺绒,畢竟像唐僧那么堅定的信仰者總是少數(shù)贺喝,大部分凡夫俗子都還是需要持續(xù)不斷的激勵才能有動力去做一件事,因為我們的大腦在進化的過程中已經形成了需要持續(xù)不斷的獎勵才能保持興奮的機制宗兼,也就是說相對于在第10年給一個大獎勵躏鱼,還不如每年給一個小獎勵。
那如何才能在10年漫長的路上讓我們持續(xù)的堅持下去呢殷绍?答案其實就是首富的話:“先定一個能達到的小目標”染苛!我們來看如何將“10年成為大牛”這個目標分解為一個個能達到的小目標主到。我將這個方法歸納為“三段分解法”茶行,即:將一個宏大或者長遠的目標經過3次分解,得到一個個短期內能達到的小目標登钥。具體的分解方法如下畔师。
一段分解:分解“等級”
10年成為大牛的目標雖然比較長遠比較宏大,但并不意味著在沒有成為大牛前牧牢,我們一直都是菜鳥茉唉。從菜鳥到大牛的過程中固蛾,中間其實有幾個關鍵的里程碑,這些里程碑就是我們的一段目標度陆。
以技術人員為例艾凯,技術人員典型的發(fā)展路徑基本上都是下面的這個模式:
1)0 ~ 1年:菜鳥,需要別人手把手來教
2)1 ~ 3年:初級懂傀,需要別人帶你做
3)3 ~ 5年:高級趾诗,能獨當一面,可以帶初級技術人員了
4)5 ~ 8年:資深蹬蚁,能獨擋多面
5)8 ~ 10年:大牛恃泪,統(tǒng)籌規(guī)劃,高屋建瓴
通過上面的分解我們可以看到犀斋,雖然說10年才能成為大牛贝乎,但是3年就可以達到初級水平,5年就可以達到高級水平叽粹,8年就可以達到資深水平览效,在這個過程中我們一直在成長和提升,而不是說沒有成為大牛就是菜鳥虫几;并且對于很多朋友來說锤灿,如果目標不是像首富那樣要賺就賺1億,能達到高級或者資深水平辆脸,其實已經可以過得比較滋潤了但校。通過這種分解方法,再核對一下自己目前所處的位置啡氢,然后先瞄準下一個目標状囱,全力以赴其實也就2 ~ 3年時間,這樣來看一段目標其實是比較容易達成的倘是。這種目標分解的方法除了適合技術人員外浪箭,其它很多領域也都適應,比如說產品人員辨绊、運營人員奶栖、甚至公務員!
二段分解:分解“技能”
經過一段分解后门坷,明確自己目前所處的位置和下一個目標宣鄙,接下來就要看這個一段目標如何實現(xiàn)了。雖然說每個一段目標持續(xù)時間在 2~3年默蚌,但3年時間說長不長冻晤,說短也不短,如果沒有好好利用绸吸,可能到了2年多的時候回頭一看鼻弧,好像什么都沒達成设江,還是原地踏步。因此攘轩,為了更好的利用這3年時間叉存,我們需要進一步分解,這就是“二段分解”度帮。
一段分解的維度是等級歼捏,二段分解的維度則不一樣,不能再分等級了笨篷,否則等級太細就沒法區(qū)別了瞳秽。二段分解的維度變成了“技能”,即:為了達到一段目標率翅,我需要具備什么樣的技能练俐。
還是以技術人員為例,假設經過自我評估冕臭,認為自己目前處于初級階段腺晾,而且初級階段的事情已經做得比較順手和熟練了,那么下一個一段目標自然就是達到“高級”水平浴韭。“高級”與“初級”相比脯宿,有哪些不同的技能要求呢念颈?
這就需要我們根據(jù)各自不同的行業(yè)和方向詳細列出來了,如果自己想不出來连霉,網上有很多資料都可以搜索到榴芳,最方便的就是到一個招聘網站,多看看幾個招聘需求的描述跺撼,然后歸納總結一下窟感。
我們隨便到網上搜索一個,例如拉勾網上滴滴的“高級Java開發(fā)工程師”招聘:
多看幾個類似的職位招聘歉井,基本上我們就能明白“高級Java開發(fā)工程師”的一些基本要求柿祈。當然實際上的技能要求比招聘需求的描述還要更加細致,我個人的習慣是將這些要求整理為一個思維導圖哩至,詳細列出每個技術點躏嚎。例如:
注意:以上這個圖只是示例,并不是說所有Java高級工程師都一定是這個要求菩貌,例如互聯(lián)網行業(yè)和電信行業(yè)的要求不一樣)
有了這樣一個思維導圖后卢佣,我們就可以開始真正進行二段分解了,分解的方法很簡單:哪里不懂補哪里箭阶!例如:我感覺目前我的數(shù)據(jù)庫水平一般虚茶,僅僅會寫CRUD語句戈鲁,其它的東西都不懂,那我就開始專攻數(shù)據(jù)庫這一部分嘹叫,經過一段時間的專攻來提升自己的水平婆殿。
二段目標持續(xù)時間一般建議是6個月,既不能太短也不能太長待笑。太短容易讓人陷入為了目標而做的誤區(qū)鸣皂,沒有真正得到有效提升;時間太長的話暮蹂,3年時間又不夠完成其它目標了寞缝,例如要是我定一個目標說2年提升數(shù)據(jù)庫,那操作系統(tǒng)怎么辦仰泻?網絡怎么辦荆陆?……等等。以6個月為一個周期集侯,基本上剛剛好被啼。
經過分解,最終的二段目標可以分解為如下的幾個更小的目標:
1)2016.06 ~ 2017.01:提升數(shù)據(jù)庫水平
2)2017.01 ~ 2017.06:提升Linux水平
3)2017.06 ~ 2017.12:提升網絡和網絡編程水平
當然棠枉,二段分解目標并不是一成不變的浓体,很多時候需要根據(jù)我們工作的內容進行調整。例如老大正好安排我來負責優(yōu)化系統(tǒng)性能辈讶,降低機器負載命浴,那么我完全可以將“提升Linux水平”安排到“提升數(shù)據(jù)庫水平”之前。
三段分解:分解“行動”
二段分解得到技能的小目標后贱除,接下來的關鍵就是要實現(xiàn)這個目標生闲,這就是三段分解的主要目的,即:將技能目標分解為具體要做的事情月幌,然后按照計劃執(zhí)行碍讯。
比如說我的二段目標是“提升Linux水平”,那怎么樣才能提升呢扯躺?可以上網搜索(知乎是個好地方)捉兴,也可以去問有經驗的朋友。明確要做的事情后录语,三段分解需要將二段分解的6個月目標更加細化轴术,分為1個月或者兩個月一個目標。
以我當時加入UC的情況為例钦无,我在華為的時候是在Windows平臺上用VC6進行開發(fā)逗栽,而到了UC的時候是在Linux平臺上用C++開發(fā),我當時定了“提升Linux水平”的目標失暂,然后通過上網查彼宠,找別人問等方法鳄虱,最終將這個目標分解為幾個步驟:
1)1個月:通讀《UNIX環(huán)境高級編程》
2)1個月:通讀《Linux系統(tǒng)編程》
3)2個月:通讀《UNIX網絡編程 卷1》
4)1個月:Linux常用命令實戰(zhàn):tcpdump、ps凭峡、top等
通過這種方法拙已,將6個月的目標又進一步分解為1個月的目標,實施起來就簡單多了摧冀,每1 ~ 2個月專注一個具體目標倍踪,每次完成后都很有成就感,既感覺自己的水平有了提升索昂,又佩服自己能夠堅持按計劃按目標完成任務建车,雙重獎賞讓自己更有動力進行下一個目標。
我大約花了2年的時間將Linux椒惨、網絡缤至、MySQL三個重點技能從一無所知提升到高級的水平,很多同事都問我之前在華為是不是就是做這方面的康谆,因為他們覺得短時間能達到這個水平是不太可能的领斥。
綜合前面的分析,我們將三段分解提煉一下:一段分解“等級”,二段分解“技能”,三段分解“行動”。通過前面我們的案例就可以看出,原本一個宏大的“10年成為技術大啪馄撸”的目標,經過三段分解,最終得到的是1 ~ 2個月可執(zhí)行的具體行動,通過這種一步一個腳印的行動隔崎,最終就可以達成“10年成為技術大沤褚眨”的目標韵丑。
天天寫業(yè)務代碼,如何成為技術大牛虚缎?
幾個典型的誤區(qū)
拜大牛為師

知乎上有人認為想成為技術大牛最簡單直接撵彻、快速有效的方式是“拜團隊技術大牛為師”,讓他們平時給你開小灶实牡,給你分配一些有難度的任務陌僵。我個人是反對這種方法的,主要的原因有幾個:
大牛很忙创坞,不太可能單獨給你開小灶碗短,更不可能每天都給你開1個小時的小灶;而且一個團隊里面题涨,如果大牛平時經常給你開小灶偎谁,難免會引起其他團隊成員的疑惑总滩,我個人認為如果團隊里的大牛如果真正有心的話,多給團隊培訓是最好的巡雨。然而做過培訓的都知道闰渔,準備一場培訓是很耗費時間的,課件和材料至少2個小時(還不能是碎片時間)铐望,講解1個小時冈涧,大牛們一個月做一次培訓已經是很高頻了。
因為第一個原因正蛙,所以一般要找大牛督弓,都是帶著問題去請教或者探討。因為回答或者探討問題無需太多的時間跟畅,更多的是靠經驗和積累咽筋,這種情況下大牛們都是很樂意的,畢竟影響力是大牛的一個重要指標嘛徊件。然而也要特別注意:如果經常問那些書本或者google能夠很容易查到的知識奸攻,大牛們也會很不耐煩的,畢竟時間寶貴虱痕。經常有網友問我諸如“jvm的-Xmn參數(shù)如何配置”這類問題睹耐,我都是直接回答“請直接去google”,因為這樣的問題實在是太多了部翘,如果自己不去系統(tǒng)學習硝训,每個都要問是非常浪費自己和別人的時間的。
大牛不多新思,不太可能每個團隊都有技術大牛窖梁,只能說團隊里面會有比你水平高的人,即使他每天給你開小灶夹囚,最終你也只能提升到他的水平纵刘;而如果是跨團隊的技術大牛,由于工作安排和分配的原因荸哟,直接請教和輔導的機會是比較少的假哎,單憑參加幾次大牛的培訓,是不太可能就成為技術大牛的鞍历。
綜合上述的幾個原因舵抹,我認為對于大部分人來說,要想成為技術大牛劣砍,首先還是要明白“主要靠自己”這個道理惧蛹,不要期望有個像武功師傅一樣的大牛手把手一步一步的教你。適當?shù)臅r候可以通過請教大牛或者和大牛探討來提升自己香嗓,但大部分時間還是自己系統(tǒng)性爵政、有針對性的提升。
業(yè)務代碼一樣很牛逼
知乎上有的回答認為寫業(yè)務代碼一樣可以很牛逼陶缺,理由是業(yè)務代碼一樣可以有各種技巧钾挟,例如可以使用封裝和抽象使得業(yè)務代碼更具可擴展性,可以通過和產品多交流以便更好的理解和實現(xiàn)業(yè)務饱岸,日志記錄好了問題定位效率可以提升10倍……等等掺出。
業(yè)務代碼一樣有技術含量,這點是肯定的苫费,業(yè)務代碼中的技術是每個程序員的基礎汤锨,但只是掌握了這些技巧,并不能成為技術大牛百框,就像游戲中升級打怪一樣闲礼,開始打小怪,經驗值很高铐维,越到后面經驗值越少柬泽,打小怪已經不能提升經驗值了,這個時候就需要打一些更高級的怪嫁蛇,刷一些有挑戰(zhàn)的副本了锨并,沒看到哪個游戲只要一直打小怪就能升到頂級的。
成為技術大牛的路也是類似的睬棚,你要不斷的提升自己的水平第煮,然后面臨更大的挑戰(zhàn),通過應對這些挑戰(zhàn)從而使自己水平更上一級抑党,然后如此往復包警,最終達到技術大牛甚至業(yè)界大牛的境界,寫業(yè)務代碼只是這個打怪升級路上的一個挑戰(zhàn)而已底靠,而且我認為是比較初級的一個挑戰(zhàn)害晦。
所以我認為:author >業(yè)務代碼都寫不好的程序員肯定無法成為技術大牛,但只把業(yè)務代碼寫好的程序員也還不能成為技術大牛苛骨。
上班太忙沒時間自己學習
很多人認為自己沒有成為技術大牛并不是自己不聰明篱瞎,也不是自己不努力苟呐,而是中國的這個環(huán)境下痒芝,技術人員加班都太多了,導致自己沒有額外的時間進行學習牵素。這個理由有一定的客觀性严衬,畢竟和歐美相比,我們的加班確實要多一些笆呆,但這個因素只是一個需要克服的問題请琳,并不是不可逾越的鴻溝粱挡,畢竟我們身邊還是有那么多的大牛也是在中國這個環(huán)境成長起來的。
我認為有幾個誤區(qū)導致了這種看法的形成:
1)上班做的都是重復工作俄精,要想提升必須自己額外去學習
形成這個誤區(qū)的主要原因還是在于認為“寫業(yè)務代碼是沒有技術含量的”询筏,而我現(xiàn)在上班就是寫業(yè)務代碼,所以我在工作中不能提升竖慧。
2)學習需要大段的連續(xù)時間
很多人以為要學習就要像學校上課一樣嫌套,給你一整天時間來上課才算學習,而我們平時加班又比較多圾旨,周末累的只想睡懶覺踱讨,或者只想去看看電影打打游戲來放松,所以就沒有時間學習了砍的。
正確的做法正好相反:
首先我們應該在工作中學習和提升痹筛,因為學以致用或者有實例參考,學習的效果是最好的廓鞠;其次工作后學習不需要大段時間帚稠,而是要擠出時間,利用時間碎片來學習床佳。(參照前文10000小時理論)
正確的做法
Do more

做的更多翁锡,做的比你主管安排給你的任務更多。
我在HW的時候夕土,負責一個版本的開發(fā)馆衔,這個版本的工作量大約是2000行左右,但是我除了做完這個功能怨绣,還將關聯(lián)的功能全部掌握清楚了角溃,代碼(大約10000行)也全部看了一遍,做完這個版本后篮撑,我對這個版本相關的整套業(yè)務全部很熟悉了减细。經過一兩次會議后,大家發(fā)現(xiàn)我對這塊掌握最熟了赢笨,接下來就有趣了:產品討論需求找我未蝌、測試有問題也找我、老大對外支撐也找我茧妒;后來萧吠,不是我負責的功能他們也找我,即使我當時不知道桐筏,我也會看代碼或者找文檔幫他們回答……最后我就成了我這個系統(tǒng)的“專家”了纸型。雖然這個時候我還是做業(yè)務的,還是寫業(yè)務代碼,但是我已經對整個業(yè)務都很熟悉了狰腌。
以上只是一個簡單的例子除破,其實就是想說:要想有機會,首先你得從人群中冒出來琼腔,要想冒出來瑰枫,你就必須做到與眾不同,要做到與眾不同丹莲,你就要做得更多躁垛!
怎么做得更多呢?可以從以下幾個方面著手:
1)熟悉更多業(yè)務圾笨,不管是不是你負責的教馆;熟悉更多代碼,不管是不是你寫的
這樣做有很多好處擂达,舉幾個簡單的例子:
需求分析的時候更加準確土铺,能夠在需求階段就識別風險、影響板鬓、難點
問題處理的時候更加快速悲敷,因為相關的業(yè)務和代碼都熟悉,能夠快速的判斷問題可能的原因并進行排查處理
方案設計的時候考慮更加周全俭令,由于有對全局業(yè)務的理解后德,能夠設計出更好的方案
2)熟悉端到端
比如說你負責web后臺開發(fā),但實際上用戶發(fā)起一個http請求抄腔,要經過很多中間步驟才到你的服務器(例如瀏覽器緩存瓢湃、DNS、nginx等)赫蛇,服務器一般又會經過很多處理才到你寫的那部分代碼(路由绵患、權限等)這整個流程中的很多系統(tǒng)或者步驟,絕大部分人是不可能去參與寫代碼的悟耘,但掌握了這些知識對你的綜合水平有很大作用落蝙,例如方案設計、線上故障處理這些更加有含金量的技術工作都需要綜合技術水平暂幼。
“系統(tǒng)性”筏勒、“全局性”、“綜合性”這些字眼看起來比較虛旺嬉,但其實都是技術大牛的必備的素質管行,要達到這樣的境界,必須去熟悉更多系統(tǒng)鹰服、業(yè)務病瞳、代碼。
3)自學
一般在比較成熟的團隊悲酷,由于框架或者組件已經進行了大量的封裝套菜,寫業(yè)務代碼所用到的技術確實也比較少,但我們要明白“唯一不變的只有變化”设易,框架有可能要改進逗柴,組件可能要替換,現(xiàn)有技術可能已經無法滿足業(yè)務需求顿肺,或者你換了一家公司戏溺,新公司既沒有組件也沒有框架,要你從頭開始來做屠尊。這些都是機會旷祸,也是挑戰(zhàn),而機會和挑戰(zhàn)只會分配給有準備的人讼昆,所以這種情況下我們更加需要自學更多東西托享,因為真正等到要用的時候再來學已經沒有時間了。
以java為例浸赫,大部分業(yè)務代碼就是if-else加個數(shù)據(jù)庫操作闰围,但我們完全可以自己學些更多java的知識,例如垃圾回收既峡,調優(yōu)羡榴,網絡編程等,這些可能暫時沒用运敢,但真要用的時候校仑,不是google一下就可以了,這個時候誰已經掌握了相關知識和技能传惠,機會就是誰的肤视。
以垃圾回收為例,我自己平時就抽時間學習了這些知識涉枫,學了1年都沒用上邢滑,但后來用上了幾次,每次都解決了卡死的大問題愿汰,而有的同學困后,寫了幾年的java代碼,對于stop-the-world是什么概念都不知道衬廷,更不用說去優(yōu)化了摇予。
特別是很多開源軟件,更加需要自己平時去自學吗跋,例如Nginx侧戴、Redis宁昭、Mongodb、ElasticSearch等酗宋,在合適的時機引入這些技術积仗,能夠帶來很大的價值。
Do better

要知道這個世界上沒有完美的東西蜕猫,你負責的系統(tǒng)和業(yè)務寂曹,總有不合理和可以改進的地方,這些“不合理”和“可改進”的地方回右,都是更高級別的怪物隆圆,打完后能夠增加更多的經驗值。識別出這些地方翔烁,并且給出解決方案渺氧,然后向主管提出,一次不行兩次蹬屹,多提幾次阶女,只要有一次落地了,這就是你的機會哩治。
例如:
重復代碼太多秃踩,是否可以引入設計模式?
系統(tǒng)性能一般业筏,可否進行優(yōu)化憔杨?
目前是單機,如果做成雙機是否更好蒜胖?
版本開發(fā)質量不高消别,是否引入高效的單元測試和集成測試方案?
目前的系統(tǒng)太龐大台谢,是否可以通過重構和解耦改為3個系統(tǒng)寻狂?
阿里中間件有一些系統(tǒng)感覺我們也可以用,是否可以引入 朋沮?
只要你去想蛇券,其實總能發(fā)現(xiàn)可以改進的地方的;如果你覺得系統(tǒng)哪里都沒有改進的地方樊拓,那就說明你的水平還不夠纠亚,可以多學習相關技術,多看看業(yè)界其它公司怎么做筋夏,BAT都怎么做蒂胞。
我2013年調配到九游,剛開始接手了一個簡單的后臺系統(tǒng)条篷,每天就是配合前臺做數(shù)據(jù)增刪改查骗随,看起來完全沒意思蛤织,是吧?如果只做這些確實沒意思鸿染,但我們接手后做了很多事情:
解耦指蚜,將一個后臺拆分為2個后臺,提升可擴展性和穩(wěn)定性牡昆;

雙機姚炕,將單機改為雙機系統(tǒng)摊欠,提高可靠性丢烘;

優(yōu)化,將原來一個耗時5小時的接口優(yōu)化為耗時5分鐘

還有其它很多優(yōu)化些椒,后來我們這個組承擔了更多的系統(tǒng)播瞳,后來這個小組5個人,負責了6個系統(tǒng)免糕。
Do exercise

在做職業(yè)等級溝通的時候赢乓,發(fā)現(xiàn)有很多同學確實也在嘗試Do more、Do better石窑,但在執(zhí)行的過程中牌芋,幾乎每個人都遇到同一個問題:光看不用效果很差,怎么辦松逊?
例如:
學習了jvm的垃圾回收躺屁,但是線上比較少出現(xiàn)FGC導致的卡頓問題,就算出現(xiàn)了经宏,恢復業(yè)務也是第一位的犀暑,不太可能線上出現(xiàn)問題然后讓每個同學都去練一下手,那怎么去實踐這些jvm的知識和技能呢烁兰?
Netty我也看了耐亏,也了解了Reactor的原理,但是我不可能參與Netty開發(fā)沪斟,怎么去讓自己真正掌握Reactor異步模式呢广辰?
看了《高性能MySQL》,但是線上的數(shù)據(jù)庫都是DBA管理的主之,測試環(huán)境的數(shù)據(jù)庫感覺又是隨便配置的轨域,我怎么去驗證這些技術呢?
框架封裝了DAL層杀餐,數(shù)據(jù)庫的訪問我們都不需要操心干发,我們怎么去了解分庫分表實現(xiàn)?
諸如此類問題還有很多史翘,我這里分享一下個人的經驗枉长,其實就是3個詞:learning冀续、trying、teaching必峰!
1)Learning
這個是第一階段洪唐,看書、google吼蚁、看視頻凭需、看別人的博客都可以,但要注意一點是“系統(tǒng)化”肝匆,特別是一些基礎性的東西粒蜈,例如JVM原理、Java編程旗国、網絡編程枯怖,HTTP協(xié)議。能曾。度硝。。寿冕。蕊程。等等,這些基礎技術不能只通過google或者博客學習驼唱,我的做法一般是先完整的看完一本書全面的了解藻茂,然后再通過google、視頻曙蒸、博客去有針對性的查找一些有疑問的地方捌治,或者一些技巧。
2)Trying
這個步驟就是解答前面提到的很多同學的疑惑的關鍵點纽窟,形象來說就是“自己動手豐衣足食”肖油,也就是自己去嘗試搭建一些模擬環(huán)境,自己寫一些測試程序臂港。例如:
Jvm垃圾回收:可以自己寫一個簡單的測試程序森枪,分配內存不釋放,然后調整各種jvm啟動參數(shù)审孽,再運行的過程中使用jstack县袱、jstat等命令查看jvm的堆內存分布和垃圾回收情況。這樣的程序寫起來很簡單佑力,簡單一點的就幾行式散,復雜一點的也就幾十行。
Reactor原理:自己真正去嘗試寫一個Reactor模式的Demo打颤,不要以為這個很難暴拄,最簡單的Reactor模式代碼量(包括注釋)不超過200行(可以參考Doug Lee的PPT)漓滔。自己寫完后,再去看看netty怎么做乖篷,一對比理解就更加深刻了。
MySQL:既然有線上的配置可以參考撕蔼,那可以直接讓DBA將線上配置發(fā)給我們(注意去掉敏感信息)豁鲤,直接學習;然后自己搭建一個MySQL環(huán)境鲸沮,用線上的配置啟動琳骡;要知道很多同學用了很多年MySQL,但是連個簡單的MySQL環(huán)境都搭不起來诉探。
框架封裝了DAL層:可以自己用JDBC嘗試去寫一個分庫分表的簡單實現(xiàn)日熬,然后與框架的實現(xiàn)進行對比棍厌,看看差異在哪里肾胯。
用瀏覽器的工具查看HTTP緩存實現(xiàn),看看不同種類的網站耘纱,不同類型的資源敬肚,具體是如何控制緩存的;也可以自己用Python寫一個簡單的HTTP服務器束析,模擬返回各種HTTP Headers來觀察瀏覽器的反應艳馒。
還有很多方法,這里就不一一列舉员寇,簡單來說弄慰,就是要將學到的東西真正試試,才能理解更加深刻蝶锋,印第安人有一句諺語:I hear and I forget. I see and I remember. I do and I understand陆爽,而且“試試”其實可以比較簡單,很多時候我們都可以自己動手做扳缕。
當然慌闭,如果能夠在實際工作中使用,效果會更好躯舔,畢竟實際的線上環(huán)境和業(yè)務復雜度不是我們寫個模擬程序就能夠模擬的驴剔,但這樣的機會可遇不可求,大部分情況我們還真的只能靠自己模擬粥庄,然后等到真正業(yè)務要用的時候丧失,能夠信手拈來。
3)Teaching
一般來說惜互,經過Learning和Trying布讹,能掌握70%左右科侈,但要真正掌握,我覺得一定要做到能夠跟別人講清楚炒事。因為在講的時候臀栈,我們既需要將一個知識點系統(tǒng)化,也需要考慮各種細節(jié)挠乳,這會促使我們進一步思考和學習权薯。同時,講出來后看或者聽的人可以有不同的理解睡扬,或者有新的補充盟蚣,這相當于繼續(xù)完善了整個知識技能體系。
這樣的例子很多卖怜,包括我自己寫博客的時候經常遇到屎开,本來我覺得自己已經掌握很全面了,但一寫就發(fā)現(xiàn)很多點沒考慮到马靠;組內培訓的時候也經逞俪椋看到,有的同學寫了PPT甩鳄,但是講的時候逞度,大家一問,或者一討論妙啃,就會發(fā)現(xiàn)很多點還沒有講清楚档泽,或者有的點其實是理解錯了。寫PPT揖赴、講PPT馆匿、討論PPT,這個流程全部走一遍燥滑,基本上對一個知識點掌握就比較全面了渐北。
后記
成為技術大牛夢想雖然很美好,但是要付出很多突倍,不管是Do more還是Do better還是Do exercise腔稀,都需要花費時間和精力,這個過程中可能很苦逼羽历,也可能很枯燥焊虏,這里我想特別強調一下:前面我講的都是一些方法論的東西,但真正起決定作用的秕磷,其實還是我們對技術的熱情和興趣诵闭!


本文系InfoQ原創(chuàng)文章,已經授權StuQ公眾號轉發(fā)傳播。

作者介紹
李運華疏尿,阿里游戲資深軟件工程師瘟芝,帶領多個研發(fā)團隊,承擔架構設計褥琐、架構重構锌俱、技術團隊管理、技術培訓等職責敌呈;專注于開源技術贸宏、系統(tǒng)分析、架構設計磕洪,對互聯(lián)網技術的特點和發(fā)展趨勢有較深入的研究吭练,對系統(tǒng)解耦、高性能析显、高可用架構有豐富的經驗鲫咽。

閱讀原文

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谷异,隨后出現(xiàn)的幾起案子分尸,更是在濱河造成了極大的恐慌,老刑警劉巖晰绎,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寓落,死亡現(xiàn)場離奇詭異括丁,居然都是意外死亡荞下,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門史飞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尖昏,“玉大人,你說我怎么就攤上這事构资〕樗撸” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵吐绵,是天一觀的道長迹淌。 經常有香客問我,道長己单,這世上最難降的妖魔是什么唉窃? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮纹笼,結果婚禮上纹份,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好蔓涧,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布件已。 她就那樣靜靜地躺著,像睡著了一般元暴。 火紅的嫁衣襯著肌膚如雪篷扩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天茉盏,我揣著相機與錄音瞻惋,去河邊找鬼。 笑死援岩,一個胖子當著我的面吹牛歼狼,可吹牛的內容都是我干的。 我是一名探鬼主播享怀,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼羽峰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了添瓷?” 一聲冷哼從身側響起梅屉,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鳞贷,沒想到半個月后坯汤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡搀愧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年惰聂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咱筛。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡搓幌,死狀恐怖,靈堂內的尸體忽然破棺而出迅箩,到底是詐尸還是另有隱情溉愁,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布饲趋,位于F島的核電站拐揭,受9級特大地震影響,放射性物質發(fā)生泄漏奕塑。R本人自食惡果不足惜堂污,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望爵川。 院中可真熱鬧敷鸦,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碟案,卻和暖如春愿险,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背价说。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工辆亏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鳖目。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓扮叨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親领迈。 傳聞我的和親對象是個殘疾皇子彻磁,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內容