本文檔適用人員:技術(shù)人員
引自http://mp.weixin.qq.com/s/QcRNQJhoiD8q9_0pS9TCVA
面試的時候喇伯,我會問面試者痘煤,你日常如何構(gòu)建自己的知識體系,如何讓自己更高更快更強(qiáng)瓦胎?多數(shù)工程師并沒有深入地思考過這個問題芬萍,基本上是零敲碎打,隨機(jī)性大凛捏。
本著不能讓你白來一趟的精神担忧,好為人師的我會娓娓道來:
第一階段 認(rèn)真構(gòu)建完整的知識體系
十幾年前我投身軟件行業(yè)的時候芹缔,光是講解數(shù)據(jù)庫原理坯癣、操作系統(tǒng)、TCP/IP最欠、組網(wǎng)示罗、算法等等基礎(chǔ)知識的英文原版書摞起來就等身惩猫,認(rèn)認(rèn)真真看完,各種上手實踐蚜点,入行后轧房,讀遍 C++ 各種經(jīng)典著作,讀遍各種協(xié)議原文绍绘,認(rèn)認(rèn)真真打基礎(chǔ)奶镶。
很多工程師都說自己平常就是在某些 IT 門戶上看看推薦的博文或新聞,我說這屬于典型的零敲碎打陪拘,不夠刺激厂镇。
聊到這時,我會舉一個例子左刽,為什么要閱讀長篇小說捺信,因為中短篇小說就像用針扎你,而長篇小說就像把你裝進(jìn)一個沙袋里吊起來欠痴,從四面八方用狼牙棒打你迄靠,酣暢淋漓。構(gòu)建可用的知識體系喇辽,就得讀書掌挚,書是有體系結(jié)構(gòu)的,你關(guān)心不關(guān)心茵臭,現(xiàn)階段你用到用不到疫诽,它都講到了,從頭到尾看幾遍旦委,針扎得透透的奇徒。
何謂知識體系?
幾年前缨硝,前支付寶架構(gòu)師姚建東曾經(jīng)在我們公司做過技術(shù)人員如何規(guī)劃自己的分享講座摩钙,他是這么論述的:
技術(shù)與技巧包括:
計算機(jī)基礎(chǔ)理論
計算機(jī)模型:內(nèi)存/IO/時鐘/CPU……
算法
專項技術(shù)領(lǐng)域:
數(shù)據(jù)挖掘
數(shù)據(jù)管理
智能推薦
搜索
……
語言與工具
語言與相關(guān)體系
開發(fā)工具,分析工具查辩,代碼管理工具
HTML/CSS/JS/Ajax
常用框架與第三方類庫
調(diào)試與測試
調(diào)試方法和哲學(xué)
定位問題
BUG管理工具
單元測試
集成測試
性能測試
安全測試
兼容性測試與方法
JS/Ajax測試與方法
服務(wù)層測試
Web層測試
網(wǎng)絡(luò)與系統(tǒng)
TCP/IP協(xié)議與模型胖笛,HTTP/SMTP等協(xié)議
Linux系統(tǒng),網(wǎng)絡(luò)分析工具宜岛,系統(tǒng)分析工具
容量长踊,流量與負(fù)載均衡
應(yīng)用部署、規(guī)范萍倡、規(guī)劃
安全
監(jiān)控與故障分析
磁盤與存儲
Shell
DNS與域名
緩存身弊,反向代理
圖片服務(wù)器(海量小文件)
需求挖掘與分析
需求文檔格式
需求訪談
需求分析方法,需求分析工具
領(lǐng)域知識與經(jīng)驗
系統(tǒng)分析與設(shè)計
UML語言與模型
分析模式
設(shè)計模式,領(lǐng)域驅(qū)動
系統(tǒng)分析文檔格式
系統(tǒng)設(shè)計文檔格式
功能性需求與非功能性需求
數(shù)據(jù)與系統(tǒng)
數(shù)據(jù)庫
可伸縮策略阱佛,擴(kuò)展策略帖汞,備份,容災(zāi)凑术,性能翩蘸,安全,高可用……
數(shù)據(jù)設(shè)計與范式淮逊,SQL/NoSQL催首,Cache,分布式文件
架構(gòu)設(shè)計
架構(gòu)模式泄鹏,典型互聯(lián)網(wǎng)公司架構(gòu)演進(jìn)歷史
架構(gòu)原則翅帜,常用策略
架構(gòu)設(shè)計方法
非功能性理解
擴(kuò)展性
伸縮性
穩(wěn)定性
一致性
性能
吞吐量
容量預(yù)測與規(guī)劃
架構(gòu)體系與相關(guān)技術(shù)
過程與管理
分析過程
研發(fā)過程
評審過程
測試過程
發(fā)布過程
回滾過程
文檔管理
知識管理
項目管理
以上其實就是一份從業(yè)基礎(chǔ)知識清單,你可以按圖索驥命满,閱讀相關(guān)書籍涝滴。
第二階段 順著一個Topic鉆進(jìn)去,鍛煉自己的預(yù)研能力
無論公司業(yè)務(wù)還是自己喜歡做的事胶台,都可以抽象出通用性課題歼疮,然后以做論文的方式殺進(jìn)去。這個事情得反復(fù)操練诈唬,有意識操練韩脏。
做事方式為:
抽象出 Topic——如分布式鎖,分布式并行計算引擎铸磅,防CSRF的FormToken自動生成框架赡矢,定時任務(wù)管理與調(diào)度平臺,分布式跟蹤阅仔,等等
向功課好的學(xué)生學(xué)習(xí)——有針對性地深入了解業(yè)界其他公司是如何分析問題和解決問題的吹散,匯總各種方案,站在巨人的肩膀上
分析特定應(yīng)用場景八酒,技術(shù)選型
兼顧高可用性和可伸縮空民,做設(shè)計評審
做測試自證靠譜,梳理知識點羞迷,開技術(shù)分享會
上線商用界轩,總結(jié)經(jīng)驗教訓(xùn),開經(jīng)驗分享會
其中一個重點是匯總和分享衔瓮。05年時浊猾,應(yīng)電信級統(tǒng)一消息業(yè)務(wù)需要,我去研究了 SIP 協(xié)議热鞍,做了各種試驗葫慎,分析報文单山,寫了一系列的幻燈片,做了公開分享幅疼,一時間還頗受歡迎:
SIP_to_Freshman_by_zhengyun.ppt
SIP之穿越NAT_by_zhengyun.ppt
SIP體系架構(gòu)講義及消息交互演示_by_zhengyun.ppt
SIP多方會話消息之實例講解_by_zhengyun.ppt
SIP安全框架之認(rèn)證[NTLM和Kerberos]_by_zhengyun.ppt
SIP消息之逐項講解_by_zhengyun.ppt
為什么要寫出來、講出來呢昼接?
因為有一個學(xué)習(xí)金字塔理論爽篷,如下圖所示:
我們讀過的事情能夠記住學(xué)習(xí)內(nèi)容的10%,
我們聽過的事情能夠記住20%慢睡,
我們看過的事情能夠記住30%逐工,
我們聽過和看過的事情能夠記住50%——如看影像/看展覽/看演示/現(xiàn)場觀摩,
我們說過的事情能夠記住70%——如參與討論/發(fā)言漂辐,
我們說過和做過的事情能夠記住9%——如做報告泪喊,給別人講,親身體驗髓涯,動手做袒啼。
這也就是我在《窩窩研發(fā)過去幾年做對了哪些事》中闡述的管理方法:我們從入職之后就有意識地訓(xùn)練大家,讓大家能夠公開陳述纬纪、清晰表達(dá)蚓再。所以,試用期內(nèi)包各,新人必須做一次技術(shù)分享和一次技術(shù)評審摘仅,面對各方的 challenge;預(yù)研的中間和結(jié)尾都要有分享會问畅;平時也要定期組織技術(shù)講座娃属。
第三階段 瘋狂回答技術(shù)問題
知識體系慢慢構(gòu)建,與業(yè)務(wù)相關(guān)的抽象 Topic 也在探索中护姆。
但這還不夠矾端。
因為你親身接觸到的世界太小,可能不足以構(gòu)成挑戰(zhàn)卵皂,你可能意識不到自己缺多少知識和技能须床,不利于你分析問題、提出問題和解決問題的能力培養(yǎng)渐裂。
所以豺旬,要主動出擊:
瘋狂回答問題。
我曾經(jīng)在入行的頭幾年里幾乎把我關(guān)注的垂直領(lǐng)域(包括語言領(lǐng)域和業(yè)務(wù)領(lǐng)域)里的所有問題都回答了一遍柒凉。我對外宣揚(yáng)知無不言言無不盡族阅,放出郵件地址和 MSN(那時候 MSN 很高大上),很多網(wǎng)友都會發(fā)郵件或者加我好友膝捞,問各種開發(fā)疑難問題坦刀,平均每天都有幾個,然后我把解決問題的過程寫成微軟 KB(KnowledgeBase) 文體發(fā)表在我的博客上。
你想想看鲤遥,工作中的問題你平均每隔幾天才能遇到一個沐寺,而這么做,每天你都會遇到幾個乃至于十幾個盖奈,第一讓你腦力激蕩混坞,第二接觸到更多新知。
05年到06年期間钢坦,我因工作需要學(xué)習(xí)了 JavaME(或古老的稱呼 J2ME)究孕,早年間 Symbian 手機(jī)上的客戶端開發(fā)。那段時間我天天掃中文論壇的帖子爹凹,力求回答所有問題厨诸,尤其是那些 BUG 或故障。對于那些暫時沒有人解決的禾酱,如流媒體實時播放微酬,如仿 OperaMini 二級菜單界面,都上下求索颤陶,最后放出思路以及源碼得封。
同時,我經(jīng)常整理常見問題指郁,梳理成冊并發(fā)布忙上。譬如我整理過的 J2ME 疑難問題:
[J2ME Q&A]真機(jī)報告MontyThread -n的錯誤之解釋
[J2MEQ&A]WTK初始化WMAClient報錯XXX has no IP address的解釋
[J2ME Q&A]untrusted domain is not configured問題回應(yīng)
[J2ME]“Cannot open socket for LIME events”錯誤解決
幾個月后,我成為 J2ME 中文論壇超級版主闲坎。通過這個歷程疫粥,我想告訴大家,回答網(wǎng)友問題腰懂,技巧得當(dāng)?shù)脑捁4热鐒e老是重復(fù)回答新手問題,試著攻克那些疑難問題绣溜,或者離奇故障慷彤,絕對不會浪費你的時間。
為什么怖喻?
因為你要信奉:
你學(xué)過的每一樣?xùn)|西底哗,你遭受的每一次苦難,都會在你一生中的某個時候派上用場锚沸。
——佩內(nèi)洛普·菲茲杰拉德 《離岸》
Everything that you've learnt and all the hardships you've suffered will all come in handy at some point in your life.
第四階段 RCA/總結(jié)
現(xiàn)在是你把經(jīng)驗教訓(xùn)變?yōu)樨敻坏臅r刻了跋选。
什么是好的技術(shù) Leader?
隨便一個業(yè)務(wù)需求或業(yè)務(wù)場景講出來哗蜈,你立刻把它抽象為幾個模塊/系統(tǒng)/Topic前标,然后侃侃而談坠韩,業(yè)界都是怎么解決的,我們以前又是怎么分析怎么解決的炼列,現(xiàn)在咱們這種情況下應(yīng)該如何設(shè)計只搁,可能會遇到什么問題,我們應(yīng)該做哪些預(yù)防設(shè)計俭尖,blabla氢惋。
怎么做到這一點?
第一目溉,寫 RCA 報告。
我以前說過菱农,『窩窩從 2011 年開始缭付,一直堅持每錯必查、錯了又錯就整改循未、每錯必寫陷猫,用身體力行告訴每一個新員工直面錯誤、公開技術(shù)細(xì)節(jié)的妖、分享給所有人绣檬,長此以往,每一次事故和線上漏測都會變?yōu)槲覀兊呢敻簧┧凇_@就是我們的 RCA(Root Cause Analysis)制度娇未,截止到目前已經(jīng)收集整理了近兩百個詳盡的 RCA 報告⌒呛纾』
RCA 報告格式為:
背景知識(Optional)
問題現(xiàn)象
影響范圍
問題原因
問題分析過程(Optional)
解決辦法
后續(xù)處理措施:如線上臟數(shù)據(jù)如何修復(fù)零抬,如對用戶造成的影響如何彌補(bǔ)等(Optional)
經(jīng)驗教訓(xùn)
RCA類型:如代碼問題、實施問題宽涌、配置問題平夜、設(shè)計問題、測試問題
這樣卸亮,作為一名合格的老兵忽妒,你見過了足夠多的血,并且把它們變成了你的人生財富兼贸。
第二段直,寫總結(jié)。
話說溶诞,要經(jīng)常拉清單坷牛。
侃侃而談得有資料,這些都得是你自己寫才能印象深刻很澄,關(guān)鍵時刻想得起來京闰。