引言
古人云:“活到老漓雅,學(xué)到老∥蟊ぃ”互聯(lián)網(wǎng)算是最辛苦的行業(yè)之一八酒,“加班”對(duì)工程師來說已是“家常便飯”嫁怀,同時(shí)互聯(lián)網(wǎng)技術(shù)又日新月異奸绷,很多工程師都疲于應(yīng)付梗夸,叫苦不堪。以至于長期以來流傳一個(gè)很廣的誤解:35歲是程序員工作的終點(diǎn)号醉。
如何在繁忙的工作中做好技術(shù)積累反症,構(gòu)建個(gè)人核心競(jìng)爭(zhēng)力,相信是很多工程師同行都在思考的問題畔派。本文是我自己的一些總結(jié)铅碍,試圖從三個(gè)方面來解答:
第一部分闡述了一些學(xué)習(xí)的原則。任何時(shí)候线椰,遵循一些經(jīng)過檢驗(yàn)的原則胞谈,都是影響效率的重要因素,正確的方法是成功的秘訣。
提升工作和學(xué)習(xí)效率的另一個(gè)重要因素是釋惑和良好心態(tài)烦绳。第二部分分析了我在工作中碰到和看到的一些典型困惑悔叽。
成為優(yōu)秀的架構(gòu)師是大部分初中級(jí)工程師的階段性目標(biāo)。第三部分剖析架構(gòu)師的能力模型爵嗅,讓大家對(duì)目標(biāo)所需能力有一個(gè)比較清晰的認(rèn)知。
如何學(xué)習(xí)
在繁忙的工作中笨蚁,持之以恒睹晒、不斷學(xué)習(xí)和進(jìn)步是一件艱巨的任務(wù),需要堅(jiān)強(qiáng)的毅力和堅(jiān)定的決心括细。如果方法不得當(dāng)伪很,更是事倍功半。幸好我們的古人和現(xiàn)在哲人已經(jīng)總結(jié)了很多優(yōu)秀的學(xué)習(xí)方法論奋单,這里匯總了一些重要原則锉试。遵循這些方法必會(huì)對(duì)大家的工作學(xué)習(xí)大有裨益。
貴在堅(jiān)持
有報(bào)道指出览濒,過去幾十年的知識(shí)量超過之前人類幾千年的知識(shí)量總和呆盖。而計(jì)算機(jī)領(lǐng)域絕對(duì)是當(dāng)代知識(shí)更新最快的領(lǐng)域之一,因此贷笛,工程師必須要接受這樣一個(gè)現(xiàn)實(shí)应又,現(xiàn)在所掌握的深厚知識(shí)體系很快就會(huì)被淘汰。要想在計(jì)算機(jī)領(lǐng)域持續(xù)做優(yōu)秀架構(gòu)師乏苦,就必須不停的學(xué)習(xí)株扛,掌握最新技術(shù)』慵觯總之洞就,學(xué)不可以已。
所謂“冰凍三尺掀淘,非一日之寒旬蟋,水滴石穿,非一日之功”革娄,通往架構(gòu)師的道路漫長而又艱巨咖为,輕易放棄,則所有付出瞬間付之東流稠腊。要想成為優(yōu)秀的架構(gòu)師躁染,貴在堅(jiān)持!
雖然知識(shí)更新很快架忌,但是基礎(chǔ)理論的變化卻非常緩慢吞彤。這就是“道”和“象”關(guān)系,縱是世間萬象,道卻萬變不離其宗饰恕。對(duì)于那些非衬痈幔基礎(chǔ)的理論知識(shí),我們需要經(jīng)常復(fù)習(xí)埋嵌,也就是“學(xué)而時(shí)習(xí)之”破加。
重視實(shí)踐
古人云:“紙上得來終覺淺,絕知此事要躬行雹嗦》兑ǎ” 學(xué)習(xí)領(lǐng)域有所謂721模型:個(gè)人的成長70%來自于崗位實(shí)踐,20%來自向他人學(xué)習(xí)了罪,10%來自于培訓(xùn)锭环。雖然這種理論存在爭(zhēng)議,但對(duì)于工程師們來說泊藕,按照實(shí)踐辅辩、學(xué)習(xí)和培訓(xùn)的方式進(jìn)行重要性排序,大致是不錯(cuò)的娃圆。所以重視實(shí)踐玫锋,在實(shí)踐中成長是最重要的學(xué)習(xí)原則。
人類的認(rèn)知有兩種:感性認(rèn)知和理性認(rèn)知讼呢。這兩種認(rèn)知互相不可替代性景醇。實(shí)踐很大程度來自于感性學(xué)習(xí),看書更像是理性學(xué)習(xí)吝岭。以學(xué)開汽車做例子三痰,很難想象什么人能夠僅僅通過學(xué)習(xí)書本知識(shí)就會(huì)開汽車。
書本知識(shí)主要是傳道——講述抽象原型窜管,而對(duì)其具體應(yīng)用場(chǎng)景的講述往往含糊其辭散劫,對(duì)抽象原型之間的關(guān)系也是淺嘗輒止。采用同樣精確的語言去描述應(yīng)用場(chǎng)景和關(guān)聯(lián)關(guān)系將會(huì)失去重點(diǎn)幕帆,讓人摸不著頭腦获搏。所以,僅僅通過看書來獲得成長就像是用一條腿走路失乾。
重視實(shí)踐常熙,充分運(yùn)用感性認(rèn)知潛能,在項(xiàng)目中磨煉自己碱茁,才是正確的學(xué)習(xí)之道裸卫。在實(shí)踐中,在某些關(guān)鍵動(dòng)作上刻意練習(xí)纽竣,也會(huì)取得事半功倍的效果墓贿。
重視交流
牛頓說:“如果說我看得比別人遠(yuǎn)一些茧泪,那是因?yàn)槲艺驹诰奕说募绨蛏稀聋袋!蔽覀冃枰獜膭e人身上學(xué)習(xí)队伟。從老師、領(lǐng)導(dǎo)幽勒、同事嗜侮、下屬甚至對(duì)手身上學(xué)習(xí),是快速成長的重要手段啥容。
向老師和領(lǐng)導(dǎo)學(xué)習(xí)已經(jīng)是人們生活習(xí)慣的一部分了锈颗。但是從同事甚至對(duì)手那里學(xué)習(xí)也很重要,因?yàn)檫@些人和我們自身更相似干毅。所以要多多觀察,取其所長泼返,棄其所短硝逢。對(duì)于團(tuán)隊(duì)的小兄弟和下屬,也要“不恥下問”绅喉。
此外渠鸽,在項(xiàng)目中積極參與具體方案討論也非常重要。參與者先驗(yàn)感知了相關(guān)背景柴罐,并且討論的觀點(diǎn)和建議也是綜合了發(fā)言者多種知識(shí)和技能徽缚。所以,討論讓參與者能夠非常全面革屠,立體地理解書本知識(shí)凿试。同時(shí),和高手討論似芝,他們的觀點(diǎn)就會(huì)像修剪機(jī)剪樹枝一樣那婉,快速的剪掉自己知識(shí)領(lǐng)域里面的疑惑點(diǎn)。
重視總結(jié)和輸出
工程師在實(shí)踐中會(huì)掌握大量細(xì)節(jié)党瓮,但是详炬,即使掌握了所有細(xì)節(jié),卻沒有深刻的總結(jié)和思考寞奸,也會(huì)陷入到“學(xué)而不思則罔”的境地呛谜。成長的“量變”來自于對(duì)細(xì)節(jié)的逐漸深入地把控,而真正的“質(zhì)變”來自于對(duì)“道”的更深層次的理解枪萄。
將經(jīng)驗(yàn)輸出隐岛,接受別人的檢驗(yàn)是高層次的總結(jié)。這種輸出不僅幫助了別人瓷翻,對(duì)自身更是大有裨益礼仗。總結(jié)的方式有很多,包括組織分享元践,撰寫技術(shù)文章等等韭脊。當(dāng)然“日三省吾身”也是不錯(cuò)的總結(jié)方式〉ヅ裕總之沪羔,多多總結(jié),多多分享象浑,善莫大焉蔫饰!
解答別人的問題也是個(gè)人成長的重要手段。有時(shí)候愉豺,某個(gè)問題自己本來不太懂篓吁,但是在給別人講解的時(shí)候卻豁然開朗。所以蚪拦,“誨人不倦”利人惠己杖剪。
重視規(guī)劃
凡事預(yù)則立,不預(yù)則廢驰贷。對(duì)于漫長的學(xué)習(xí)生涯而言盛嘿,好的計(jì)劃是成功的一半。
長期規(guī)劃
長期規(guī)劃的實(shí)施需要毅力和決心括袒,但是做正確的長期規(guī)劃還需要高瞻遠(yuǎn)矚的眼界次兆、超級(jí)敏感的神經(jīng)和中大獎(jiǎng)的運(yùn)氣。對(duì)于大部分人來說锹锰,長期規(guī)劃定主要是“定方向”芥炭。但遵循如下原則能夠減少犯方向性錯(cuò)誤的概率:
遠(yuǎn)離日暮西山的行業(yè)。
做自己感興趣的事情恃慧。
做有積累的事情蚤认。
一邊走一邊看,切勿一條道走到黑糕伐。
短期規(guī)劃
良好的短期規(guī)劃應(yīng)該在生活砰琢、成長、績效和晉升之間取得平衡良瞧。大部分公司都會(huì)制定一個(gè)考核周期——少則一個(gè)月陪汽,多則一年。所以不妨以考核周期作為短期學(xué)習(xí)規(guī)劃周期褥蚯。本質(zhì)上挚冤,規(guī)劃是一個(gè)多目標(biāo)優(yōu)化問題,它有一系列的理論方案赞庶,這里不一一細(xì)說训挡“闹瑁基于相關(guān)理論,我給出一個(gè)簡單易行的方案:
確定目標(biāo)優(yōu)先級(jí)澜薄。比如:成長为肮、生活、績效肤京。
確定每個(gè)目標(biāo)的下限颊艳。從優(yōu)化理論的角度來看,這被稱為約束忘分。比如績效必須在一般以上棋枕,之前已經(jīng)規(guī)劃好的旅行不能更改,必須讀完《Effective Java》等等妒峦。
優(yōu)先為下限目標(biāo)分配足夠的資源重斑。比如,事先規(guī)劃好的旅行需要10天肯骇,這10天就必須預(yù)算出去窥浪。
按照各主目標(biāo)的順序依次分配資源。比如累盗,最終分配給學(xué)習(xí)的時(shí)間是10天寒矿。
在給定的學(xué)習(xí)預(yù)算下突琳,制定學(xué)習(xí)目標(biāo)若债,要激進(jìn)。然后給出執(zhí)行方案拆融。比如蠢琳,學(xué)習(xí)目標(biāo)是掌握基本的統(tǒng)計(jì)學(xué)知識(shí),并成為Java專家镜豹。具體方案為:完成《Effective Java》傲须、《Java Performance》、《Design Pattern》趟脂、《Head First Statistics》四本書的閱讀泰讽。
對(duì)規(guī)劃中的各學(xué)習(xí)任務(wù)按目標(biāo)優(yōu)先級(jí)進(jìn)行排序,并最先啟動(dòng)優(yōu)先級(jí)最高的任務(wù)昔期。比如已卸,最高優(yōu)先級(jí)是掌握統(tǒng)計(jì)理論,那么就要先看《Head First Statistics》硼一。
對(duì)于該方案累澡,要注意以下幾點(diǎn):
最低目標(biāo)必須能夠輕松達(dá)成的目標(biāo),否則般贼,從優(yōu)化理論的角度來講愧哟,該命題無解奥吩。比如,類似“半年內(nèi)完成晉級(jí)兩次蕊梧、績效全部S霞赫、從菜鳥成為Java專家”就不太合適作為最低目標(biāo)⊥福總之绩脆,要區(qū)分理想和夢(mèng)想。
主要目標(biāo)規(guī)劃必須具備一定的挑戰(zhàn)性橄抹,需要規(guī)劃出不可能完成的目標(biāo)靴迫。過度規(guī)劃本質(zhì)上是一種貪婪算法,目的是目標(biāo)價(jià)值最大化楼誓。因?yàn)橐磺薪杂凶償?shù)玉锌,如果其他目標(biāo)能夠提前完成,就不妨利用這些時(shí)間去完成更多的學(xué)習(xí)目標(biāo)疟羹≈魇兀總之,前途必須光明榄融,道路必須坎坷参淫。
各目標(biāo)之間不一定共享資源,規(guī)劃不一定互有沖突愧杯。
此外涎才,短期規(guī)劃還可以從如下幾個(gè)方面進(jìn)行優(yōu)化:
學(xué)習(xí)計(jì)劃最好能結(jié)合工作計(jì)劃,理論聯(lián)系實(shí)際結(jié)合力九,快速學(xué)以致用耍铜。比如,本季度規(guī)劃去做一些數(shù)據(jù)分析工作跌前,那么不妨把學(xué)習(xí)目標(biāo)設(shè)置為學(xué)習(xí)統(tǒng)計(jì)知識(shí)棕兼。
要靈活對(duì)待規(guī)劃的目標(biāo)和具體執(zhí)行步驟,需要避免“鄭人買履”式的笑話抵乓。面臨新的挑戰(zhàn)和變化伴挚,規(guī)劃需要不斷地調(diào)整。
那些令人糾結(jié)的困惑
人生是一場(chǎng)馬拉松灾炭,在漫長的征途中茎芋,難免有很多困惑。困惑就像枷鎖咆贬,使我們步履蹣跚败徊,困惑就像死鎖,讓我們停滯不前掏缎。
接下來我將總結(jié)自己在工作中碰到和看到的一些典型困惑皱蹦。這些困惑或者長期困擾作者本人煤杀,或者困擾我身邊的同事和朋友。當(dāng)這些困惑被釋然之后沪哺,大家都感覺如重獲釋沈自,為下一階段的征程提供滿滿的正能量。人生就像一場(chǎng)旅途辜妓,不必在乎目的地枯途,在乎的,應(yīng)該是沿途的風(fēng)景籍滴,以及看風(fēng)景的心情酪夷。良好的心態(tài)是技術(shù)之旅最好的伴侶。期望通過這個(gè)解惑之旅孽惰,讓大家擁有一個(gè)愉快的心情去感受漫長的學(xué)習(xí)旅途晚岭。
學(xué)無止境嗎
必須要承認(rèn)一個(gè)殘酷的現(xiàn)實(shí):人的生命是有限的,知識(shí)卻是無限的勋功。用有限的生命去學(xué)習(xí)無限的知識(shí)是不可能完成的任務(wù)坦报。一想到此,有些工程師不免產(chǎn)生一些悲觀情緒狂鞋。如果方法得當(dāng)并且足夠勤奮片择,悲傷大可不必。
雖然骚揍,人類的整體知識(shí)體系一直在擴(kuò)張字管。但是就很多重要的工程細(xì)分領(lǐng)域,基礎(chǔ)理論并不高深疏咐。計(jì)算機(jī)的很多重要領(lǐng)域纤掸,工程師有能力在有限時(shí)間內(nèi)抓住核心要害脐供。
比如浑塞,密碼學(xué)被認(rèn)為是門非常高深的學(xué)科,但是一大類密碼技術(shù)的基礎(chǔ)是數(shù)論中一個(gè)非常簡單的理論——素因數(shù)分解:給出兩個(gè)素?cái)?shù)政己,很容易算出它們的積酌壕,然而反過來給定兩個(gè)素?cái)?shù)的積,分解的計(jì)算量卻非常驚人歇由。
“一致性”算得上是計(jì)算機(jī)領(lǐng)域里面最經(jīng)典的難題卵牍,它是所有分布式系統(tǒng)的基礎(chǔ),從多核多CPU到多線程沦泌,從跨機(jī)器到跨機(jī)房糊昙,無所不在,幾乎所有的計(jì)算機(jī)從業(yè)人員都在解決這個(gè)問題谢谦,但是Paxos給出了一個(gè)很優(yōu)雅的解決方案释牺。
權(quán)限管理是很多工程師的噩夢(mèng)萝衩,但如果你能搞定“Attribute Based Access Control(ABAC)”和“Role-Based Access Control(RBAC)”,也能達(dá)到相當(dāng)高度没咙。
另外猩谊,技術(shù)學(xué)習(xí)是一場(chǎng)對(duì)抗賽,雖然學(xué)無止境祭刚,超越大部分對(duì)手就是一種勝利牌捷。所以,以正確的學(xué)習(xí)方式涡驮,長時(shí)間投入就會(huì)形成核心競(jìng)爭(zhēng)力暗甥。
沒有絕對(duì)高明的技術(shù),只有真正的高手
致力于在技術(shù)上有所成就的工程師捉捅,都?jí)粝胗谐蝗粘蔀榧夹g(shù)高手淋袖。但技術(shù)高手的標(biāo)準(zhǔn)卻存在很大的爭(zhēng)議。這是一個(gè)有著悠久歷史的誤解:以某種技術(shù)的掌握作為技術(shù)高手的評(píng)判標(biāo)準(zhǔn)锯梁。我經(jīng)常碰到這樣一些情景:因?yàn)檎莆樟四承┘夹g(shù)即碗,比如Spring、Kafka陌凳、Elasticsearch等剥懒,一些工程師就自封為高手。有些工程師非常仰慕別的團(tuán)隊(duì)合敦,原因竟是那個(gè)團(tuán)隊(duì)使用了某種技術(shù)初橘。
這種誤解的產(chǎn)生有幾個(gè)原因:首先,技多不壓身充岛,技術(shù)自然是掌握的越多越好保檐,掌握很多技術(shù)的人自然不是菜鳥。其次崔梗,在互聯(lián)網(wǎng)時(shí)代來臨之前夜只,信息獲取是非常昂貴的事情。這就導(dǎo)致一項(xiàng)技能的掌握可以給個(gè)人甚至整個(gè)公司帶來優(yōu)勢(shì)地位蒜魄∪雍ィ互聯(lián)網(wǎng)時(shí)代,各種框架的出現(xiàn)以及開源的普及快速淘汰或者降低了很多技能的價(jià)值谈为,同時(shí)降低了很多技術(shù)的學(xué)習(xí)門檻旅挤。所以,在當(dāng)前伞鲫,掌握某項(xiàng)技能知識(shí)只能是一個(gè)短期目標(biāo)粘茄。懷揣某些技能就沾沾自喜的人需要記住:驕傲使人退步秕脓。
所謂麻雀雖小柒瓣,五臟俱全瘪菌。如果讓你來做造物主,設(shè)計(jì)麻雀和設(shè)計(jì)大象的復(fù)雜度并沒有明顯區(qū)別嘹朗。一個(gè)看起來很小的業(yè)務(wù)需求师妙,為了達(dá)到極致,所需要的技術(shù)和能力是非常綜合和高深的屹培。真正的高手不是拿著所掌握的技術(shù)去卡客戶需求默穴,而是傾聽客戶的需求,給出精益求精的方案褪秀。完成客戶的需求是一場(chǎng)擂臺(tái)賽蓄诽,真正的高手,是會(huì)見招拆招的媒吗。
不做項(xiàng)目就無法成長嗎
在項(xiàng)目中學(xué)習(xí)是最快的成長方式之一仑氛,很多工程師非常享受這個(gè)過程。但是一年到頭都做項(xiàng)目闸英,你可能是在一家外包公司锯岖。對(duì)于一個(gè)做產(chǎn)品的公司,如果年頭到年尾都在做項(xiàng)目甫何,要不然就是在初步創(chuàng)業(yè)階段出吹,要不然就是做了大量失敗的項(xiàng)目,總之不算是特別理想的狀態(tài)辙喂。正常情況捶牢,在項(xiàng)目之間都會(huì)有一些非項(xiàng)目時(shí)間。在這段時(shí)間巍耗,有些同學(xué)會(huì)產(chǎn)生迷茫秋麸,成長很慢。
項(xiàng)目真的是越多越好嗎炬太?答案顯然是否定的灸蟆。重復(fù)的項(xiàng)目不會(huì)給工程師們帶來新的成長。不停的做項(xiàng)目娄琉,從而缺乏學(xué)習(xí)新知識(shí)的時(shí)間次乓,會(huì)導(dǎo)致“做而不學(xué)則殆”吓歇。真正讓工程師出類拔萃的是項(xiàng)目的深度孽水,而不是不停地做項(xiàng)目。所以城看,在項(xiàng)目之間的空檔期女气,工程師們應(yīng)該珍惜難得的喘息之機(jī),深入思考测柠,把項(xiàng)目做深炼鞠,做精缘滥。
如何提高項(xiàng)目的深度呢?一般而言谒主,任何項(xiàng)目都有一個(gè)目標(biāo)朝扼,當(dāng)項(xiàng)目完成后,目標(biāo)就算基本達(dá)成了霎肯。但是擎颖,客戶真的滿意了嗎?系統(tǒng)的可用性观游、可靠性搂捧、可擴(kuò)展性、可維護(hù)性已經(jīng)做到極致了嗎懂缕?這幾個(gè)問題的答案永遠(yuǎn)是否定的允跑。所以,任何一個(gè)有價(jià)值的項(xiàng)目搪柑,都可以一直深挖聋丝。深挖項(xiàng)目,深度思考還可以鍛煉工程師的創(chuàng)造力工碾。期望不停地做項(xiàng)目的人潮针,就像一個(gè)致力于訓(xùn)練更多千里馬的人是發(fā)明不出汽車的。鍛煉創(chuàng)造力也不是一蹴而就的事情倚喂,需要長時(shí)間地思考每篷。總之端圈,工程師們應(yīng)該總是覺得時(shí)間不夠用焦读,畢竟時(shí)間是最寶貴的資源舱权。
職責(zé)真的很小嗎
很多時(shí)候,一個(gè)工程師所負(fù)責(zé)系統(tǒng)的數(shù)量和團(tuán)隊(duì)規(guī)模與其“江湖地位”正相關(guān)宴倍。但是,江湖地位與技術(shù)成長沒有必然關(guān)聯(lián)俗他。提升技術(shù)能力的關(guān)鍵是項(xiàng)目深度以及客戶的挑剔程度阔逼。項(xiàng)目越多,在單個(gè)項(xiàng)目中投入的時(shí)間就越少羡亩,容易陷入膚淺。特別需要避免的是“ 在其位不謀其政”的情況畏铆。團(tuán)隊(duì)越大,在管理方面需要投入的精力就越多片排。在管理技巧不成熟速侈,技術(shù)眼界不夠高的前提強(qiáng)行負(fù)責(zé)大團(tuán)隊(duì)率寡,可能會(huì)導(dǎo)致個(gè)人疲于應(yīng)付,團(tuán)隊(duì)毫無建樹倚搬。最終“ 一將無能冶共,累死三軍”,效果可能適得其反每界。
從技術(shù)發(fā)展的角度來說捅僵,技術(shù)管理者應(yīng)該關(guān)注自己所能把控的活躍項(xiàng)目的數(shù)量,并致力于提高活躍項(xiàng)目的影響力和技術(shù)深度眨层。團(tuán)隊(duì)人數(shù)要與個(gè)人管理能力庙楚、規(guī)劃能力和需求把控能力相適應(yīng)。一份工作讓多個(gè)人來干趴樱,每個(gè)人的成長都受限馒闷。每個(gè)人都做簡單重復(fù)的工作,對(duì)技術(shù)成長沒有任何好處叁征。團(tuán)隊(duì)管理和項(xiàng)目管理需要循序漸進(jìn)纳账,忌“拔苗助長”。
一定要當(dāng)老大嗎
有一些工程師的人生理想是做團(tuán)隊(duì)里的技術(shù)老大捺疼,這當(dāng)然是一個(gè)值得稱贊的理想疏虫。可是啤呼,如果整個(gè)團(tuán)隊(duì)技術(shù)能力一般卧秘,發(fā)展?jié)摿σ话悖闶羌夹g(shù)最強(qiáng)者官扣,這與其說是幸運(yùn)翅敌,不如說是悲哀。這種場(chǎng)景被稱之為“武大郎開店”醇锚。團(tuán)隊(duì)里的技術(shù)頂尖高手不是不能做坯临,但為了能夠持續(xù)成長恋昼,需要滿足如下幾個(gè)條件:
首先你得是行業(yè)里面的頂尖專家了——實(shí)在很難找到比你更強(qiáng)的人了液肌!
其次,你經(jīng)常需要承擔(dān)對(duì)你自己的能力有挑戰(zhàn)的任務(wù)老速,但同時(shí)你擁有一批聰明能干的隊(duì)友橘券。雖然你的技術(shù)能力最高旁舰,但是在你不熟悉的領(lǐng)域,你的隊(duì)友能夠進(jìn)行探索并擴(kuò)展整個(gè)團(tuán)隊(duì)的知識(shí)磺樱。
最后坊罢,你必須要敏而好學(xué)活孩,不恥下問。
否則起趾,加入更強(qiáng)的技術(shù)團(tuán)隊(duì)或許是更好的選擇训裆,最少不是什么值得驕傲的事情边琉。
平臺(tái)化的傳說
平臺(tái)化算得上是“高大上”的代名詞了族扰,很多工程師擠破頭就為了和“平臺(tái)化”沾點(diǎn)邊渔呵。然而和其他業(yè)務(wù)需求相比扩氢,平臺(tái)化需求并沒有本質(zhì)上的區(qū)別录豺。無論是平臺(tái)化需求還是普通業(yè)務(wù)需求,它的價(jià)值都來自于客戶價(jià)值示启。不同點(diǎn)如下:
很多平臺(tái)化需求的客戶來自于技術(shù)團(tuán)隊(duì)夫嗓,普通需求的客戶來自于業(yè)務(wù)方矩父。
產(chǎn)品經(jīng)理不同窍株。普通業(yè)務(wù)需求來自于產(chǎn)品經(jīng)理球订,平臺(tái)化需求的產(chǎn)品經(jīng)理可能就是工程師自己冒滩。長期被產(chǎn)品經(jīng)理“壓迫”的工程師們开睡,在平臺(tái)化上終于找到“翻身農(nóng)奴把歌唱”的感覺扶檐。
很多平臺(tái)化的關(guān)注點(diǎn)是接入能力和可擴(kuò)展性蘸秘,而普通業(yè)務(wù)的關(guān)注點(diǎn)更多。
歸根結(jié)底哮翘,平臺(tái)化就是一種普通需求冯痢。在實(shí)施平臺(tái)化之前,一定要避免下面兩個(gè)誤區(qū):
平臺(tái)化絕對(duì)不是諸如“統(tǒng)一”、“全面”之類形容詞的堆砌员凝。是否需要平臺(tái)化健霹,應(yīng)該綜合考慮:客戶數(shù)量,為客戶解決的問題瞳别,以及客戶價(jià)值是否值得平臺(tái)化的投入祟敛。
平臺(tái)化不是你做平臺(tái),讓客戶來服務(wù)你叼架。一些平臺(tái)化設(shè)計(jì)者的規(guī)劃設(shè)計(jì)里面,把大量的平臺(tái)接入工作扮饶、臟活累活交給了客戶甜无,然后自己專注于所謂“最高大上”的功能岂丘。恰恰相反奥帘,平臺(tái)化應(yīng)該是客戶什么都不做,所有的臟活累活都由平臺(tái)方來做已旧。本質(zhì)上講运褪,平臺(tái)化的價(jià)值來自于技術(shù)深度。真正體現(xiàn)技術(shù)深度的恰恰是設(shè)計(jì)者能夠很輕松的把所有的臟活累活搞定嗦枢。
所以平臺(tái)化的最佳實(shí)踐是:投入最少的資源文虏,解決最多的問題。平臺(tái)解決一切丸相,客戶坐享其成灭忠。
搞基礎(chǔ)技術(shù)就一定很牛嗎
經(jīng)常聽到同學(xué)們表達(dá)對(duì)基礎(chǔ)技術(shù)部同學(xué)的敬仰之情涕蜂,而對(duì)搞業(yè)務(wù)技術(shù)的同學(xué)表現(xiàn)出很輕視机隙,認(rèn)為存儲(chǔ)、消息隊(duì)列印颤、服務(wù)治理框架(比如美團(tuán)點(diǎn)評(píng)內(nèi)部使用的OCTO)、Hadoop等才能被稱為真正的技術(shù)际看。事實(shí)并非如此,更基礎(chǔ)的并不一定更高深赖欣。
比如下面這個(gè)流傳很久的段子:越高級(jí)的語言就越?jīng)]有技術(shù)含量社牲。但真是這樣嗎搏恤,就拿Java和C來說,這是完全不同的兩種語言息罗,所需要的技能完全不同迈喉。C或許跟操作系統(tǒng)更加接近一點(diǎn),和CPU嫉戚、內(nèi)存打交道的機(jī)會(huì)更多一點(diǎn)。但是為了用好Java澈圈,程序員在面向?qū)ο蟊蛱础⒃O(shè)計(jì)模式、框架技術(shù)方面必須要非常精通瞬女。Java工程師轉(zhuǎn)到C方向確實(shí)不容易窍帝,但作者也見過很多轉(zhuǎn)到Java語言的C工程師水土不服。
基礎(chǔ)技術(shù)和業(yè)務(wù)應(yīng)用技術(shù)必然會(huì)有不同的關(guān)注點(diǎn)诽偷,沒有高低之分坤学。之所以產(chǎn)生這種誤解,有兩個(gè)原因:
基礎(chǔ)技術(shù)相對(duì)成熟,有比較完整的體系雇盖,這給人一個(gè)高大上的感覺匾浪。業(yè)務(wù)應(yīng)用技術(shù)相對(duì)來說渐白,由于每個(gè)團(tuán)隊(duì)使用的不一樣,所以成熟度參差不齊,影響力沒有那么大杂穷。
基礎(chǔ)技術(shù)的門檻相對(duì)來說高一點(diǎn)蜗搔,考慮到影響面汰现,對(duì)可靠性嗅战、可用性等有比較高的最低要求。但是門檻高不代表技術(shù)含量高晓褪,另外成熟技術(shù)相對(duì)來說在創(chuàng)新方面會(huì)受到很大的約束。但是最先進(jìn)的技術(shù)都來自活躍的創(chuàng)新拔莱。
對(duì)比下來,業(yè)務(wù)技術(shù)和基礎(chǔ)技術(shù)各有千秋京痢。但真正的高手關(guān)注的是解決問題,所有的技術(shù)都是技能而已邑蒋。
可行性調(diào)研的那些坑
工作中開展可行性調(diào)研時(shí)有發(fā)生草描。做可行性調(diào)研要避免如下情況:
把可行性調(diào)研做成不可行性調(diào)研暑脆。這真的非常糟糕普监。不可行性的結(jié)論往往是:因?yàn)檫@樣或者那樣的原因缭受,所以不可行陆盘。
避免“老鼠給貓掛鈴鐺”式的高風(fēng)險(xiǎn)可行性方案邀泉。“天下大事必作于細(xì)”财岔,可行性調(diào)研一定要細(xì)致入微裁厅,避免粗枝大葉徙垫。
避免調(diào)研時(shí)間過長。如果發(fā)現(xiàn)調(diào)研進(jìn)展進(jìn)入到指數(shù)級(jí)復(fù)雜度放棒,也就是每前進(jìn)一步需要之前兩倍的時(shí)間投入姻报,就應(yīng)該果斷的停止調(diào)研。
可行性調(diào)研的結(jié)論應(yīng)該是收益與成本的折衷间螟,格式一般如下:
首先明確預(yù)期的結(jié)果吴旋,并按照高中低收益進(jìn)行分級(jí)。
闡述達(dá)成每種預(yù)期結(jié)果需要采取的措施和方案厢破。
給出實(shí)施各方案需要付出的成本邮府。
工程師天生不善溝通嗎
實(shí)際工作中,溝通所導(dǎo)致的問題層出不窮溉奕。工程師有不少是比較內(nèi)向的,總是被貼上“不善溝通”的標(biāo)簽忍啤。實(shí)際上加勤,溝通能力是工程師最重要的能力之一仙辟,良好的溝通是高效工作學(xué)習(xí)的基礎(chǔ),也是通過學(xué)習(xí)可以掌握的鳄梅。下面我按工程師的語言說說溝通方面的經(jīng)驗(yàn)叠国。
第一類常見的問題是溝通的可靠性。從可靠性的角度來講戴尸,溝通分為TCP模式和UDP模式粟焊。TCP模式的形象表述是:我知道你知道。UDP模式的形象表述是:希望你知道孙蒙。TCP模式當(dāng)然比較可靠项棠,不過成本比較高,UDP模式成本低挎峦,但是不可靠香追。在溝通可靠性方面,常見錯(cuò)誤有如下兩種:
經(jīng)常聽到的這樣的爭(zhēng)論坦胶。一方說:“我已經(jīng)告訴他了”透典,另一方說:“我不知道這個(gè)事情呀”。把UDP模式被當(dāng)作TCP模式來使用容易產(chǎn)生扯皮顿苇。
過度溝通峭咒。有些同學(xué)對(duì)溝通的可靠性產(chǎn)生了過度焦慮,不斷的重復(fù)討論已有結(jié)論問題纪岁。把TCP模式當(dāng)成UDP來使用凑队,效率會(huì)比較低。
第二類溝通問題是時(shí)效性問題蜂科。從時(shí)效性講顽决,溝通分為:同步模式和異步模式。同步溝通形象地說就是:你現(xiàn)在給我聽好了导匣。異步溝通的形象表述是:記得給我做好了才菠。在溝通時(shí)效性方面,有如下兩種常見錯(cuò)誤:
已經(jīng)出現(xiàn)線上事故贡定,緊急萬分赋访。大家你一言,我一語缓待,感覺事故可能和某幾個(gè)人有關(guān)蚓耽,但是也不能完全確定,所以沒有通知相關(guān)人員旋炒。最終步悠,一個(gè)普通的事故變成了嚴(yán)重事故。對(duì)于緊急的事情瘫镇,必須要同步溝通鼎兽。
半夜三點(diǎn)你正在熟睡答姥,或者周末正在逛街,接到一個(gè)電話:“現(xiàn)在有個(gè)需求谚咬,能否立刻幫忙做完鹦付。”這會(huì)非常令人郁悶择卦,因?yàn)槟遣⒉皇蔷o急的事情敲长。不是所有的需求都需要立刻解決。
有效溝通的一個(gè)重要原則是提前溝通秉继。溝通本質(zhì)是信息交流和處理祈噪,可以把被溝通對(duì)象形象地比喻成串行信息處理的CPU。提前溝通秕噪,意味著將處理請(qǐng)求盡早放入處理隊(duì)列里面钳降。下面的例子讓很多工程師深惡痛絕:一個(gè)需求策劃了1個(gè)月,產(chǎn)品設(shè)計(jì)了2周腌巾。當(dāng)開發(fā)工程師第一次聽說該需求的時(shí)候遂填,發(fā)現(xiàn)開發(fā)的時(shí)間是2天。工程師據(jù)理力爭(zhēng)澈蝙,加班加點(diǎn)1周搞定吓坚。最后的結(jié)論是工程師非常不給力,不配合灯荧。就像工程師討厭類似需求一樣礁击。要協(xié)調(diào)一個(gè)大項(xiàng)目,希望獲得別人的配合逗载,也需要盡早溝通哆窿。
有效溝通的另外一個(gè)重點(diǎn)是“不要跑題”。很多看起來很接近的問題厉斟,本質(zhì)上是完全不同的問題挚躯。比如:一個(gè)會(huì)議的主題是“如何實(shí)施一個(gè)方案”,有人卻可能提出“是否應(yīng)該實(shí)施該方案”擦秽÷肜螅“如何實(shí)施”和“是否應(yīng)該實(shí)施”是完全不同的兩個(gè)問題,很多看起來相關(guān)的問題實(shí)際上跑題很遠(yuǎn)感挥∷踅粒“跑題”是導(dǎo)致無效溝通的重要原因。
良好溝通的奧秘在于能掌握TCP模式和UDP模式精髓触幼,正確判斷問題的緊急性硼瓣,盡量提前溝通,避免跑題置谦。
帶人之道
有些初為導(dǎo)師的工程師由于擔(dān)心畢業(yè)生的能力太弱巨双,安排任務(wù)時(shí)候諄諄教誨噪猾,最后感覺還是有所顧慮,干脆自己寫代碼筑累。同樣的事情發(fā)生在很多剛剛管理小團(tuán)隊(duì)的工程師身上。最終的結(jié)果他們:寫完所有的代碼丝蹭,讓下屬無代碼可寫慢宗。“ 事必躬親”當(dāng)然非常糟糕奔穿,最終的往往是團(tuán)隊(duì)的整體績效不高镜沽,團(tuán)隊(duì)成員的成長很慢,而自己卻很累贱田。
古人說:“用人不疑缅茉,疑人不用∧写荩”這句話并非“放之四海而皆準(zhǔn)”蔬墩。在古代,受限于通信技術(shù)耗拓,反饋延遲顯著拇颅,而且信息在傳遞過程中有大量噪音,變形嚴(yán)重乔询。在這種情況下樟插,如果根據(jù)短期內(nèi)收集的少量變形的信息做快速?zèng)Q斷,容易陷于草率竿刁。在公司里黄锤,這句話用于選人環(huán)節(jié)更為恰當(dāng),應(yīng)該改為:錄用不疑食拜,疑人不錄鸵熟。
考慮到招聘成本,就算是在錄用層面监婶,有時(shí)候也無法做到旅赢。作為一個(gè)小團(tuán)隊(duì)的管理者,能夠快速準(zhǔn)確的獲取團(tuán)隊(duì)成員的各種反饋信息惑惶,完全不需要“用人不疑煮盼,疑人不用”。用人的真正理論基礎(chǔ)來自于“探索和利用”(Exploration and Exploitation )带污。不能因?yàn)橄聦倌茏鍪裁淳椭蛔屗鍪裁唇┛兀荒芤驗(yàn)橄聦僖淮问【筒唤o機(jī)會(huì)。
根據(jù)經(jīng)典的“探索和利用”(Exploration and Exploitation )理論鱼冀,良好的用人方式應(yīng)該如下:
首先選擇相信报破,在面臨失敗后悠就,收縮信任度。
查找失敗的原因充易,提供改進(jìn)意見梗脾,提升下屬的能力。
總是給下屬機(jī)會(huì)盹靴,在恰當(dāng)?shù)臅r(shí)機(jī)給下屬更高的挑戰(zhàn)炸茧。總之稿静,蒼天大樹來自一顆小種子梭冠,要相信成長的力量。
效率改备、效率控漠、效率
經(jīng)常看到有些同學(xué)給自己的績效評(píng)分是100分——滿分悬钳,原因是在過去一段時(shí)間太辛苦了盐捷,但最終的績效卻一般般。天道酬勤不錯(cuò)他去,但是天道更酬巧毙驯。工程師們都學(xué)過數(shù)據(jù)結(jié)構(gòu),不同算法的時(shí)間復(fù)雜度的差距灾测,僅僅通過更長的工作時(shí)間是難以彌補(bǔ)的爆价。為了提升工作學(xué)習(xí)效率,我們需要注意以下幾點(diǎn):
主要關(guān)注效率提升媳搪。很多時(shí)候铭段,與效率提升所帶來的收益相比,延長時(shí)間所帶來的成果往往不值得一提秦爆。
要有清晰的結(jié)果導(dǎo)向思維序愚。功勞和苦勞不是一回事。
做正確的事情等限,而不僅僅正確地做事情爸吮。這是一個(gè)被不斷提起的話題,但是錯(cuò)誤每天都上演望门。為了在規(guī)定的時(shí)間內(nèi)完成一個(gè)大項(xiàng)目形娇,總是要有所取舍。如果沒有重點(diǎn)筹误,均勻發(fā)力桐早,容易事倍功半。如果“南轅北轍”,更是可悲可嘆哄酝。
架構(gòu)師能力模型
前面我們已經(jīng)講完了原則和一些困惑友存,那么工程師到底應(yīng)該怎么提升自己呢?
成為優(yōu)秀的架構(gòu)師是大部分初中級(jí)工程師的階段性目標(biāo)陶衅。優(yōu)秀的架構(gòu)師往往具備七種核心能力:編程能力屡立、調(diào)試能力、編譯部署能力万哪、性能優(yōu)化能力侠驯、業(yè)務(wù)架構(gòu)能力、在線運(yùn)維能力奕巍、項(xiàng)目管理能力和規(guī)劃能力。
這幾種能力之間的關(guān)系大概如下圖儒士。編程能力的止、調(diào)試能力和編譯部署能力屬于最基礎(chǔ)的能力。不能精通掌握這三種能力着撩,很難在性能優(yōu)化能力和業(yè)務(wù)架構(gòu)能力方面有所成就诅福。具備了一定的性能優(yōu)化能力和業(yè)務(wù)架構(gòu)能力之后,才能在線運(yùn)維能力和項(xiàng)目管理能力方面表現(xiàn)優(yōu)越拖叙。團(tuán)隊(duì)管理能力是最高能力氓润,它對(duì)項(xiàng)目管理能力的依賴度更大。
編程能力
對(duì)工程師而言薯鳍,編程是最基礎(chǔ)的能力咖气,必備技能。其本質(zhì)是一個(gè)翻譯能力挖滤,將業(yè)務(wù)需求翻譯成機(jī)器能懂的語言崩溪。
提升編程能力的書籍有很多。精通面向?qū)ο蠛驮O(shè)計(jì)模式是高效編程的基礎(chǔ)斩松。初級(jí)工程師應(yīng)該多寫代碼伶唯、多看代碼。找高手做Code Review惧盹,也是提升編程水平的捷徑乳幸。
調(diào)試能力
程序代碼是系統(tǒng)的靜態(tài)形式,調(diào)試的目的是通過查看程序的運(yùn)行時(shí)狀態(tài)來驗(yàn)證和優(yōu)化系統(tǒng)钧椰。本質(zhì)上講粹断,工程師們通過不斷調(diào)試可以持續(xù)強(qiáng)化其通過靜態(tài)代碼去預(yù)測(cè)運(yùn)行狀態(tài)的能力。所以調(diào)試能力也是工程師編程能力提升的關(guān)鍵手段演侯。很早之前有個(gè)傳說:“調(diào)試能力有多強(qiáng)姿染,編程能力就有多強(qiáng)。”不過現(xiàn)在很多編輯器的功能很強(qiáng)大悬赏,調(diào)試能力的門檻已經(jīng)大大降低狡汉。
調(diào)試能力是項(xiàng)目能否按時(shí)、高質(zhì)量提交的關(guān)鍵闽颇。即使一個(gè)稍具復(fù)雜度的項(xiàng)目盾戴,大部分工程師也無法一次性準(zhǔn)確無誤的完成。大項(xiàng)目都是通過不斷地調(diào)試進(jìn)行優(yōu)化和糾錯(cuò)的兵多。所以調(diào)試能力是不可或缺的能力尖啡。
多寫程序,解決Bug剩膘,多請(qǐng)教高手是提升調(diào)試能力的重要手段衅斩。
編譯部署能力
編譯并在線上部署運(yùn)行程序是系統(tǒng)上線的最后一個(gè)環(huán)節(jié)。隨著SOA架構(gòu)的普及以及業(yè)務(wù)復(fù)雜度的增加怠褐,大部分系統(tǒng)只是一個(gè)完整業(yè)務(wù)的一個(gè)環(huán)節(jié)畏梆,因此,本地編譯和運(yùn)行并不能完全模擬系統(tǒng)在線運(yùn)行奈懒。為了快速驗(yàn)證所編寫程序的正確性奠涌,編譯并在線上部署就成了必要環(huán)節(jié)。所以編譯部署能力是一個(gè)必備技能磷杏。
讓盤根錯(cuò)節(jié)的眾多子系統(tǒng)運(yùn)行起來是個(gè)不小的挑戰(zhàn)溜畅。得益于SOA架構(gòu)的普及以及大量編譯、部署工具的發(fā)展极祸,編譯部署的門檻已經(jīng)大大降低慈格。基于應(yīng)用層進(jìn)行開發(fā)的公司贿肩,已經(jīng)很少有“編譯工程師”的角色了峦椰。但是對(duì)于初級(jí)工程師而言,編譯部署仍然不是一個(gè)輕松的事情汰规。
性能優(yōu)化能力
衡量一個(gè)系統(tǒng)成功的一個(gè)重要指標(biāo)是使用量汤功。隨著使用量的增加和業(yè)務(wù)復(fù)雜度的增加,大部分系統(tǒng)最終都會(huì)碰到性能問題溜哮。性能優(yōu)化能力是一個(gè)綜合能力滔金。因?yàn)椋?/p>
影響系統(tǒng)性能的因素眾多,包括:數(shù)據(jù)結(jié)構(gòu)茂嗓、操作系統(tǒng)餐茵、虛擬機(jī)、CPU述吸、存儲(chǔ)忿族、網(wǎng)絡(luò)等锣笨。為了對(duì)系統(tǒng)性能進(jìn)行調(diào)優(yōu),架構(gòu)師需要掌握所有相關(guān)的技術(shù)道批。
精通性能優(yōu)化意味著深刻理解可用性错英、可靠性、一致性隆豹、可維護(hù)性椭岩、可擴(kuò)展性等的本質(zhì)。
性能優(yōu)化與業(yè)務(wù)強(qiáng)耦合璃赡,最終所采取的手段是往往折衷的結(jié)果判哥。所以,性能優(yōu)化要深諳妥協(xié)的藝術(shù)碉考。
可以說塌计,性能優(yōu)化能力是工程師們成長過程中各種技能開始融會(huì)貫通的一個(gè)標(biāo)志。這方面可以參考之前的博客文章“常見性能優(yōu)化策略的總結(jié)”侯谁。市場(chǎng)上還有很多與性能優(yōu)化相關(guān)的書籍夺荒,大家可以參考。多多閱讀開源框架中關(guān)于性能優(yōu)化方面的文檔和代碼也不失為好的提升手段良蒸。動(dòng)手解決線上性能問題也是提升性能優(yōu)化能力的關(guān)鍵。如果有機(jī)會(huì)伍玖,跟著高手學(xué)習(xí)嫩痰,分析性能優(yōu)化解決方案案例(我們技術(shù)博客之前也發(fā)表了很多這方面的文章),也是快速提升性能優(yōu)化能力的手段窍箍。
在線運(yùn)維能力
如果說性能優(yōu)化能力體現(xiàn)的是架構(gòu)師的靜態(tài)思考能力串纺,在線運(yùn)維能力考驗(yàn)的就是動(dòng)態(tài)反應(yīng)能力。殘酷的現(xiàn)實(shí)是椰棘,無論程序多么完美纺棺,Bug永遠(yuǎn)存在。與此同時(shí)邪狞,職位越高祷蝌、責(zé)任越大,很多架構(gòu)師需要負(fù)責(zé)非常重要的在線系統(tǒng)帆卓。對(duì)于線上故障巨朦,如果不能提前預(yù)防以及快速解決,損失可能不堪設(shè)想剑令,所以在線運(yùn)維能力是優(yōu)秀架構(gòu)師的必備技能糊啡。
為了對(duì)線上故障進(jìn)行快速處理,標(biāo)準(zhǔn)化的監(jiān)控吁津、上報(bào)棚蓄、升級(jí),以及基本應(yīng)對(duì)機(jī)制當(dāng)然很重要。通過所觀察到的現(xiàn)象梭依,快速定位稍算、緩解以及解決相關(guān)癥狀也相當(dāng)關(guān)鍵。這要求架構(gòu)師對(duì)故障系統(tǒng)的業(yè)務(wù)睛挚、技術(shù)具備通盤解讀能力邪蛔。解決線上故障的架構(gòu)師就好比一個(gè)在參加比賽F1的車手。賽車手必須要了解自身扎狱、賽車侧到、對(duì)手、同伴淤击、天氣匠抗、場(chǎng)地等所有因素,快速?zèng)Q策污抬,不斷調(diào)整汞贸。架構(gòu)師必須要了解所有技術(shù)細(xì)節(jié)、業(yè)務(wù)細(xì)節(jié)印机、處理規(guī)范矢腻、同伴等眾多因素,快速?zèng)Q斷射赛,迅速調(diào)整多柑。
在線運(yùn)維本質(zhì)上是一個(gè)強(qiáng)化學(xué)習(xí)的過程。很多能力都可以通過看書楣责、查資料來完成竣灌,但在線運(yùn)維能力往往需要大量的實(shí)踐來提升。
業(yè)務(wù)架構(gòu)能力
工程師抱怨產(chǎn)品經(jīng)理的故事屢見不鮮秆麸,抱怨最多的主要原因來自于需求的頻繁變更初嘹。需求變更主要有兩個(gè)來源:第一個(gè)原因是市場(chǎng)改變或戰(zhàn)略調(diào)整,第二個(gè)原因是偽需求沮趣。對(duì)于第一個(gè)原因屯烦,無論是工程師還是產(chǎn)品經(jīng)理,都只能無奈的接受兔毒。優(yōu)秀的架構(gòu)師應(yīng)該具備減少第二種原因所導(dǎo)致的需求變更的概率漫贞。
偽需求的產(chǎn)生有兩個(gè)原因:
第一個(gè)原因是需求傳遞變形。從信息論的角度來講育叁,任何溝通都是一個(gè)編碼和解碼的過程迅脐。典型的需求從需求方到產(chǎn)品經(jīng)理,最終到開發(fā)工程師豪嗽,最少需要經(jīng)歷三次編碼和解碼過程谴蔑。而信息的每一次傳遞都存在一些損失并帶來一些噪音豌骏,這導(dǎo)致有些時(shí)候開發(fā)出來的產(chǎn)品完全對(duì)不上需求。此外隐锭,需求方和產(chǎn)品經(jīng)理在需求可行性窃躲、系統(tǒng)可靠性,開發(fā)成本控制方面的把控比較弱钦睡,也會(huì)導(dǎo)致需求變形蒂窒。
第二個(gè)原因就是需求方完全沒有想好自己的需求。
優(yōu)秀的架構(gòu)師應(yīng)該具備辨別真?zhèn)涡枨蟮哪芰衽?yīng)該花時(shí)間去了解客戶的真實(shí)業(yè)務(wù)場(chǎng)景洒琢,具備較強(qiáng)的業(yè)務(wù)抽象能力,洞悉客戶的真實(shí)需求褐桌。系統(tǒng)的真正實(shí)施方是工程師衰抑,在明確客戶真實(shí)需求后,高明的架構(gòu)師應(yīng)該具備準(zhǔn)確判斷項(xiàng)目對(duì)可行性荧嵌、可靠性呛踊、可用性等方面的要求,并能具備成本意識(shí)啦撮。最后谭网,由于需求與在線系統(tǒng)的緊耦合關(guān)系,掌握在線系統(tǒng)的各種細(xì)節(jié)也是成功的業(yè)務(wù)架構(gòu)的關(guān)鍵赃春。隨著級(jí)別的提升蜻底,工程師所面對(duì)的需求會(huì)越來越抽象。承接抽象需求聘鳞,提供抽象架構(gòu)是架構(gòu)師走向卓越的必經(jīng)之途。
市場(chǎng)上有一些關(guān)于如何成為架構(gòu)師的書要拂,大家可以參考抠璃。但是架構(gòu)能力的提升,實(shí)踐可能是更重要的方式脱惰。業(yè)務(wù)架構(gòu)師應(yīng)該關(guān)注客戶的痛點(diǎn)而不是PRD文檔搏嗡,應(yīng)該深入關(guān)注真實(shí)業(yè)務(wù)。掌握現(xiàn)存系統(tǒng)的大量技術(shù)和業(yè)務(wù)細(xì)節(jié)也是業(yè)務(wù)架構(gòu)師的必備知識(shí)拉一。
項(xiàng)目管理能力
作為工業(yè)時(shí)代的產(chǎn)物采盒,分工合作融入在互聯(lián)網(wǎng)項(xiàng)目基因里面。架構(gòu)師也需要負(fù)責(zé)幾個(gè)重大項(xiàng)目才能給自己正名蔚润。以架構(gòu)師角色去管理項(xiàng)目磅氨,業(yè)務(wù)架構(gòu)能力當(dāng)然是必備技能。此外嫡纠,人員管理和成本控制意識(shí)也非常重要烦租。
項(xiàng)目管理還意味著要有一個(gè)大心臟延赌。重大項(xiàng)目涉及技術(shù)攻關(guān)、人員變動(dòng)叉橱、需求更改等眾多可變因素挫以。面臨各種變化,還要在確保目標(biāo)順利達(dá)成窃祝,需要較強(qiáng)的抗壓能力掐松。
人員管理需要注意的方面包括:知人善用,優(yōu)化關(guān)系粪小,簡化溝通大磺,堅(jiān)持真理。
知人善用意味著架構(gòu)師需要了解每個(gè)參與者的硬技能和軟素質(zhì)糕再。同時(shí)量没,關(guān)注團(tuán)隊(duì)成員在項(xiàng)目過程中的表現(xiàn),按能分配突想。
優(yōu)化關(guān)系意味著管理團(tuán)隊(duì)的情緒殴蹄,畢竟項(xiàng)目的核心是團(tuán)隊(duì),有士氣的團(tuán)隊(duì)才能高效達(dá)成目標(biāo)猾担。
簡化溝通意味著快速?zèng)Q策袭灯,該妥協(xié)的時(shí)候妥協(xié),權(quán)責(zé)分明绑嘹。
堅(jiān)持真理意味著頂住壓力稽荧,在原則性問題上絕不退步。
成本控制意味著對(duì)項(xiàng)目進(jìn)行精細(xì)化管理工腋,需要遵循如下幾個(gè)原則:
以終為始姨丈、確定里程碑。為了達(dá)成目標(biāo)擅腰,所有的計(jì)劃必須以終為始來制定蟋恬。將大項(xiàng)目分解成幾個(gè)小階段,控制每個(gè)階段的里程碑可以大大降低項(xiàng)目失敗的風(fēng)險(xiǎn)趁冈。
把控關(guān)鍵路徑和關(guān)鍵項(xiàng)目歼争。按照關(guān)鍵路徑管理理論(CPM)的要求,架構(gòu)師需要確定每個(gè)子項(xiàng)目的關(guān)鍵路徑渗勘,確定其最早和最晚啟動(dòng)時(shí)間沐绒。同時(shí),架構(gòu)師需要關(guān)注那些可能會(huì)導(dǎo)致項(xiàng)目整體延期的關(guān)鍵節(jié)點(diǎn)旺坠,并集中力量攻破乔遮。
掌控團(tuán)隊(duì)成員的張弛度。大項(xiàng)目持續(xù)時(shí)間會(huì)比較長取刃,也包含不同工種申眼。項(xiàng)目實(shí)施是一個(gè)不斷變化的動(dòng)態(tài)過程瞒津,在這個(gè)過程中不是整個(gè)周期都很緊張,不是所有的工種都一樣忙括尸。優(yōu)秀的架構(gòu)師必須要具備精細(xì)閱讀整體項(xiàng)目以及快速反應(yīng)和實(shí)時(shí)調(diào)整的能力巷蚪。這不僅僅可以大大降低項(xiàng)目成本,還可以提高產(chǎn)出質(zhì)量和團(tuán)隊(duì)滿意度濒翻∑ò兀總體來說,“前緊后松”是項(xiàng)目管理的一個(gè)重要原則有送。
項(xiàng)目管理方面的書籍很多淌喻。但是,提高業(yè)務(wù)架構(gòu)能力同樣重要雀摘。積極參與大項(xiàng)目并觀察別人管理項(xiàng)目的方式也是非常重要的提升手段裸删。
團(tuán)隊(duì)管理能力
不想做CTO的工程師不是一個(gè)好的架構(gòu)師。走向技術(shù)管理應(yīng)該是工程師的一個(gè)主流職業(yè)規(guī)劃阵赠。團(tuán)隊(duì)管理的一個(gè)核心能力就是規(guī)劃能力涯塔,這包括項(xiàng)目規(guī)劃和人員規(guī)劃。良好的規(guī)劃需要遵循如下原則:
規(guī)劃是利益的博弈清蚀。良好的規(guī)劃上面對(duì)得起老板匕荸,中間對(duì)得起自己,下面對(duì)得起團(tuán)隊(duì)枷邪。在三者利益者尋找平衡點(diǎn)榛搔,實(shí)現(xiàn)多方共贏考驗(yàn)著管理者的智慧和精細(xì)拿捏的能力。
任何規(guī)劃都比沒有規(guī)劃好东揣。沒有規(guī)劃的團(tuán)隊(duì)就是沒頭的蒼蠅践惑,不符合所有人的利益。
規(guī)劃不是本本主義童本。市場(chǎng)在變,團(tuán)隊(duì)在變脸候,規(guī)劃也不應(yīng)該一成不變。
客戶至上的是項(xiàng)目規(guī)劃的出發(fā)點(diǎn)绑蔫。
就人員規(guī)劃而言运沦,規(guī)劃需要考量團(tuán)隊(duì)成員的能力、績效配深、成長等多方面的因素携添。
市場(chǎng)上有很多規(guī)劃管理方面的書籍,值得閱讀篓叶。最優(yōu)化理論雖然是技術(shù)書籍烈掠,但它是規(guī)劃的理論基礎(chǔ)羞秤,所以不妨多看看翻閱一下。從自我規(guī)劃開始左敌,多多學(xué)習(xí)別人的規(guī)劃也是規(guī)劃能力提升的重要手段瘾蛋。