程序員人生:技術(shù)人員的職業(yè)發(fā)展規(guī)劃

技術(shù)人員的職業(yè)發(fā)展規(guī)劃思考

之前有一篇美團公眾號的文章《工作中如何做好技術(shù)積累》。近期也在給團隊同學(xué)做年度績效溝通,在溝通的時候大家也探討了職業(yè)發(fā)展規(guī)劃拗小。有些同學(xué)表示孵构,希望后續(xù)能進一步在技術(shù)領(lǐng)域(或管理方向)進一步積累姆打;有的同學(xué)也表示亭病,希望在新的一年逻恐,能具有更好的技術(shù)影響力因悲,自己能做一些技術(shù)決定堕汞,去影響其他人,這樣自己會很有成就感晃琳。

不過讯检,我也挑戰(zhàn)問了一些問題:

  • 你希望技術(shù)能進一步積累琐鲁,你積累的方向和期望達到的結(jié)果是啥?
  • 你希望能有技術(shù)決策人灼,希望有影響力围段,你覺得應(yīng)該如何做到?是希望通過崗位任命的方式嗎投放?
  • 你覺得是否成功的標(biāo)志奈泪,就是今年或明年得到晉升?
  • 等等

大部分同學(xué)在面對這些問題時灸芳,其實是比較迷茫的涝桅,也缺少真正可度量的衡量標(biāo)準(zhǔn)。是否能在短期內(nèi)獲得晉升成了大部分人作為“組織是否認可烙样、自己是否認可”的衡量標(biāo)準(zhǔn)了冯遂。

當(dāng)然,這個話題仁者見仁误阻、智者見智,這里我也簡單談?wù)勎业目捶ㄇ绻 N乙韵鄬Ρ容^口水化的方式究反,將職業(yè)發(fā)展分兩個階段來進行闡述:1)第一階段:大學(xué)畢業(yè)3到5年 2)第二階段:大學(xué)畢業(yè)5到10年

第一階段:大學(xué)畢業(yè)3到5年

對于從事Java軟件開發(fā)的技術(shù)同學(xué),在畢業(yè)后的3到5年內(nèi)主要都是以學(xué)習(xí)儒洛、積累為主精耐。這個階段的工作幾乎每天都有驚喜,都有收獲琅锻。從一開始啥都不懂的校園“新鮮人”向“職業(yè)人”轉(zhuǎn)變卦停。在這個階段,你會學(xué)習(xí):

在這5年間,快速的完成這些基礎(chǔ)知識的學(xué)習(xí)富岳,并能在項目中快速的學(xué)以致用蛔糯。不僅自身能獲得比較高的成就感,而且實際的用人的單位窖式、獵頭也會非常喜歡這類熟練工蚁飒。

從大部分人的實際發(fā)展軌跡看,這個階段發(fā)展快的人和正常發(fā)展速度的人萝喘,差別還不是很大淮逻。比如,發(fā)展非掣篝ぃ快的人爬早,從畢業(yè)就入職阿里的P5到P7,可能三年就可以做到启妹。發(fā)展速度正常的人筛严,可能也就需要5到6年也可以到P7。也就是說饶米,這個階段正常發(fā)展速度的同學(xué)也僅僅比發(fā)展速度快的人慢2到3年而已桨啃。

這2到3年的差距,其實是可以通過有針對性的學(xué)習(xí)檬输、重大項目的歷練等就可以完成這些知識的學(xué)習(xí)照瘾。無非是,有的同學(xué)會嚴(yán)格要求自己丧慈,有嚴(yán)格的學(xué)習(xí)計劃网杆;有的同學(xué)趕早參加了一些重點的、痛苦的項目得到了鍛煉伊滋。只要是做技術(shù)的碳却,其實遲早都會經(jīng)歷過,都會成長起來笑旺。

發(fā)現(xiàn)沒有昼浦?這個階段,我們能協(xié)調(diào)好的資源其實就是自己筒主,更多的是一個“個人貢獻者”关噪。只要把自己管好了鸟蟹,學(xué)習(xí)計劃執(zhí)行好了,工作高質(zhì)量做好了就能得到認可使兔。

第二階段:大學(xué)畢業(yè)5到10年

很多本科同學(xué)建钥,特別是研究生同學(xué)。在畢業(yè)10年后虐沥,就已經(jīng)到了34熊经、35歲左右了。也是前段時間網(wǎng)上廣泛討論的所謂34+歲現(xiàn)象欲险。其實镐依,年齡并不是問題的真正原因。真正的原因還是在于自身“競爭力”是否符合這個年齡所應(yīng)該具備的天试。

到了這個年齡的人槐壳,往往已經(jīng)不是“個人貢獻者”了,而是“團隊貢獻者”喜每。團隊貢獻者可能是帶團隊的TL务唐,也可能是個架構(gòu)師,在技術(shù)決策上具有團隊影響力和話語權(quán)带兜。

那么枫笛,為什么這些人能管理團隊或者有影響力呢?

從公司的經(jīng)營視角看鞋真,一個管理團隊的人崇堰,他必要是要為業(yè)務(wù)的成功負責(zé)沃于。說個大白話涩咖,一個TL管了N個人,他至少要能保證大家的輸出所產(chǎn)生的價值繁莹,至少要高于這個團隊的工資檩互、獎金、五險一金咨演、OPEX闸昨、CAPEX等等吧。這個TL為了大家輸出的有價值薄风,他是不是需要能:

  • 能對所負責(zé)領(lǐng)域的業(yè)務(wù)特點饵较、發(fā)展趨勢、友商競爭分析能有很好的洞察遭赂?能知道這個業(yè)務(wù)領(lǐng)域的客戶是誰循诉?他們的需求是什么?他們的痛點是什么撇他?所以茄猫,這個TL應(yīng)該有需要學(xué)習(xí)《咨詢的奧秘》狈蚤、《探索需求》《系統(tǒng)化思維導(dǎo)論》划纽。對于技術(shù)型的TL脆侮,還應(yīng)該了解《成為技術(shù)領(lǐng)導(dǎo)者:掌握全面解決問題的方法》
  • 服務(wù)于特定領(lǐng)域的客戶勇劣,我們需要能了解我們的客戶企業(yè)架構(gòu)靖避、業(yè)務(wù)知識。只要了解清楚了芭毙,規(guī)劃的產(chǎn)品筋蓖、服務(wù)才是客戶所需要的。那么退敦,從理論上粘咖,我們是否應(yīng)該學(xué)習(xí)一些TOGAF、NGOSS侈百、ITIL等業(yè)務(wù)理論以及業(yè)務(wù)知識瓮下?
  • 作為TL,是否有必要能將自己對于市場的洞察钝域,轉(zhuǎn)換成業(yè)務(wù)規(guī)劃讽坏,并能向自己的老板(或者投資人)說清楚、講明白例证?并爭取到老板的同意路呜,包括資金、人力資源等织咧。對于胀葱,能否講事情講明白,我們可能需要學(xué)習(xí)《金字塔原理》笙蒙,并能非常清晰抵屿、有邏輯性的進行表達與溝通。當(dāng)然捅位,有些業(yè)務(wù)發(fā)展的事不一定特別有邏輯轧葛,是需要摸索、嘗試艇搀,那么你是否能將一個不確定領(lǐng)域的事說服老板獲得支持尿扯,我們又需要什么?《博弈論》焰雕、《影響力》
  • 獲得老板支持后衷笋,就需要開始帶著兄弟們干活了。作為帶頭人淀散,你看我們是否需要能將業(yè)務(wù)趨勢右莱、客戶痛點進行業(yè)務(wù)建模能讓團隊的PD蚜锨、技術(shù)都能理解?在做業(yè)務(wù)進一步深入分析慢蜓,可能就需要學(xué)習(xí)《領(lǐng)域驅(qū)動設(shè)計:軟件核心復(fù)雜性應(yīng)對之道》亚再、《實現(xiàn)領(lǐng)域驅(qū)動設(shè)計》《企業(yè)應(yīng)用架構(gòu)模式》晨抡、《恰如其分的軟件架構(gòu)》等等
  • 做完業(yè)務(wù)設(shè)計后氛悬,開始要帶著團隊做技術(shù)方案設(shè)計、接口設(shè)計以及編碼實現(xiàn)等耘柱。這個過程如捅,TL又需要具備軟件項目管理的能力。無論是《PMBOK指南》调煎,還是《敏捷軟件開發(fā)》镜遣、《人月神話》《程序開發(fā)心理學(xué)》士袄,相信總歸還是會有點幫助的悲关。
  • 對于一些有國際化要求的公司,還需要再學(xué)習(xí)英語吧
  • 嗯娄柳,還需要有個好的身體寓辱,還需要經(jīng)常鍛煉,學(xué)習(xí)科學(xué)的健身吧(說起來自己臉紅)赤拒。 至少我明白了一個道理秫筏,以前我都是跟自己說,等這段時間過了挎挖,閑下來去鍛煉一下这敬。其實,我發(fā)現(xiàn)肋乍,越是忙的時候鹅颊,越需要鍛煉身體敷存!
  • 另外墓造,在這10年內(nèi),比較關(guān)鍵的是锚烦。你還經(jīng)歷過什么有挑戰(zhàn)的業(yè)務(wù)觅闽、技術(shù)、產(chǎn)品涮俄、平臺等方面的成功與失敗經(jīng)驗蛉拙?在這些經(jīng)歷里,你可能會遇到這些困難與挑戰(zhàn):團隊磨合的挑戰(zhàn)彻亲、技術(shù)方案上的爭執(zhí)孕锄、平臺優(yōu)先 or 業(yè)務(wù)優(yōu)先的博弈吮廉、低落的團隊氛圍、個人的低谷等等畸肆。這些困難與挑戰(zhàn)宦芦,你是退縮了?還是有成長轴脐?在帶團隊時调卑,再次面臨這些挑戰(zhàn)時,這時你是否有解或者有勇氣了大咱?

發(fā)現(xiàn)沒有恬涧?畢業(yè)10年后,作為一個團隊貢獻者碴巾,你可能需要具備這些能力溯捆,還遠遠不止。而且厦瓢,更可悲的時现使,當(dāng)畢業(yè)10年后,突然發(fā)現(xiàn)自己不具備這個能力時(比如晉升失敗時發(fā)現(xiàn)了)旷痕,這些能力GAP就不再是2到3年就能追得上的了碳锈。我見過一些有準(zhǔn)備的同學(xué),他們給自己的目標(biāo)是在畢業(yè)第7年就要具備這些能力欺抗,他有嚴(yán)格的學(xué)習(xí)計劃售碳、實踐計劃、甚至是冒險的創(chuàng)業(yè)經(jīng)歷绞呈。當(dāng)他到10年這個點時贸人,這些高階技能很可能已經(jīng)有3年的實踐經(jīng)驗了。

如果我們沒有做好準(zhǔn)備佃声,10年后艺智,如何和這批人競爭?這些軟圾亏、硬知識十拣,從十年這個時間刻度倒排,學(xué)習(xí)計劃志鹃、實踐計劃的執(zhí)行還是很緊張的夭问。所以,從現(xiàn)在開始給自己制定一個嚴(yán)格的學(xué)習(xí)計劃曹铃、嚴(yán)格執(zhí)行缰趋,多實踐吧。

工作中如何做好技術(shù)積累

引言

古人云:“活到老,學(xué)到老秘血∥抖叮”互聯(lián)網(wǎng)算是最辛苦的行業(yè)之一淌友,“加班”對工程師來說已是“家常便飯”葵腹,同時互聯(lián)網(wǎng)技術(shù)又日新月異衫嵌,很多工程師都疲于應(yīng)付痘拆,叫苦不堪襟交。以至于長期以來流傳一個很廣的誤解:35歲是程序員工作的終點宰译。

如何在繁忙的工作中做好技術(shù)積累迎变,構(gòu)建個人核心競爭力宁仔,相信是很多工程師同行都在思考的問題蓖乘。本文是我自己的一些總結(jié)锤悄,試圖從三個方面來解答:

  • 第一部分闡述了一些學(xué)習(xí)的原則。任何時候嘉抒,遵循一些經(jīng)過檢驗的原則零聚,都是影響效率的重要因素,正確的方法是成功的秘訣些侍。
  • 提升工作和學(xué)習(xí)效率的另一個重要因素是釋惑和良好心態(tài)隶症。第二部分分析了我在工作中碰到和看到的一些典型困惑。
  • 成為優(yōu)秀的架構(gòu)師是大部分初中級工程師的階段性目標(biāo)岗宣。第三部分剖析架構(gòu)師的能力模型蚂会,讓大家對目標(biāo)所需能力有一個比較清晰的認知。

如何學(xué)習(xí)

在繁忙的工作中耗式,持之以恒胁住、不斷學(xué)習(xí)和進步是一件艱巨的任務(wù),需要堅強的毅力和堅定的決心刊咳。如果方法不得當(dāng)彪见,更是事倍功半。幸好我們的古人和現(xiàn)在哲人已經(jīng)總結(jié)了很多優(yōu)秀的學(xué)習(xí)方法論娱挨,這里匯總了一些重要原則余指。遵循這些方法必會對大家的工作學(xué)習(xí)大有裨益。

貴在堅持

有報道指出跷坝,過去幾十年的知識量超過之前人類幾千年的知識量總和酵镜。而計算機領(lǐng)域絕對是當(dāng)代知識更新最快的領(lǐng)域之一,因此笋婿,工程師必須要接受這樣一個現(xiàn)實顿颅,現(xiàn)在所掌握的深厚知識體系很快就會被淘汰足丢。要想在計算機領(lǐng)域持續(xù)做優(yōu)秀架構(gòu)師庇配,就必須不停的學(xué)習(xí)捞慌,掌握最新技術(shù)柬批。總之嗅虏,學(xué)不可以已。

所謂“冰凍三尺上沐,非一日之寒皮服,水滴石穿,非一日之功”参咙,通往架構(gòu)師的道路漫長而又艱巨龄广,輕易放棄,則所有付出瞬間付之東流蕴侧。要想成為優(yōu)秀的架構(gòu)師择同,貴在堅持!

雖然知識更新很快净宵,但是基礎(chǔ)理論的變化卻非常緩慢奠衔。這就是“道”和“象”關(guān)系,縱是世間萬象塘娶,道卻萬變不離其宗归斤。對于那些非常基礎(chǔ)的理論知識刁岸,我們需要經(jīng)常復(fù)習(xí)脏里,也就是“學(xué)而時習(xí)之”。

重視實踐

古人云:“紙上得來終覺淺虹曙,絕知此事要躬行迫横。” 學(xué)習(xí)領(lǐng)域有所謂721模型:個人的成長70%來自于崗位實踐酝碳,20%來自向他人學(xué)習(xí)呛讲,10%來自于培訓(xùn)贝搁。雖然這種理論存在爭議弦讽,但對于工程師們來說往产,按照實踐捂齐、學(xué)習(xí)和培訓(xùn)的方式進行重要性排序奠宜,大致是不錯的。所以重視實踐滴肿,在實踐中成長是最重要的學(xué)習(xí)原則泼差。

人類的認知有兩種:感性認知和理性認知堆缘。這兩種認知互相不可替代性。實踐很大程度來自于感性學(xué)習(xí)缀皱,看書更像是理性學(xué)習(xí)啤斗。以學(xué)開汽車做例子免钻,很難想象什么人能夠僅僅通過學(xué)習(xí)書本知識就會開汽車伯襟。

書本知識主要是傳道——講述抽象原型,而對其具體應(yīng)用場景的講述往往含糊其辭澡绩,對抽象原型之間的關(guān)系也是淺嘗輒止肥卡。采用同樣精確的語言去描述應(yīng)用場景和關(guān)聯(lián)關(guān)系將會失去重點,讓人摸不著頭腦氛琢。所以,僅僅通過看書來獲得成長就像是用一條腿走路撮奏。

重視實踐畜吊,充分運用感性認知潛能,在項目中磨煉自己青自,才是正確的學(xué)習(xí)之道延窜。在實踐中逆瑞,在某些關(guān)鍵動作上刻意練習(xí)哈肖,也會取得事半功倍的效果。

重視交流

牛頓說:“如果說我看得比別人遠一些币狠,那是因為我站在巨人的肩膀上漩绵≈雇拢”我們需要從別人身上學(xué)習(xí)。從老師蕴忆、領(lǐng)導(dǎo)、同事卓鹿、下屬甚至對手身上學(xué)習(xí)吟孙,是快速成長的重要手段杰妓。

向老師和領(lǐng)導(dǎo)學(xué)習(xí)已經(jīng)是人們生活習(xí)慣的一部分了。但是從同事甚至對手那里學(xué)習(xí)也很重要倍宾,因為這些人和我們自身更相似钩乍。所以要多多觀察寥粹,取其所長牵啦,棄其所短楞件。對于團隊的小兄弟和下屬土浸,也要“不恥下問”。

此外还最,在項目中積極參與具體方案討論也非常重要拓轻。參與者先驗感知了相關(guān)背景,并且討論的觀點和建議也是綜合了發(fā)言者多種知識和技能枣氧。所以达吞,討論讓參與者能夠非常全面宗挥,立體地理解書本知識瞒大。同時透敌,和高手討論,他們的觀點就會像修剪機剪樹枝一樣撵术,快速的剪掉自己知識領(lǐng)域里面的疑惑點嫩与。

重視總結(jié)和輸出

工程師在實踐中會掌握大量細節(jié),但是处坪,即使掌握了所有細節(jié)同窘,卻沒有深刻的總結(jié)和思考,也會陷入到“學(xué)而不思則罔”的境地案狠。成長的“量變”來自于對細節(jié)的逐漸深入地把控,而真正的“質(zhì)變”來自于對“道”的更深層次的理解拉庵。

將經(jīng)驗輸出钞支,接受別人的檢驗是高層次的總結(jié)婴洼。這種輸出不僅幫助了別人柬采,對自身更是大有裨益〖缛校總結(jié)的方式有很多浅碾,包括組織分享垂谢,撰寫技術(shù)文章等等根暑。當(dāng)然“日三省吾身”也是不錯的總結(jié)方式排嫌〈镜兀總之,多多總結(jié)遣钳,多多分享劝评,善莫大焉!

解答別人的問題也是個人成長的重要手段百侧。有時候佣渴,某個問題自己本來不太懂,但是在給別人講解的時候卻豁然開朗砂竖。所以,“誨人不倦”利人惠己。

重視規(guī)劃

凡事預(yù)則立浙于,不預(yù)則廢。對于漫長的學(xué)習(xí)生涯而言檀轨,好的計劃是成功的一半。

長期規(guī)劃

長期規(guī)劃的實施需要毅力和決心拧揽,但是做正確的長期規(guī)劃還需要高瞻遠矚的眼界痒谴、超級敏感的神經(jīng)和中大獎的運氣。對于大部分人來說尽爆,長期規(guī)劃定主要是“定方向”。但遵循如下原則能夠減少犯方向性錯誤的概率:

  • 遠離日暮西山的行業(yè)。
  • 做自己感興趣的事情崇摄。
  • 做有積累的事情。
  • 一邊走一邊看泵肄,切勿一條道走到黑玄括。

短期規(guī)劃

良好的短期規(guī)劃應(yīng)該在生活、成長、績效和晉升之間取得平衡斯嚎。大部分公司都會制定一個考核周期——少則一個月糠惫,多則一年硼讽。所以不妨以考核周期作為短期學(xué)習(xí)規(guī)劃周期。本質(zhì)上牲阁,規(guī)劃是一個多目標(biāo)優(yōu)化問題固阁,它有一系列的理論方案,這里不一一細說城菊∧基于相關(guān)理論役电,我給出一個簡單易行的方案:

  • 確定目標(biāo)優(yōu)先級窝剖。比如:成長、生活、績效炉峰。
  • 確定每個目標(biāo)的下限谱仪。從優(yōu)化理論的角度來看枚尼,這被稱為約束概而。比如績效必須在一般以上压储,之前已經(jīng)規(guī)劃好的旅行不能更改,必須讀完《Effective Java》等等厚脉。
  • 優(yōu)先為下限目標(biāo)分配足夠的資源泄伪。比如肖粮,事先規(guī)劃好的旅行需要10天屋讶,這10天就必須預(yù)算出去划乖。
  • 按照各主目標(biāo)的順序依次分配資源庆寺。比如,最終分配給學(xué)習(xí)的時間是10天模蜡。
  • 在給定的學(xué)習(xí)預(yù)算下则披,制定學(xué)習(xí)目標(biāo),要激進蚌本。然后給出執(zhí)行方案。比如只祠,學(xué)習(xí)目標(biāo)是掌握基本的統(tǒng)計學(xué)知識蛮位,并成為Java專家烘苹。具體方案為:完成《Effective Java》缘回、《Java Performance》在孝、《Design Pattern》仆百、《Head First Statistics》四本書的閱讀澈灼。
  • 對規(guī)劃中的各學(xué)習(xí)任務(wù)按目標(biāo)優(yōu)先級進行排序泳姐,并最先啟動優(yōu)先級最高的任務(wù)肮街。比如围小,最高優(yōu)先級是掌握統(tǒng)計理論,那么就要先看《Head First Statistics》肠套。

對于該方案涯肩,要注意以下幾點:

  • 最低目標(biāo)必須能夠輕松達成的目標(biāo),否則巢钓,從優(yōu)化理論的角度來講病苗,該命題無解。比如症汹,類似“半年內(nèi)完成晉級兩次硫朦、績效全部S、從菜鳥成為Java專家”就不太合適作為最低目標(biāo)背镇∫д梗總之,要區(qū)分理想和夢想瞒斩。
  • 主要目標(biāo)規(guī)劃必須具備一定的挑戰(zhàn)性破婆,需要規(guī)劃出不可能完成的目標(biāo)。過度規(guī)劃本質(zhì)上是一種貪婪算法胸囱,目的是目標(biāo)價值最大化祷舀。因為一切皆有變數(shù),如果其他目標(biāo)能夠提前完成,就不妨利用這些時間去完成更多的學(xué)習(xí)目標(biāo)裳扯∨桌觯總之,前途必須光明饰豺,道路必須坎坷亿鲜。
  • 各目標(biāo)之間不一定共享資源,規(guī)劃不一定互有沖突冤吨。

此外蒿柳,短期規(guī)劃還可以從如下幾個方面進行優(yōu)化:

  • 學(xué)習(xí)計劃最好能結(jié)合工作計劃,理論聯(lián)系實際結(jié)合锅很,快速學(xué)以致用其馏。比如,本季度規(guī)劃去做一些數(shù)據(jù)分析工作爆安,那么不妨把學(xué)習(xí)目標(biāo)設(shè)置為學(xué)習(xí)統(tǒng)計知識。
  • 要靈活對待規(guī)劃的目標(biāo)和具體執(zhí)行步驟仔引,需要避免“鄭人買履”式的笑話扔仓。面臨新的挑戰(zhàn)和變化,規(guī)劃需要不斷地調(diào)整咖耘。

那些令人糾結(jié)的困惑

人生是一場馬拉松翘簇,在漫長的征途中,難免有很多困惑儿倒。困惑就像枷鎖版保,使我們步履蹣跚,困惑就像死鎖夫否,讓我們停滯不前彻犁。

接下來我將總結(jié)自己在工作中碰到和看到的一些典型困惑。這些困惑或者長期困擾作者本人凰慈,或者困擾我身邊的同事和朋友汞幢。當(dāng)這些困惑被釋然之后,大家都感覺如重獲釋微谓,為下一階段的征程提供滿滿的正能量森篷。人生就像一場旅途,不必在乎目的地豺型,在乎的仲智,應(yīng)該是沿途的風(fēng)景,以及看風(fēng)景的心情姻氨。良好的心態(tài)是技術(shù)之旅最好的伴侶钓辆。期望通過這個解惑之旅,讓大家擁有一個愉快的心情去感受漫長的學(xué)習(xí)旅途。

學(xué)無止境嗎

必須要承認一個殘酷的現(xiàn)實:人的生命是有限的岩馍,知識卻是無限的碉咆。用有限的生命去學(xué)習(xí)無限的知識是不可能完成的任務(wù)。一想到此蛀恩,有些工程師不免產(chǎn)生一些悲觀情緒疫铜。如果方法得當(dāng)并且足夠勤奮,悲傷大可不必双谆。

雖然壳咕,人類的整體知識體系一直在擴張。但是就很多重要的工程細分領(lǐng)域顽馋,基礎(chǔ)理論并不高深谓厘。計算機的很多重要領(lǐng)域,工程師有能力在有限時間內(nèi)抓住核心要害寸谜。

比如竟稳,密碼學(xué)被認為是門非常高深的學(xué)科,但是一大類密碼技術(shù)的基礎(chǔ)是數(shù)論中一個非常簡單的理論——素因數(shù)分解:給出兩個素數(shù)熊痴,很容易算出它們的積他爸,然而反過來給定兩個素數(shù)的積,分解的計算量卻非常驚人果善。

“一致性”算得上是計算機領(lǐng)域里面最經(jīng)典的難題诊笤,它是所有分布式系統(tǒng)的基礎(chǔ),從多核多CPU到多線程巾陕,從跨機器到跨機房讨跟,無所不在,幾乎所有的計算機從業(yè)人員都在解決這個問題鄙煤,但是Paxos給出了一個很優(yōu)雅的解決方案晾匠。

權(quán)限管理是很多工程師的噩夢,但如果你能搞定“Attribute Based Access Control(ABAC)”和“Role-Based Access Control(RBAC)”馆类,也能達到相當(dāng)高度混聊。

另外,技術(shù)學(xué)習(xí)是一場對抗賽乾巧,雖然學(xué)無止境句喜,超越大部分對手就是一種勝利。所以沟于,以正確的學(xué)習(xí)方式咳胃,長時間投入就會形成核心競爭力。

沒有絕對高明的技術(shù)旷太,只有真正的高手

致力于在技術(shù)上有所成就的工程師展懈,都夢想有朝一日成為技術(shù)高手销睁。但技術(shù)高手的標(biāo)準(zhǔn)卻存在很大的爭議。這是一個有著悠久歷史的誤解:以某種技術(shù)的掌握作為技術(shù)高手的評判標(biāo)準(zhǔn)存崖。我經(jīng)常碰到這樣一些情景:因為掌握了某些技術(shù)冻记,比如Spring、Kafka来惧、Elasticsearch等冗栗,一些工程師就自封為高手。有些工程師非常仰慕別的團隊供搀,原因竟是那個團隊使用了某種技術(shù)隅居。

這種誤解的產(chǎn)生有幾個原因:首先,技多不壓身葛虐,技術(shù)自然是掌握的越多越好胎源,掌握很多技術(shù)的人自然不是菜鳥。其次屿脐,在互聯(lián)網(wǎng)時代來臨之前涕蚤,信息獲取是非常昂貴的事情。這就導(dǎo)致一項技能的掌握可以給個人甚至整個公司帶來優(yōu)勢地位的诵≡藜荆互聯(lián)網(wǎng)時代,各種框架的出現(xiàn)以及開源的普及快速淘汰或者降低了很多技能的價值奢驯,同時降低了很多技術(shù)的學(xué)習(xí)門檻。所以次绘,在當(dāng)前瘪阁,掌握某項技能知識只能是一個短期目標(biāo)。懷揣某些技能就沾沾自喜的人需要記子寿恕:驕傲使人退步管跺。

所謂“麻雀雖小,五臟俱全”禾进。如果讓你來做造物主,設(shè)計麻雀和設(shè)計大象的復(fù)雜度并沒有明顯區(qū)別泻云。一個看起來很小的業(yè)務(wù)需求艇拍,為了達到極致,所需要的技術(shù)和能力是非常綜合和高深的宠纯。真正的高手不是拿著所掌握的技術(shù)去卡客戶需求卸夕,而是傾聽客戶的需求,給出精益求精的方案婆瓜。完成客戶的需求是一場擂臺賽快集,真正的高手贡羔,是會見招拆招的。

不做項目就無法成長嗎

在項目中學(xué)習(xí)是最快的成長方式之一个初,很多工程師非常享受這個過程乖寒。但是一年到頭都做項目,你可能是在一家外包公司院溺。對于一個做產(chǎn)品的公司楣嘁,如果年頭到年尾都在做項目,要不然就是在初步創(chuàng)業(yè)階段覆获,要不然就是做了大量失敗的項目马澈,總之不算是特別理想的狀態(tài)。正常情況弄息,在項目之間都會有一些非項目時間痊班。在這段時間,有些同學(xué)會產(chǎn)生迷茫摹量,成長很慢涤伐。

項目真的是越多越好嗎?答案顯然是否定的缨称。重復(fù)的項目不會給工程師們帶來新的成長凝果。不停的做項目,從而缺乏學(xué)習(xí)新知識的時間睦尽,會導(dǎo)致“做而不學(xué)則殆”酒贬。真正讓工程師出類拔萃的是項目的深度,而不是不停地做項目倡勇。所以如叼,在項目之間的空檔期,工程師們應(yīng)該珍惜難得的喘息之機沿量,深入思考浪慌,把項目做深、做精朴则。

如何提高項目的深度呢权纤?一般而言,任何項目都有一個目標(biāo)乌妒,當(dāng)項目完成后汹想,目標(biāo)就算基本達成了。但是芥被,客戶真的滿意了嗎欧宜?系統(tǒng)的可用性、可靠性拴魄、可擴展性冗茸、可維護性已經(jīng)做到極致了嗎席镀?這幾個問題的答案永遠是否定的。所以夏漱,任何一個有價值的項目豪诲,都可以一直深挖。深挖項目挂绰,深度思考還可以鍛煉工程師的創(chuàng)造力屎篱。期望不停地做項目的人,就像一個致力于訓(xùn)練更多千里馬的人是發(fā)明不出汽車的葵蒂。鍛煉創(chuàng)造力也不是一蹴而就的事情交播,需要長時間地思考〖叮總之秦士,工程師們應(yīng)該總是覺得時間不夠用,畢竟時間是最寶貴的資源永高。

職責(zé)真的很小嗎

很多時候隧土,一個工程師所負責(zé)系統(tǒng)的數(shù)量和團隊規(guī)模與其“江湖地位”正相關(guān)。但是命爬,江湖地位與技術(shù)成長沒有必然關(guān)聯(lián)曹傀。提升技術(shù)能力的關(guān)鍵是項目深度以及客戶的挑剔程度。項目越多饲宛,在單個項目中投入的時間就越少皆愉,容易陷入膚淺。特別需要避免的是“ 在其位不謀其政”的情況艇抠。團隊越大亥啦,在管理方面需要投入的精力就越多。在管理技巧不成熟练链,技術(shù)眼界不夠高的前提強行負責(zé)大團隊,可能會導(dǎo)致個人疲于應(yīng)付奴拦,團隊毫無建樹媒鼓。最終“ 一將無能,累死三軍”错妖,效果可能適得其反绿鸣。

從技術(shù)發(fā)展的角度來說,技術(shù)管理者應(yīng)該關(guān)注自己所能把控的活躍項目的數(shù)量暂氯,并致力于提高活躍項目的影響力和技術(shù)深度潮模。團隊人數(shù)要與個人管理能力、規(guī)劃能力和需求把控能力相適應(yīng)痴施。一份工作讓多個人來干擎厢,每個人的成長都受限究流。每個人都做簡單重復(fù)的工作,對技術(shù)成長沒有任何好處动遭。團隊管理和項目管理需要循序漸進芬探,忌“拔苗助長”。

一定要當(dāng)老大嗎

有一些工程師的人生理想是做團隊里的技術(shù)老大厘惦,這當(dāng)然是一個值得稱贊的理想偷仿。可是宵蕉,如果整個團隊技術(shù)能力一般酝静,發(fā)展?jié)摿σ话悖闶羌夹g(shù)最強者羡玛,這與其說是幸運别智,不如說是悲哀。這種場景被稱之為“武大郎開店”缝左。 團隊里的技術(shù)頂尖高手不是不能做亿遂,但為了能夠持續(xù)成長,需要滿足如下幾個條件:

  • 首先你得是行業(yè)里面的頂尖專家了——實在很難找到比你更強的人了渺杉!
  • 其次蛇数,你經(jīng)常需要承擔(dān)對你自己的能力有挑戰(zhàn)的任務(wù),但同時你擁有一批聰明能干的隊友是越。雖然你的技術(shù)能力最高耳舅,但是在你不熟悉的領(lǐng)域,你的隊友能夠進行探索并擴展整個團隊的知識倚评。
  • 最后浦徊,你必須要敏而好學(xué),不恥下問天梧。

否則盔性,加入更強的技術(shù)團隊或許是更好的選擇,最少不是什么值得驕傲的事情呢岗。

平臺化的傳說

平臺化算得上是“高大上”的代名詞了冕香,很多工程師擠破頭就為了和“平臺化”沾點邊。然而和其他業(yè)務(wù)需求相比后豫,平臺化需求并沒有本質(zhì)上的區(qū)別悉尾。無論是平臺化需求還是普通業(yè)務(wù)需求,它的價值都來自于客戶價值挫酿。不同點如下:

  • 很多平臺化需求的客戶來自于技術(shù)團隊构眯,普通需求的客戶來自于業(yè)務(wù)方。
  • 產(chǎn)品經(jīng)理不同早龟。普通業(yè)務(wù)需求來自于產(chǎn)品經(jīng)理惫霸,平臺化需求的產(chǎn)品經(jīng)理可能就是工程師自己猫缭。長期被產(chǎn)品經(jīng)理“壓迫”的工程師們,在平臺化上終于找到“翻身農(nóng)奴把歌唱”的感覺它褪。
  • 很多平臺化的關(guān)注點是接入能力和可擴展性饵骨,而普通業(yè)務(wù)的關(guān)注點更多。

歸根結(jié)底茫打,平臺化就是一種普通需求居触。在實施平臺化之前,一定要避免下面兩個誤區(qū):

  • 平臺化絕對不是諸如“統(tǒng)一”老赤、“全面”之類形容詞的堆砌轮洋。是否需要平臺化,應(yīng)該綜合考慮:客戶數(shù)量抬旺,為客戶解決的問題弊予,以及客戶價值是否值得平臺化的投入。
  • 平臺化不是你做平臺开财,讓客戶來服務(wù)你汉柒。一些平臺化設(shè)計者的規(guī)劃設(shè)計里面,把大量的平臺接入工作责鳍、臟活累活交給了客戶碾褂,然后自己專注于所謂“最高大上”的功能。恰恰相反历葛,平臺化應(yīng)該是客戶什么都不做正塌,所有的臟活累活都由平臺方來做。本質(zhì)上講恤溶,平臺化的價值來自于技術(shù)深度乓诽。真正體現(xiàn)技術(shù)深度的恰恰是設(shè)計者能夠很輕松的把所有的臟活累活搞定。

所以平臺化的最佳實踐是:投入最少的資源咒程,解決最多的問題鸠天。平臺解決一切,客戶坐享其成帐姻。

搞基礎(chǔ)技術(shù)就一定很牛嗎

經(jīng)常聽到同學(xué)們表達對基礎(chǔ)技術(shù)部同學(xué)的敬仰之情粮宛,而對搞業(yè)務(wù)技術(shù)的同學(xué)表現(xiàn)出很輕視,認為存儲卖宠、消息隊列、服務(wù)治理框架(比如美團點評內(nèi)部使用的OCTO)忧饭、Hadoop等才能被稱為真正的技術(shù)扛伍。事實并非如此,更基礎(chǔ)的并不一定更高深词裤。

比如下面這個流傳很久的段子:越高級的語言就越?jīng)]有技術(shù)含量刺洒。但真是這樣嗎鳖宾,就拿Java和C來說,這是完全不同的兩種語言逆航,所需要的技能完全不同鼎文。C或許跟操作系統(tǒng)更加接近一點,和CPU因俐、內(nèi)存打交道的機會更多一點拇惋。但是為了用好Java,程序員在面向?qū)ο竽ㄊ!⒃O(shè)計模式撑帖、框架技術(shù)方面必須要非常精通。Java工程師轉(zhuǎn)到C方向確實不容易澳眷,但作者也見過很多轉(zhuǎn)到Java語言的C工程師水土不服胡嘿。

基礎(chǔ)技術(shù)和業(yè)務(wù)應(yīng)用技術(shù)必然會有不同的關(guān)注點,沒有高低之分钳踊。之所以產(chǎn)生這種誤解衷敌,有兩個原因:

  • 基礎(chǔ)技術(shù)相對成熟,有比較完整的體系拓瞪,這給人一個高大上的感覺缴罗。業(yè)務(wù)應(yīng)用技術(shù)相對來說,由于每個團隊使用的不一樣吴藻,所以成熟度參差不齊瞒爬,影響力沒有那么大。
  • 基礎(chǔ)技術(shù)的門檻相對來說高一點沟堡,考慮到影響面侧但,對可靠性、可用性等有比較高的最低要求航罗。但是門檻高不代表技術(shù)含量高禀横,另外成熟技術(shù)相對來說在創(chuàng)新方面會受到很大的約束。但是最先進的技術(shù)都來自活躍的創(chuàng)新粥血。

對比下來柏锄,業(yè)務(wù)技術(shù)和基礎(chǔ)技術(shù)各有千秋。但真正的高手關(guān)注的是解決問題复亏,所有的技術(shù)都是技能而已趾娃。

可行性調(diào)研的那些坑

工作中開展可行性調(diào)研時有發(fā)生。做可行性調(diào)研要避免如下情況:

  • 把可行性調(diào)研做成不可行性調(diào)研缔御。這真的非常糟糕抬闷。不可行性的結(jié)論往往是:因為這樣或者那樣的原因,所以不可行。
  • 避免“老鼠給貓掛鈴鐺”式的高風(fēng)險可行性方案笤成∑兰埽“天下大事必作于細”,可行性調(diào)研一定要細致入微炕泳,避免粗枝大葉纵诞。
  • 避免調(diào)研時間過長。如果發(fā)現(xiàn)調(diào)研進展進入到指數(shù)級復(fù)雜度培遵,也就是每前進一步需要之前兩倍的時間投入浙芙,就應(yīng)該果斷的停止調(diào)研。

可行性調(diào)研的結(jié)論應(yīng)該是收益與成本的折衷荤懂,格式一般如下:

  • 首先明確預(yù)期的結(jié)果茁裙,并按照高中低收益進行分級。
  • 闡述達成每種預(yù)期結(jié)果需要采取的措施和方案节仿。
  • 給出實施各方案需要付出的成本晤锥。

工程師天生不善溝通嗎

實際工作中,溝通所導(dǎo)致的問題層出不窮廊宪。工程師有不少是比較內(nèi)向的矾瘾,總是被貼上“不善溝通”的標(biāo)簽。實際上箭启,溝通能力是工程師最重要的能力之一壕翩,良好的溝通是高效工作學(xué)習(xí)的基礎(chǔ),也是通過學(xué)習(xí)可以掌握的傅寡。下面我按工程師的語言說說溝通方面的經(jīng)驗放妈。

第一類常見的問題是溝通的可靠性。從可靠性的角度來講荐操,溝通分為TCP模式和UDP模式芜抒。TCP模式的形象表述是:我知道你知道。UDP模式的形象表述是:希望你知道托启。TCP模式當(dāng)然比較可靠宅倒,不過成本比較高,UDP模式成本低屯耸,但是不可靠拐迁。在溝通可靠性方面,常見錯誤有如下兩種:

  • 經(jīng)常聽到的這樣的爭論疗绣。一方說:“我已經(jīng)告訴他了”线召,另一方說:“我不知道這個事情呀”。把UDP模式被當(dāng)作TCP模式來使用容易產(chǎn)生扯皮多矮。
  • 過度溝通缓淹。有些同學(xué)對溝通的可靠性產(chǎn)生了過度焦慮,不斷的重復(fù)討論已有結(jié)論問題。把TCP模式當(dāng)成UDP來使用割卖,效率會比較低。

第二類溝通問題是時效性問題患雏。從時效性講鹏溯,溝通分為:同步模式和異步模式。同步溝通形象地說就是:你現(xiàn)在給我聽好了淹仑。異步溝通的形象表述是:記得給我做好了丙挽。在溝通時效性方面,有如下兩種常見錯誤:

  • 已經(jīng)出現(xiàn)線上事故匀借,緊急萬分颜阐。大家你一言,我一語吓肋,感覺事故可能和某幾個人有關(guān)凳怨,但是也不能完全確定,所以沒有通知相關(guān)人員是鬼。最終肤舞,一個普通的事故變成了嚴(yán)重事故。對于緊急的事情均蜜,必須要同步溝通李剖。
  • 半夜三點你正在熟睡,或者周末正在逛街囤耳,接到一個電話:“現(xiàn)在有個需求篙顺,能否立刻幫忙做完〕湓瘢”這會非常令人郁悶德玫,因為那并不是緊急的事情。不是所有的需求都需要立刻解決聪铺。

有效溝通的一個重要原則是提前溝通化焕。溝通本質(zhì)是信息交流和處理,可以把被溝通對象形象地比喻成串行信息處理的CPU铃剔。提前溝通撒桨,意味著將處理請求盡早放入處理隊列里面。下面的例子讓很多工程師深惡痛絕:一個需求策劃了1個月键兜,產(chǎn)品設(shè)計了2周凤类。當(dāng)開發(fā)工程是第一次聽說該需求的時候,發(fā)現(xiàn)開發(fā)的時間是2天普气。工程師據(jù)理力爭谜疤,加班加點1周搞定。最后的結(jié)論是工程師非常不給力,不配合夷磕。就像工程師討厭類似需求一樣履肃。要協(xié)調(diào)一個大項目,希望獲得別人的配合坐桩,也需要盡早溝通尺棋。

有效溝通的另外一個重點是“不要跑題”。很多看起來很接近的問題绵跷,本質(zhì)上是完全不同的問題膘螟。比如:一個會議的主題是“如何實施一個方案”,有人卻可能提出“是否應(yīng)該實施該方案”碾局。 “如何實施”和“是否應(yīng)該實施”是完全不同的兩個問題荆残,很多看起來相關(guān)的問題實際上跑題很遠【坏保“跑題”是導(dǎo)致無效溝通的重要原因内斯。

良好溝通的奧秘在于能掌握TCP模式和UDP模式精髓,正確判斷問題的緊急性蚯瞧,盡量提前溝通嘿期,避免跑題。

帶人之道

有些初為導(dǎo)師的工程師由于擔(dān)心畢業(yè)生的能力太弱埋合,安排任務(wù)時候諄諄教誨备徐,最后感覺還是有所顧慮,干脆自己寫代碼甚颂。同樣的事情發(fā)生在很多剛剛管理小團隊的工程師身上蜜猾。最終的結(jié)果他們:寫完所有的代碼,讓下屬無代碼可寫振诬〔渌“ 事必躬親”當(dāng)然非常糟糕,最終的往往是團隊的整體績效不高赶么,團隊成員的成長很慢肩豁,而自己卻很累。

古人說:“用人不疑辫呻,疑人不用清钥。”這句話并非“放之四海而皆準(zhǔn)”放闺。在古代祟昭,受限于通信技術(shù),反饋延遲顯著怖侦,而且信息在傳遞過程中有大量噪音篡悟,變形嚴(yán)重谜叹。在這種情況下,如果根據(jù)短期內(nèi)收集的少量變形的信息做快速決斷搬葬,容易陷于草率荷腊。在公司里,這句話用于選人環(huán)節(jié)更為恰當(dāng)急凰,應(yīng)該改為:錄用不疑停局,疑人不錄。

考慮到招聘成本香府,就算是在錄用層面,有時候也無法做到码倦。作為一個小團隊的管理者企孩,能夠快速準(zhǔn)確的獲取團隊成員的各種反饋信息,完全不需要“用人不疑袁稽,疑人不用”勿璃。用人的真正理論基礎(chǔ)來自于“探索和利用”(Exploration and Exploitation )。不能因為下屬能做什么就只讓他做什么推汽,更不能因為下屬一次失敗就不給機會补疑。

根據(jù)經(jīng)典的“探索和利用”(Exploration and Exploitation )理論,良好的用人方式應(yīng)該如下:

  • 首選選擇相信歹撒,在面臨失敗后莲组,收縮信任度。
  • 查找失敗的原因暖夭,提供改進意見锹杈,提升下屬的能力。
  • 總是給下屬機會迈着,在恰當(dāng)?shù)貢r機給下屬更高的挑戰(zhàn)竭望。 總之,蒼天大樹來自一顆小種子裕菠,要相信成長的力量咬清。

效率、效率奴潘、效率

經(jīng)尘缮眨看到有些同學(xué)給自己的績效評分是100分——滿分,原因是在過去一段時間太辛苦了萤彩,但最終的績效卻一般般粪滤。天道酬勤不錯,但是天道更酬巧雀扶。工程師們都學(xué)過數(shù)據(jù)結(jié)構(gòu)杖小,不同算法的時間復(fù)雜度的差距肆汹,僅僅通過更長的工作時間是難以彌補的。為了提升工作學(xué)習(xí)效率予权,我們需要注意以下幾點:

  • 主要關(guān)注效率提升昂勉。很多時候,與效率提升所帶來的收益相比扫腺,延長時間所帶來的成果往往不值得一提岗照。
  • 要有清晰的結(jié)果導(dǎo)向思維。功勞和苦勞不是一回事笆环。
  • 做正確的事情攒至,而不僅僅正確地做事情。這是一個被不斷提起的話題躁劣,但是錯誤每天都上演迫吐。為了在規(guī)定的時間內(nèi)完成一個大項目,總是要有所取舍账忘。如果沒有重點志膀,均勻發(fā)力,容易事倍功半鳖擒。如果“南轅北轍”溉浙,更是可悲可嘆。

架構(gòu)師能力模型

前面我們已經(jīng)講完了原則和一些困惑蒋荚,那么工程師到底應(yīng)該怎么提升自己呢戳稽?

成為優(yōu)秀的架構(gòu)師是大部分初中級工程師的階段性目標(biāo)。優(yōu)秀的架構(gòu)師往往具備八種核心能力:編程能力期升、調(diào)試能力广鳍、編譯部署能力、性能優(yōu)化能力吓妆、業(yè)務(wù)架構(gòu)能力赊时、在線運維能力、項目管理能力和規(guī)劃能力行拢。

這幾種能力之間的關(guān)系大概如下圖祖秒。編程能力、調(diào)試能力和編譯部署能力屬于最基礎(chǔ)的能力舟奠。不能精通掌握這三種能力竭缝,很難在性能優(yōu)化能力和業(yè)務(wù)架構(gòu)能力方面有所成就。具備了一定的性能優(yōu)化能力和業(yè)務(wù)架構(gòu)能力之后沼瘫,才能在線運維能力和項目管理能力方面表現(xiàn)優(yōu)越抬纸。團隊管理能力是最高能力,它對項目管理能力的依賴度更大耿戚。

編程能力

對工程師而言湿故,編程是最基礎(chǔ)的能力阿趁,必備技能。其本質(zhì)是一個翻譯能力坛猪,將業(yè)務(wù)需求翻譯成機器能懂的語言脖阵。

提升編程能力的書籍有很多。精通面向?qū)ο蠛驮O(shè)計模式是高效編程的基礎(chǔ)墅茉。初級工程師應(yīng)該多寫代碼命黔、多看代碼。找高手做Code Review就斤,也是提升編程水平的捷徑悍募。

調(diào)試能力

程序代碼是系統(tǒng)的靜態(tài)形式,調(diào)試的目的是通過查看程序的運行時狀態(tài)來驗證和優(yōu)化系統(tǒng)洋机。本質(zhì)上講搜立,工程師們通過不斷調(diào)試可以持續(xù)強化其通過靜態(tài)代碼去預(yù)測運行狀態(tài)的能力。所以調(diào)試能力也是工程師編程能力提升的關(guān)鍵手段槐秧。很早之前有個傳說:“調(diào)試能力有多強,編程能力就有多強忧设〉蟊辏”不過現(xiàn)在很多編輯器的功能很強大,調(diào)試能力的門檻已經(jīng)大大降低址晕。

調(diào)試能力是項目能否按時膀懈、高質(zhì)量提交的關(guān)鍵。即使一個稍具復(fù)雜度的項目谨垃,大部分工程師也無法一次性準(zhǔn)確無誤的完成启搂。大項目都是通過不斷地調(diào)試進行優(yōu)化和糾錯的。所以調(diào)試能力是不可或缺的能力刘陶。

多寫程序胳赌,解決Bug,多請教高手是提升調(diào)試能力的重要手段匙隔。

編譯部署能力

編譯并在線上部署運行程序是系統(tǒng)上線的最后一個環(huán)節(jié)疑苫。隨著SOA架構(gòu)的普及以及業(yè)務(wù)復(fù)雜度的增加,大部分系統(tǒng)只是一個完整業(yè)務(wù)的一個環(huán)節(jié)纷责,因此捍掺,本地編譯和運行并不能完全模擬系統(tǒng)在線運行。為了快速驗證所編寫程序的正確性再膳,編譯并在線上部署就成了必要環(huán)節(jié)挺勿。所以編譯部署能力是一個必備技能。

讓盤根錯節(jié)的眾多子系統(tǒng)運行起來是個不小的挑戰(zhàn)喂柒。得益于SOA架構(gòu)的普及以及大量編譯不瓶、部署工具的發(fā)展禾嫉,編譯部署的門檻已經(jīng)大大降低∨确基于應(yīng)用層進行開發(fā)的公司夭织,已經(jīng)很少有“編譯工程師”的角色了。但是對于初級工程師而言吠撮,編譯部署仍然不是一個輕松的事情尊惰。

性能優(yōu)化能力

衡量一個系統(tǒng)成功的一個重要指標(biāo)是使用量。隨著使用量的增加和業(yè)務(wù)復(fù)雜度的增加泥兰,大部分系統(tǒng)最終都會碰到性能問題弄屡。 性能優(yōu)化能力是一個綜合能力。因為:

  • 影響系統(tǒng)性能的因素眾多鞋诗,包括:數(shù)據(jù)結(jié)構(gòu)膀捷、操作系統(tǒng)、虛擬機削彬、CPU全庸、存儲、網(wǎng)絡(luò)等融痛。為了對系統(tǒng)性能進行調(diào)優(yōu)壶笼,架構(gòu)師需要掌握所有相關(guān)的技術(shù)。
  • 精通性能優(yōu)化意味著深刻理解可用性雁刷、可靠性覆劈、一致性、可維護性沛励、可擴展性等的本質(zhì)责语。
  • 性能優(yōu)化與業(yè)務(wù)強耦合,最終所采取的手段是往往折衷的結(jié)果目派。所以坤候,性能優(yōu)化要深諳妥協(xié)的藝術(shù)。

可以說企蹭,性能優(yōu)化能力是工程師們成長過程中各種技能開始融會貫通的一個標(biāo)志铐拐。這方面可以參考之前的博客文章“常見性能優(yōu)化策略的總結(jié)”。市場上還有很多與性能優(yōu)化相關(guān)的書籍练对,大家可以參考遍蟋。多多閱讀開源框架中關(guān)于性能優(yōu)化方面的文檔和代碼也不失為好的提升手段。動手解決線上性能問題也是提升性能優(yōu)化能力的關(guān)鍵螟凭。如果有機會历极,跟著高手學(xué)習(xí)写妥,分析性能優(yōu)化解決方案案例(我們技術(shù)博客之前也發(fā)表了很多這方面的文章),也是快速提升性能優(yōu)化能力的手段煤辨。

在線運維能力

如果說性能優(yōu)化能力體現(xiàn)的是架構(gòu)師的靜態(tài)思考能力津辩,在線運維能力考驗的就是動態(tài)反應(yīng)能力。殘酷的現(xiàn)實是,無論程序多么完美,Bug永遠存在谓媒。與此同時,職位越高何乎、責(zé)任越大句惯,很多架構(gòu)師需要負責(zé)非常重要的在線系統(tǒng)。對于線上故障支救,如果不能提前預(yù)防以及快速解決抢野,損失可能不堪設(shè)想,所以在線運維能力是優(yōu)秀架構(gòu)師的必備技能各墨。

為了對線上故障進行快速處理指孤,標(biāo)準(zhǔn)化的監(jiān)控、上報贬堵、升級恃轩,以及基本應(yīng)對機制當(dāng)然很重要。通過所觀察到的現(xiàn)象黎做,快速定位叉跛、緩解以及解決相關(guān)癥狀也相當(dāng)關(guān)鍵。這要求架構(gòu)師對故障系統(tǒng)的業(yè)務(wù)引几、技術(shù)具備通盤解讀能力。解決線上故障的架構(gòu)師就好比一個在參加比賽F1的車手挽铁。賽車手必須要了解自身伟桅、賽車、對手叽掘、同伴楣铁、天氣、場地等所有因素更扁,快速決策盖腕,不斷調(diào)整。架構(gòu)師必須要了解所有技術(shù)細節(jié)浓镜、業(yè)務(wù)細節(jié)溃列、處理規(guī)范、同伴等眾多因素膛薛,快速決斷听隐,迅速調(diào)整。

在線運維本質(zhì)上是一個強化學(xué)習(xí)的過程哄啄。很多能力都可以通過看書雅任、查資料來完成风范,但在線運維能力往往需要大量的實踐來提升。

業(yè)務(wù)架構(gòu)能力

工程師抱怨產(chǎn)品經(jīng)理的故事屢見不鮮沪么,抱怨最多的主要原因來自于需求的頻繁變更硼婿。需求變更主要有兩個來源:第一個原因是市場改變或戰(zhàn)略調(diào)整,第二個原因是偽需求禽车。對于第一個原因寇漫,無論是工程師還是產(chǎn)品經(jīng)理,都只能無奈的接受哭当。優(yōu)秀的架構(gòu)師應(yīng)該具備減少第二種原因所導(dǎo)致的需求變更的概率猪腕。

偽需求的產(chǎn)生有兩個原因:

  • 第一個原因是需求傳遞變形。從信息論的角度來講钦勘,任何溝通都是一個編碼和解碼的過程陋葡。典型的需求從需求方到產(chǎn)品經(jīng)理,最終到開發(fā)工程師彻采,最少需要經(jīng)歷三次編碼和解碼過程腐缤。而信息的每一次傳遞都存在一些損失并帶來一些噪音,這導(dǎo)致有些時候開發(fā)出來的產(chǎn)品完全對不上需求肛响。此外岭粤,需求方和產(chǎn)品經(jīng)理在需求可行性、系統(tǒng)可靠性特笋,開發(fā)成本控制方面的把控比較弱剃浇,也會導(dǎo)致需求變形。
  • 第二個原因就是需求方完全沒有想好自己的需求猎物。

優(yōu)秀的架構(gòu)師應(yīng)該具備辨別真?zhèn)涡枨蟮哪芰⑶簟?yīng)該花時間去了解客戶的真實業(yè)務(wù)場景,具備較強的業(yè)務(wù)抽象能力蔫磨,洞悉客戶的真實需求淘讥。系統(tǒng)的真正實施方是工程師,在明確客戶真實需求后堤如,高明的架構(gòu)師應(yīng)該具備準(zhǔn)確判斷項目對可行性蒲列、可靠性、可用性等方面的要求搀罢,并能具備成本意識蝗岖。最后,由于需求與在線系統(tǒng)的緊耦合關(guān)系榔至,掌握在線系統(tǒng)的各種細節(jié)也是成功的業(yè)務(wù)架構(gòu)的關(guān)鍵剪侮。隨著級別的提升,工程師所面對的需求會越來越抽象。承接抽象需求瓣俯,提供抽象架構(gòu)是架構(gòu)師走向卓越的必經(jīng)之途杰标。

市場上有一些關(guān)于如何成為架構(gòu)師的書,大家可以參考彩匕。但是架構(gòu)能力的提升腔剂,實踐可能是更重要的方式。業(yè)務(wù)架構(gòu)師應(yīng)該關(guān)注客戶的痛點而不是PRD文檔驼仪,應(yīng)該深入關(guān)注真實業(yè)務(wù)掸犬。掌握現(xiàn)存系統(tǒng)的大量技術(shù)和業(yè)務(wù)細節(jié)也是業(yè)務(wù)架構(gòu)師的必備知識。

項目管理能力

作為工業(yè)時代的產(chǎn)物绪爸,分工合作融入在互聯(lián)網(wǎng)項目基因里面湾碎。架構(gòu)師也需要負責(zé)幾個重大項目才能給自己正名。以架構(gòu)師角色去管理項目奠货,業(yè)務(wù)架構(gòu)能力當(dāng)然是必備技能。此外柔滔,人員管理和成本控制意識也非常重要杉编。

項目管理還意味著要有一個大心臟。重大項目涉及技術(shù)攻關(guān)偿衰、人員變動、需求更改等眾多可變因素。面臨各種變化订晌,還要在確保目標(biāo)順利達成奕枢,需要較強的抗壓能力哺眯。

人員管理需要注意的方面包括:知人善用,優(yōu)化關(guān)系,簡化溝通只盹,堅持真理。

  • 知人善用意味著架構(gòu)師需要了解每個參與者的硬技能和軟素質(zhì)许起。同時猛频,關(guān)注團隊成員在項目過程中的表現(xiàn),按能分配
  • 優(yōu)化關(guān)系意味著管理團隊的情緒招刹,畢竟項目的核心是團隊,有士氣的團隊才能高效達成目標(biāo)越锈。
  • 簡化溝通意味著快速決策,該妥協(xié)的時候妥協(xié)躲胳,權(quán)責(zé)分明恐仑。
  • 堅持真理意味著頂住壓力,在原則性問題上絕不退步再芋。

成本控制意味著對項目進行精細化管理菊霜,需要遵循如下幾個原則:

  • 以終為始坚冀、確定里程碑济赎。為了達成目標(biāo),所有的計劃必須以終為始來制定。將大項目分解成幾個小階段司训,控制每個階段的里程碑可以大大降低項目失敗的風(fēng)險构捡。
  • 把控關(guān)鍵路徑和關(guān)鍵項目。按照關(guān)鍵路徑管理理論(CPM)的要求壳猜,架構(gòu)師需要確定每個子項目的關(guān)鍵路徑勾徽,確定其最早和最晚啟動時間。同時统扳,架構(gòu)師需要關(guān)注那些可能會導(dǎo)致項目整體延期的關(guān)鍵節(jié)點喘帚,并集中力量攻破。
  • 掌控團隊成員的張弛度咒钟。大項目持續(xù)時間會比較長吹由,也包含不同工種。項目實施是一個不斷變化的動態(tài)過程朱嘴,在這個過程中不是整個周期都很緊張倾鲫,不是所有的工種都一樣忙。優(yōu)秀的架構(gòu)師必須要具備精細閱讀整體項目以及快速反應(yīng)和實時調(diào)整的能力萍嬉。這不僅僅可以大大降低項目成本乌昔,還可以提高產(chǎn)出質(zhì)量和團隊滿意度∪雷罚總體來說磕道,“前緊后松”是項目管理的一個重要原則。

項目管理方面的書籍很多行冰。但是捅厂,提高業(yè)務(wù)架構(gòu)能力同樣重要。積極參與大項目并觀察別人管理項目的方式也是非常重要的提升手段资柔。

團隊管理能力

不想做CTO的工程師不是一個好的架構(gòu)師焙贷。走向技術(shù)管理應(yīng)該是工程師的一個主流職業(yè)規(guī)劃。團隊管理的一個核心能力就是規(guī)劃能力贿堰,這包括項目規(guī)劃和人員規(guī)劃辙芍。良好的規(guī)劃需要遵循如下原則:

  • 規(guī)劃是利益的博弈。良好的規(guī)劃上面對得起老板羹与,中間對得起自己故硅,下面對得起團隊。在三者利益者尋找平衡點纵搁,實現(xiàn)多方共贏考驗著管理者的智慧和精細拿捏的能力吃衅。
  • 任何規(guī)劃都比沒有規(guī)劃好。沒有規(guī)劃的團隊就是沒頭的蒼蠅腾誉,不符合所有人的利益徘层。
  • 規(guī)劃不是本本主義峻呕。市場在變,團隊在變趣效,規(guī)劃也不應(yīng)該一成不變瘦癌。
  • 客戶至上的是項目規(guī)劃的出發(fā)點。
  • 就人員規(guī)劃而言跷敬,規(guī)劃需要考量團隊成員的能力讯私、績效、成長等多方面的因素西傀。

市場上有很多規(guī)劃管理方面的書籍斤寇,值得閱讀。最優(yōu)化理論雖然是技術(shù)書籍拥褂,但它是規(guī)劃的理論基礎(chǔ)抡驼,所以不妨多看看翻閱一下。從自我規(guī)劃開始肿仑,多多學(xué)習(xí)別人的規(guī)劃也是規(guī)劃能力提升的重要手段致盟。

總結(jié)

因為受邀去做一個關(guān)于“一邊工作,一邊學(xué)習(xí)”的分享尤慰,作者花了一段時間去思考和匯總學(xué)習(xí)方法論馏锡,接著每天不斷地采集謠言并嘗試解惑,再根據(jù)個人經(jīng)驗繪制出優(yōu)秀架構(gòu)師的能力模型伟端,最后匯集成文杯道。

文章系統(tǒng)性地闡述了學(xué)習(xí)原則、分析了常見困惑责蝠,并制定明確學(xué)習(xí)目標(biāo)党巾,期望對工程師們的工作學(xué)習(xí)有所幫助。需要申明的是霜医,文章內(nèi)容掛一漏萬齿拂,所謂的架構(gòu)師能力模型也是作者的個人觀點。歡迎大家在評論中分享自己在學(xué)習(xí)成長方面的心得肴敛。

有商業(yè)意識的技術(shù)人署海,才有未來

馬云曾在一次采訪說到,“我希望達摩院這個實驗室的領(lǐng)導(dǎo)医男,要有強大的Business sense砸狞。我們的CTO(張建鋒)就有強大的Business Sense,他輪崗了很多部門镀梭,純技術(shù)忽悠他沒用刀森,純商業(yè)忽悠他也沒用。一個科學(xué)家要有創(chuàng)業(yè)者的意識报账,一個企業(yè)家要有科學(xué)家的嚴(yán)謹態(tài)度研底,因為只有這樣才有未來埠偿。”

在阿里達摩院成立之初飘哨,行癲曾問馬云,我們要不請一個專職的院長琐凭?馬老師說專職的研究院肯定搞不好芽隆,他希望研究院跟技術(shù)研發(fā)體系有非常強的關(guān)聯(lián)。也就是要有商業(yè)意識统屈,又要懂技術(shù)胚吁。

行癲靠技術(shù)入行,機緣巧合愁憔,進入了快速發(fā)展時期的阿里巴巴腕扶,一步步從技術(shù)走向管理,從管理到商業(yè)吨掌,完成了一次又一次的華麗轉(zhuǎn)身半抱。

什么樣的技術(shù)人才,能夠在未來發(fā)揮更大的作用膜宋?行癲的故事已經(jīng)給我們答案:有商業(yè)意識的技術(shù)人窿侈,才能走向更廣闊的未來!

阿里多隆:成為人人敬仰的技術(shù)大神

多隆在阿里的戰(zhàn)績秋茫,碩果累累史简,不無夸張地說,是一個可以躺在功名簿上睡大覺的人肛著,但他沒有圆兵。

作為一個技術(shù)癡,多隆除了去食堂吃飯枢贿、睡覺和上廁所殉农,他把剩余時間全都拿來寫代碼,哪怕現(xiàn)在已經(jīng)是阿里技術(shù)崗里最頂級的P11局荚,還是沒有一個獨立辦公室统抬,依然和其他同事一起工作,只要其他人有技術(shù)上的問題危队,總是隨叫隨到聪建,態(tài)度和藹。

多隆寫的代碼幾乎不需要測試茫陆,這是他能夠“封神”的另一個原因金麸。

但是多隆卻不認同自己“封神”的說法,他說簿盅,“就是解決問題嘛挥下,想要解決代碼問題就得不斷試錯揍魂,先要找問題,然后定位問題棚瘟,有時經(jīng)常在家里搞到很晚现斋,還是有很多東西還是搞不出來≠苏海”

多隆被不只一次的問到同樣的問題:“如何能夠像你一樣庄蹋,成為一位大牛,或者說提升自己的技術(shù)水平迷雪?”

在多隆看來限书,“沒有所謂的大神、大牛章咧,真的都是從做項目開始倦西。我剛開始的時候其實什么都不懂的,比如 2000 年進阿里的時候赁严,我連 JAVA 都不懂扰柠。當(dāng)你在工作中遇到問題了,就去找資料疼约,然后去把它弄懂耻矮、弄會。只要肯花時間和力氣忆谓,那你自然而然就會了裆装。”

“周末我送小孩去少年宮倡缠,自己也會帶著電腦去看看資料或者寫寫代碼哨免。很多情況下真的沒有捷徑,就是看你肯不肯花時間昙沦,就是這樣琢唾。”

“要學(xué)會總結(jié)盾饮。比如采桃,原來經(jīng)常做一些重復(fù)勞動的工作,那你是不是可以做一個工具出來丘损,讓自己從這種重復(fù)勞動的工作中解放出來普办。”

“發(fā)現(xiàn)問題徘钥,解決問題衔蹲,不要繞開問題的本身。工程師對于代碼呈础,一定要精益求精舆驶,不論是性能橱健,還是簡潔優(yōu)雅,都要認真打磨自己的作品沙廉【械矗”

像多隆這樣,從畢業(yè)就進入一家公司寫代碼撬陵,十幾年如一日地專注于技術(shù)珊皿,從普通員工做到上市公司合伙人,除了自己付出了超越常人的努力之外袱结,無疑也是非常幸運的亮隙。

參考:
《大牛中的大磐举欤——多隆蔡景現(xiàn)》垢夹,知乎
《多隆:從工程師到阿里巴巴合伙人》维费,阿里技術(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末果元,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子犀盟,更是在濱河造成了極大的恐慌而晒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阅畴,死亡現(xiàn)場離奇詭異倡怎,居然都是意外死亡,警方通過查閱死者的電腦和手機贱枣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門监署,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纽哥,你說我怎么就攤上這事钠乏。” “怎么了春塌?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵晓避,是天一觀的道長。 經(jīng)常有香客問我只壳,道長俏拱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任吼句,我火速辦了婚禮彰触,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘命辖。我一直安慰自己况毅,他們只是感情好分蓖,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尔许,像睡著了一般么鹤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上味廊,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天蒸甜,我揣著相機與錄音,去河邊找鬼余佛。 笑死柠新,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辉巡。 我是一名探鬼主播恨憎,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼郊楣!你這毒婦竟也來了憔恳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤净蚤,失蹤者是張志新(化名)和其女友劉穎钥组,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體今瀑,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡程梦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了橘荠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屿附。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖砾医,靈堂內(nèi)的尸體忽然破棺而出拿撩,到底是詐尸還是另有隱情,我是刑警寧澤如蚜,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布压恒,位于F島的核電站,受9級特大地震影響错邦,放射性物質(zhì)發(fā)生泄漏探赫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一撬呢、第九天 我趴在偏房一處隱蔽的房頂上張望伦吠。 院中可真熱鬧,春花似錦、人聲如沸毛仪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箱靴。三九已至腺逛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衡怀,已是汗流浹背棍矛。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抛杨,地道東北人够委。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像怖现,于是被迫代替她去往敵國和親茁帽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345