OH, NO !
架構(gòu)師作為技術(shù)領(lǐng)域的頂尖戰(zhàn)力,上能妙碼生花(代碼),下能丹青栩栩(繪圖),是未來架構(gòu)路線的設(shè)計師,是各項選型規(guī)范的話事人和推動人,是應(yīng)對疑難雜癥啃硬骨頭的119隊員,更是科技創(chuàng)新的開路先鋒...瞧,架構(gòu)師可以做如此多的事情,面對不同技術(shù)水平的團(tuán)隊也無需慌亂,有所側(cè)重即可。
市面上關(guān)于架構(gòu)師技能樹如何點亮的分享已多如牛毛,咱反其道而行之,寫寫架構(gòu)師容易踩的坑,大部分是我自己踩過的坑,所謂“以人為鑒,可以明得失”。另外本文觀點有前提,即文中架構(gòu)師是指有“真材實料”的非水貨。即便這樣,這群鋼鐵直男/直女仍難免犯一些忌諱卻不自知,故而有此一文。
技能圖譜
后端架構(gòu)師技能圖譜
https://github.com/xingshaocheng/architect-awesome
IT界除了那兩個著名矛盾:研發(fā)vs產(chǎn)品經(jīng)理,研發(fā)vs測試,還有個隱晦的矛盾就是 架構(gòu)師 vs 其他所有人,只是只有IT人自己才懂罷了。架構(gòu)師與研發(fā)、測試、產(chǎn)品、業(yè)務(wù)、運維、PMO都可能起沖突,因為在我看來,架構(gòu)師既是“規(guī)則制定者”(老板),又是“規(guī)則受益者”(投資人),更是“規(guī)則參與者”(員工),三角兒合一自己跟自己玩就好了,還管你們其他人做甚?你們跟上就好。這,就是矛盾源泉。希望本文的這些小心可以最大程度化解這些矛盾吧。
01
忌降維打擊
以架構(gòu)師的專業(yè)底蘊,在團(tuán)隊交流協(xié)作時極易流露出降維打擊姿態(tài),特別在團(tuán)隊的專業(yè)能力差別巨大時尤甚。表現(xiàn)在言語上如:
“這N年前的過時技術(shù)/設(shè)計了”
“你沒理解這個技術(shù)的底層原理”
“你們這個抽象考慮的過于簡單了,后面架構(gòu)重新出個標(biāo)準(zhǔn)化組件,你們用就好”
“這種實現(xiàn)嚴(yán)重違背了XX原理/定理/原則,建議重構(gòu)”
大家感受到了沒?擁有核武的架構(gòu)師 與 手端AK47的程序員 很多時候本就不在一個水平線上,這是客觀事實,但這不是架構(gòu)師可以發(fā)動核打擊的理由。很多時候,架構(gòu)師的一兩句沒有同理心的表述會瞬間拉遠(yuǎn)與團(tuán)隊的距離,成為脫群孤雁。當(dāng)然也不是說程序員都這么敏感和脆弱,但是架構(gòu)師似乎特別擅長激化這種不同維度之間的矛盾。
偶有架構(gòu)師跟我吐槽,某些團(tuán)隊水平真的太糟糕了,完全帶不動啊。誠然有些程序員的素質(zhì)確實讓人不敢恭維,但當(dāng)一個架構(gòu)師流露出自己超出團(tuán)隊水平一大截,且團(tuán)隊無法有效執(zhí)行自己的技術(shù)意圖時,架構(gòu)師就會不自覺的輸出“降維“攻擊。一個優(yōu)秀的團(tuán)隊可以自驅(qū)動,可能壓根不需要你這個架構(gòu)師,一個普通甚至不及格的團(tuán)隊才能如實體現(xiàn)架構(gòu)師的領(lǐng)導(dǎo)能力。這時架構(gòu)師要做的不是“降維”攻擊,而是“降維”思考,請將架構(gòu)師“高高在上”的視角先拉到團(tuán)隊的平均線上,以此循序漸進(jìn)增加難度和目標(biāo),量體裁衣獲得點滴進(jìn)步至少是進(jìn)步,拔苗助長只會適得其反。
一來大家誰不是從hello world開始的,聞道有先后罷了,真不至于那么高傲;二來架構(gòu)師的權(quán)威力和公信力不是也不能靠降維打擊塑造起來的,而是靠每一次正確的決策、每一個正確的方案等等累積出來的。三來程序員里即便不是臥虎藏龍至少是各有所長吧,架構(gòu)師動不動翻車被打臉也不算什么稀罕事,只是好不容易累積的那點權(quán)威分分鐘被揮霍掉。
02
忌脫離業(yè)務(wù)
經(jīng)過這么多年市場的摧殘,應(yīng)該鮮有人還會挑戰(zhàn)這個結(jié)論吧。妄圖以技術(shù)改變世界的,不出意外都被業(yè)務(wù)方爸爸給教育得妥妥帖帖。任何企業(yè)的終極使命都是活下去,要活就需要銀子,要銀子就得有盈利預(yù)期的商業(yè)模式。不客氣點說,市面上那些逢必談技術(shù)驅(qū)動的創(chuàng)業(yè)公司,大多是還沒找到自己的盈利點的。因為真正的技術(shù)驅(qū)動,在我看來,從來都是為商業(yè)服務(wù)的,還真的天真到以為是為了改變世界啊?
架構(gòu)師更無法超然于業(yè)務(wù)之外。如果你的設(shè)計、你的底層邏輯不是為業(yè)務(wù)預(yù)期籌劃的話,不止業(yè)務(wù)方不滿意,包括實施的研發(fā)團(tuán)隊也會不堪重負(fù)。很簡單,當(dāng)技術(shù)方向與業(yè)務(wù)方向不一致有夾角的話,時間越久實施團(tuán)隊的負(fù)擔(dān)會越重,實施成本和工期也會越高,到最后必然是技術(shù)的妥協(xié)。當(dāng)技術(shù)不能帶來收益,什么情懷什么情結(jié)都是唬人的泡泡,一戳就破。
再說一個觀點,架構(gòu)師其實也是個服務(wù)行業(yè),為業(yè)務(wù)團(tuán)隊更快更好的交付價值而努力,為組織將價值最大化而努力。所以架構(gòu)師的目標(biāo)和業(yè)務(wù)團(tuán)隊的目標(biāo)當(dāng)然應(yīng)該是一致的,深入業(yè)務(wù)一線、掌握業(yè)務(wù)脈絡(luò)、預(yù)測市場趨勢都應(yīng)該是架構(gòu)師需要涉獵的,不然選擇同步還是異步,用戶ID選擇INT還是BIGINT還是提前規(guī)劃為分庫分表的分段式設(shè)計,選擇線性一致性還是最終一致性...從來都不是拍腦袋選的,而是基于用戶和市場做出的當(dāng)下最合理準(zhǔn)確的判斷。可以粗糙落地但必須未雨綢繆,可以未雨綢繆但不可過度謀劃。
03
忌不計成本
自古以降,IT都被視作成本中心,翻譯下就是,IT一個花錢部門,掙錢?那是銷售和市場的事。誠然,隨著國內(nèi)最近幾年互聯(lián)網(wǎng)的大浪淘沙,對IT的投資大部分老板不太會吝嗇了,就沖著程序員這種悶頭干的傻勁,肯定是物超所值。但I(xiàn)T的這種“悶頭干”值不值,必須有個前提就是方向?qū)Σ粚Γ軜?gòu)師就是指方向的關(guān)鍵人,如果指錯方向的話,血本無歸真不是開玩笑。簡單一句話就是,身為成本中心的IT最應(yīng)該有成本的覺悟。
讓人哭笑不得的是,程序員群體里有成本意識的人少之又少,最有成本意識的可能是CTO或者人力外包的項目經(jīng)理了吧。架構(gòu)師作為追逐技術(shù)領(lǐng)先的扛把子,一旦沾上了追求完美的“惡習(xí)”,就會浮想聯(lián)翩,這功能得上那功能也不能缺,“過度”追求超出當(dāng)前業(yè)務(wù)規(guī)模和需求的技術(shù)投入。像不像雙11的你,提前消費屯了一堆你一年可能也用不完的東西,等一年過去了,新的雙11來了,有了更想買的東西,原來屯的可能也過期了,技術(shù)同樣如此,同樣有保鮮期。所以,架構(gòu)師們請捂緊錢包(成本),理性架構(gòu)。
有時候未雨綢繆的鋪墊性設(shè)計就好,不用全部實現(xiàn)到位。比如目前的業(yè)務(wù)并發(fā)量壓根用不到限流,但是你可以先有一個網(wǎng)關(guān)應(yīng)用,或者請求攔截組件,能夠隨時注入這個限流功能,并且對業(yè)務(wù)系統(tǒng)還是無感的,這就是優(yōu)秀的鋪墊性設(shè)計,點到即止。
在追求完美的這條不歸路上,似乎架構(gòu)師都變成了處女座,世界不是完美的,一直這么運轉(zhuǎn)著,系統(tǒng)更加不是完美的,也這么運行著。因為任何好或壞的事物都會找尋那個平衡點,讓其自身存在著。比如自行車就是個極端不平衡的交通工具,而我們不管怎么歪歪扭扭的騎著它就是不會摔,因為我們找到了人體與自行車之間的美妙平衡。所以,架構(gòu)師追求的從來就不應(yīng)該是完美的“方案”,而是完美的“平衡”:技術(shù)成本 vs 技術(shù)收益,系統(tǒng)化的有所取舍。
04
忌重復(fù)勞動
程序員,作為著名的腦力工作者,八成的時間卻是在重復(fù)勞動。所謂學(xué)會增刪改查,走遍IT都不怕。但是架構(gòu)師卻不能在此列,架構(gòu)師確實需要有大量的經(jīng)驗打底,但這個底可不是用來做重復(fù)的設(shè)計或方案的,是用來以此為基礎(chǔ)做出更多的沉淀、抽象、復(fù)用、創(chuàng)新、升級。
在我看來,架構(gòu)師證明自己有存在價值的重要依據(jù)就是,自己和所屬團(tuán)隊是否長期在從事重復(fù)勞動。架構(gòu)師自己在重復(fù)勞動,說明缺少了創(chuàng)造力;團(tuán)隊在重復(fù)勞動,說明架構(gòu)師沒有為團(tuán)隊起到領(lǐng)導(dǎo)作用。架構(gòu)師最應(yīng)該是那個拿著榔頭滿世界找釘子的人,重復(fù)勞動不一定就是壞的但一定是有優(yōu)化空間的,身為架構(gòu)師要是對這顆釘子視而不見,讓組織陷入重復(fù)勞動的泥潭中,架構(gòu)生涯堪憂。當(dāng)然還是要強(qiáng)調(diào)一下,滿世界找釘子敲也要有個度,因為我們的上一忌就說的是成本,一個組織不可能支持你漫天開火。
一句話,當(dāng)你看到了很多釘子的時候務(wù)必按耐住,找到最突出的幾顆敲;當(dāng)你突然看不到什么明顯釘子的時候,重復(fù)勞動這顆釘子一直就在那兒等著你。
05
忌權(quán)威效應(yīng)
權(quán)威的來源多種多樣,可以是傳統(tǒng)型的權(quán)力、宗教、等級,也可以是魅力型的才能、品格、信仰,更可能是理法型的律法、服從。架構(gòu)師的權(quán)威當(dāng)然更多的是來自于專業(yè)性才能,前文也或多或少提到了,架構(gòu)師工作可以有效推行更多靠的是權(quán)威。當(dāng)技術(shù)服你,業(yè)務(wù)認(rèn)你的時候你的架構(gòu)決策當(dāng)然會推行的比較順利。而當(dāng)權(quán)威因為錯誤的決策或者無法帶領(lǐng)團(tuán)隊攻克難關(guān)、突破瓶頸,而不斷被損耗之后,你以后的工作可能會舉步維艱,隨之而來的是被挑戰(zhàn)、被質(zhì)疑甚至被無視。
我沒能耐勸說你不必執(zhí)著,放下再爭取回來就是了,這可不是一件輕巧的事情,需要內(nèi)功修煉。但換個角度說,再牛的人也有犯錯或者被吐槽的時候,我等凡人也就沒必要硬要偽裝完人了。
See
JAVA語言的 TOP 10 的糟糕設(shè)計
https://www.intertech.com/Blog/top-10-nasty-java-bugs/
JDK里最糟糕的類討論
https://www.reddit.com/r/java/comments/5u6wwz/whats_the_worst_java_class_in_the_jdk/
前面說的是架構(gòu)師要慎重應(yīng)對權(quán)威的損耗,而權(quán)威這把雙刃劍還有鋒利的另一面。當(dāng)架構(gòu)師躺在權(quán)威的溫床上,除了滋養(yǎng)第一忌提到的降維打擊姿態(tài)之外,還會抗拒團(tuán)隊內(nèi)外的挑戰(zhàn),嚴(yán)重點的,一些正常建議和討論都會被視作對于權(quán)威的挑釁,真到這一步就有損整個組織的進(jìn)步了,所謂權(quán)威的陰影就是如此,整個團(tuán)隊都在陰影里而不敢走出,如履薄冰。
名人名言
因為我對權(quán)威的輕蔑,所以命運懲罰我,使我自己竟也成了權(quán)威。
To punish me for my contempt for authority, fate made me an authority myself.
——愛因斯坦
可能并不是愛因斯坦說的,然后并不重要。
06
最后
著名的熵增原理也就是熱力學(xué)第二定律告訴我們,一個孤立的系統(tǒng)會不斷的走向無序和混亂,直到最終消亡,組織同樣如此。管理學(xué)大師彼得德魯克說過:管理要做的只有一件事,就是如何對抗熵增。架構(gòu)師的這五忌都會加速組織的熵增,在架構(gòu)師的職能內(nèi)核里除了專業(yè)技能就是管理,所以別以為管理與架構(gòu)師絕緣。反抗熵增(讓組織有序)的手段很多,比如注入更多的創(chuàng)新或者科技含量、制定合理有效的流程規(guī)范、標(biāo)準(zhǔn)化各種基礎(chǔ)框架等等。聰明的你肯定知道怎么做,甚至可以做的比我知道的更多。
合格的架構(gòu)師唯一考核指標(biāo)就是,不僅受團(tuán)隊敬仰亦得領(lǐng)導(dǎo)垂青。做到這兩點,就離成功不遠(yuǎn)了。