? ?架構(gòu)師沒有明確的定義,郭老師提出具備的能力:就是為一個復雜系統(tǒng)設(shè)計軟件的能力,以及引導研發(fā)團隊實施的能力。從5個 階段來看對應的能力維度:結(jié)構(gòu)化設(shè)計、解決橫向問題、解決跨領(lǐng)域沖突、正確的技術(shù)決策和創(chuàng)造生存優(yōu)勢。
一結(jié)構(gòu)化設(shè)計
? ?這個吧,我就是很慚愧,通常只要不給別人看,自己總是無比滿意。如果后期經(jīng)常做迭代,會發(fā)現(xiàn)之前寫寫的不太好,再去重構(gòu)。結(jié)構(gòu)化是一個結(jié)果,涉及很多方面,要做好不容易。
? ?代碼抽象、OOP的設(shè)計思想
要求我們認真思考什么是類,什么是對象,什么是對象所具備的屬性,什么是對象可能發(fā)生的行為,這個行為的作用對象是誰,等等。通過這種對模型本質(zhì)的思考來定義軟件結(jié)構(gòu),就是提升軟件結(jié)構(gòu)性設(shè)計能力的有效方法。
? 如果單純的寫代碼就是依照產(chǎn)品需求文檔那就是從文字到計算機語音的轉(zhuǎn)換,架構(gòu)師的應該具備思維需要多思考,要這么具有前瞻性的設(shè)計嗎?如果現(xiàn)在不需要,但是未來需要,我應該采取什么樣的設(shè)計才能讓未來的過渡最容易呢?這是基于對問題本質(zhì)、商業(yè)價值和軟件結(jié)構(gòu)性思考的長遠設(shè)計!
設(shè)計模式
? 這個比較廣泛 了,設(shè)計模式強調(diào)趨同性,用廣泛傳播的知識來標準化代碼的實現(xiàn),從而降低實現(xiàn)手段和命名的多樣性,也就是提升代碼的一致性,注意使用不當?shù)?問題。
結(jié)構(gòu)化設(shè)計過程關(guān)注點
? ?一?設(shè)計理念。整體設(shè)計需要與公司或部門的理念保持一致
? ? 二?API 的結(jié)構(gòu)性:
暴露給其他調(diào)用方的 API,要有條理、表達準確,且易于理解。
包含宏觀的結(jié)構(gòu)性,比如一個實體的 API 要反映出這個實體狀態(tài)和行為。
功能組織上的結(jié)構(gòu)性:一個 API 可能為多個用戶角色服務,不同的用戶角色和不同的使用場景,都應該有不同的設(shè)計粒度。
最后是數(shù)據(jù)模型的結(jié)構(gòu)性。API 會暴露數(shù)據(jù)給調(diào)用方,那么暴露出來的數(shù)據(jù)就要有清晰的結(jié)構(gòu),遵守一定的規(guī)范。
? 三??模塊內(nèi)部的結(jié)構(gòu)性,也就是程序的結(jié)構(gòu)性。
? 比如Java的package、Interface、Class 和 function 實現(xiàn)的設(shè)計等。
如果個人與團隊不太一致,可以盡量追求 API 的結(jié)構(gòu)性,前提是不能與整個研發(fā)團隊現(xiàn)有的設(shè)計規(guī)范相沖突。哪怕你認為現(xiàn)有規(guī)范不合理,也應該建議調(diào)整規(guī)范,因為這會影響他人代碼的一致性和可讀性,純粹是私域的 代碼除外。
二? 解決橫向問題
? ?橫向問題,簡單來說就是軟件系統(tǒng)內(nèi)部與業(yè)務無關(guān)的技術(shù)債,比如性能、可擴展性、可用性、可測試性、可維護性和安全合規(guī)等問題。
??從程序員成長為兼職架構(gòu)師,需要跨越的主要的能力障礙就是責任邊界,通常這種不屬于某個研發(fā)人員具體的責任,應該優(yōu)先吧日常開發(fā)工作做好,日常工作做不好,很快就被裁掉了,也做不了這個橫向問題。
? 從哪里開始呢?首先是 個人興趣。其次考慮解決這個橫向問題能給公司帶來多大的價值?作為一個兼職架構(gòu)師,最重要的價值就是幫助團隊中被某個橫向難題擋住的程序員清理路障。
? ? 可以先從 穩(wěn)定性解決,畢竟自身收益,報警少了壓力也少。這個不需要額外授權(quán),跟工作連續(xù)性大。這個話題很大,郭老師給了相關(guān)的一些建議:
1 從來都不要相信自己的代碼是在一個可靠的環(huán)境中運行,任何時候都要堅持檢測你的依賴方。
2? 系統(tǒng)的可用性會隨著復雜度的提升而降低。如果想設(shè)計一個高可用系統(tǒng),就必須把依賴最小化。如果是被迫引入依賴的話,就要選擇最靠譜的人和最靠譜的模塊。
3??所有東西都會過期變質(zhì),尤其是數(shù)據(jù)。有時候不是簡單回滾就能解決問題,可能數(shù)據(jù)配置不匹配造成數(shù)據(jù)污染,也就是在設(shè)計中要考慮數(shù)據(jù)污染的情形。
4 在可用性面前,所有依賴都可以被降級。也就是通過大量的壓測和充足的預案,保障重大活動高可用性。
5?不考慮成本的穩(wěn)定性就是耍流氓。要考慮成本 。
6 保護自己:當故障發(fā)生的時候,首先要想方設(shè)法地恢復自己所負責的服務,不要等待強依賴方的恢復。
降級、限流、監(jiān)控、報警等穩(wěn)定性常規(guī)手段,在多數(shù)互聯(lián)網(wǎng)公司都已經(jīng)齊備。手段還不算原則。
除了穩(wěn)定性,性能也是與 商業(yè)回報有關(guān)的額高優(yōu)先級。
? ? 橫向問題不是越多越好,公司發(fā)展到一定規(guī)模后相比覆蓋廣度,橫向能力的深度和稀缺性要更重要一些。
?三 解決跨領(lǐng)域沖突的能力
? ? ?上節(jié)學了從程序員到兼職架構(gòu)師的跨越,也就是如何搭建解決橫向問題的能力。 在兼職架構(gòu)師這個角色中,架構(gòu)能力是一個加分項,寫代碼實現(xiàn)需求仍然是主要工作。
? ? ? 從兼職架構(gòu)師成為跨域架構(gòu)師,需要完成從一對一關(guān)系到一對多關(guān)系的跨越。這個校色轉(zhuǎn)變很大,跨域架構(gòu)師對多個領(lǐng)域的軟件架構(gòu)間接負責,只能通過各領(lǐng)域的研發(fā)管理者來間接影響自己所負責的領(lǐng)域架構(gòu)。
? ? ? 在多個領(lǐng)域的軟件架構(gòu),而每個領(lǐng)域都有對應的研發(fā)經(jīng)理,甚至領(lǐng)域內(nèi)還有對應的兼職架構(gòu)師,這些領(lǐng)域之間的設(shè)計理念等肯定不一致。這些領(lǐng)域有各自的領(lǐng)域目標、領(lǐng)域挑戰(zhàn)、需求優(yōu)先級和相對獨立的工作環(huán)境。因此跨領(lǐng)域架構(gòu)師要持續(xù)抵抗天然的熵增,將多個子領(lǐng)域中不同的設(shè)計理念、代碼結(jié)構(gòu)和實現(xiàn)方式,往同質(zhì)的方向上進行整合。是大型組織的需要。 ? ?
??對比一下兼職架構(gòu)師,這個角色只需要關(guān)注自己領(lǐng)域或模塊的架構(gòu)問題就行了,解決的還是內(nèi)部技術(shù)債的問題,不需要化解多個團隊之間的沖突??缬蚣軜?gòu)師對這些領(lǐng)域沒有管理控制權(quán)。每個領(lǐng)域的大佬都有各自的理念和行事方法,不但互相之間有矛盾,好比你之前代碼寫的再好也不能把別人推開自己去改代碼。現(xiàn)在只能靠驅(qū)動他人來作出正確的判斷,才能讓想法變成現(xiàn)實。
郭老師給了一個常見的背鍋場景。一個交易域的跨域架構(gòu)師對接三個獨立團隊負責交易、支付和資金領(lǐng)域的開發(fā)。
產(chǎn)生的跨領(lǐng)域問題本質(zhì): 領(lǐng)域割裂、決策割裂、執(zhí)行割裂、溝通割裂
從全局視角做架構(gòu)干預
跨域架構(gòu)師的存在就是協(xié)調(diào)子域之間的決策、執(zhí)行和溝通,從而平衡全局結(jié)構(gòu)化和局部個性化之間的沖突,最終最大化全局目標的實現(xiàn)。
? ?再各個子域互相溝通的情況下,這不是說架構(gòu)師沒用了,架構(gòu)師的專業(yè)會讓大家少走技術(shù)彎路,因為你要靠真實可靠的技術(shù)論據(jù)和完美的邏輯來說服大家采用正確的判斷。技術(shù)能力同樣有價值。
高速發(fā)展的公司里,往往還有合規(guī)、審計、風控和安全等其他維度的問題被各團隊忽視了,這類問題的共性,可以統(tǒng)一歸結(jié)為之前局部最優(yōu)的架構(gòu)決策在全局視角下不再最優(yōu)。此類決策都是跨域架構(gòu)師的核心增值所在。
? 到這里,理解一個跨領(lǐng)域架構(gòu)師如何突破局部視角的障礙了:
??1.理解整個全局領(lǐng)域的目標。
2.最大程度地熟悉每個子領(lǐng)域,理解每個子領(lǐng)域的目標、挑戰(zhàn)和需求的差異性。
3 圍繞統(tǒng)一的目標去分析局部視角上的差異性,引導各個決策者和執(zhí)行團隊從全局視角上看問題,最終引導多個子域在目標和全局目標上形成對齊。
4.設(shè)計公開的溝通機制,促進子域之間的信息對稱,使得每個決策者和執(zhí)行者能夠看到全局的優(yōu)化目標,以及其他團隊的重大決策、執(zhí)行方式和當前狀態(tài)。
5.逐步解決具體的設(shè)計理念、代碼結(jié)構(gòu)實現(xiàn)方式的沖突,達到全局最優(yōu)。
而類似多個團隊之間的判責,你可以引入這樣一個思考實驗:如果沒有三個團隊,只有一個具備超級大腦的人實現(xiàn)了整個系統(tǒng),那么他是在什么階段引入了這個故障呢?從整體視角去看,
跨域架構(gòu)師千萬不能充當和事佬,能力可以訓練或者失敗后修正來彌補,勇氣是主要的。需要有足夠的勇氣去發(fā)現(xiàn)、面對和解決這些沖突。解決沖突的過程,也就是兼職架構(gòu)師創(chuàng)造增值的過程,持續(xù)做好這件事,就能跨過從兼職到跨域架構(gòu)師的最大障礙了。
? ?四 正確的技術(shù)決策和創(chuàng)造生存優(yōu)勢
總架這塊我就是看看,體會不到這么高。認知達不到。
?看看郭老師說總架是如何思考和決策的。
? 核心能力做正確的技術(shù)決策,也就是說,總架構(gòu)師要為整個公司軟件架構(gòu)的正確性負責。其實是面向未來的技術(shù)不確定性下的外部適應性。不像是技術(shù)債跟 明確的去除局部架構(gòu)缺陷,面向未來的架構(gòu)正確性幾乎永遠沒有明確的答案。技術(shù)發(fā)展、技術(shù)人才供給、商業(yè)競爭都有非常大的不連續(xù)性和不確定性。
? ??總架構(gòu)師這種正確決策的能力,常常被叫作技術(shù)嗅覺。不斷尋找高風險決策的機會來提升技術(shù)嗅覺。
你在幫助他人做高風險決策時,要做的事情就是:
1.理解整個決策的背景。
2.理解決策的制約因素。
3.在你所精通的領(lǐng)域提供盡可能多的依據(jù),在最大程度上降低小決策的不確定性。
4.從你所精通的領(lǐng)域出發(fā),為最終決策做出建議(也就是拍個板)。
5.盡可能多的參與到?jīng)Q策討論中,了解其他領(lǐng)域的不確定性和收斂方法。
6.無論最終決策是否與你的建議一致,都要盡可能地理解最終決策背后的邏輯。之后的數(shù)月甚至是數(shù)年,持續(xù)關(guān)注決策的后續(xù)進展,反思自己提供的決策建議中那些缺失和誤判的部分。
7.之后的數(shù)月甚至是數(shù)年,關(guān)注其他領(lǐng)域后續(xù)的變化,思考最終決策的正確性。注意,不僅要看最終效果,還要看判斷決策邏輯和過程的對錯。
CTO更高了,CTO 的商業(yè)嗅覺更重要。技術(shù)不是 CTO 決策的第一優(yōu)先級,在技術(shù)之外尋找解決辦法的思維。
對人才的判斷力是任何一個管理者最重要的能力。能夠相信、尊重、容忍與你不一致的判斷,而且能夠在他判斷失誤的情況下,幫助他提升,給他再次決策的機會。這才是一個了不起的管理者。
五 架構(gòu)師成長的必要條件
? 簡單回顧下,這五個角色在架構(gòu)師成長的五個階段。1.在程序員階段,主要關(guān)注需求實現(xiàn)的結(jié)構(gòu)化,也就是一個模塊內(nèi)有關(guān)業(yè)務的部分。2.兼職架構(gòu)師階段,主要關(guān)注模塊整體,以及與業(yè)務無關(guān)的橫向問題。3.跨域架構(gòu)師階段,主要關(guān)注不同模塊間結(jié)構(gòu)合理性的問題。4.總架構(gòu)師階段,關(guān)注技術(shù)架構(gòu)的長期正確性。5.CTO 階段,關(guān)注企業(yè)的長期生存。
想培養(yǎng)出這五個維度的能力,需要具備什么必要條件呢?
一 獨立思考的能力:通過獨立思考帶來有效結(jié)論的能力。?
獨立指1.有別于其他人的視角;2.不同的證據(jù)組合;3.不同的思維方式。
其次是“有效”,也就是為公司或團隊帶來足夠的價值。
? 現(xiàn)在當我們面臨的問題,會找到多個答案,難得是甄別多個答案優(yōu)劣的能力?。
二 信息內(nèi)化能力:
??信息內(nèi)化的過程,也就是從接觸信息到消化吸收成個人知識的過程。
?在當前高度競爭的環(huán)境下,缺少信息優(yōu)勢,很難在架構(gòu)師的成長過程中勝出。我們需要深度理解自己所在企業(yè)和行業(yè)的特點,找到自己的特定信息優(yōu)勢,并最大程度地內(nèi)化這些信息來獲取成長。
三:適應力
?從程序員到架構(gòu)師再到 CTO 的職業(yè)成長階段,與其他職業(yè)相比有個重大的差異,那就是能力的不連續(xù)性。崗位技能、個人技能、管理技能等需要時間、經(jīng)驗和機會磨練出來。
其他通用技能想自驅(qū)力、學習、溝通、推動等,也需要,軟件行業(yè)內(nèi)卷的情況下,沒有特別突出。這里又有個取舍,要專注于少量必需的條件上。
? ? 看行業(yè)獵頭發(fā)的跟大廠高P聊天,即要站隊抱緊老大大腿,又要去競爭做出業(yè)績來。這種高P就不是純粹的技術(shù),要有非技術(shù)的敏感度。機遇很重要,情商也要很高這些雖然老師沒講,但是也得明白。
? 六? 架構(gòu)師成長的充分條件
不滿足必要條件,就做不了架構(gòu)師。還需要充分條件:
一 大量的高風險的決策機會:
一個激烈競爭賽道中的成長型的中小公司,往往有大量高風險的架構(gòu)決策機會。
二 對架構(gòu)師友善的環(huán)境:
1.相對寬裕的決策時間;2.對架構(gòu)師意見的尊重;3.對錯誤決策有足夠的包容度。
?考核、排期等決策容易看出來。
三? 正確的目標
??工作環(huán)境能夠一直維持正確的目標。這樣的目標在定義中就公開透明,鼓勵全員參與;在決策中尊重數(shù)據(jù)和事實輸入,有確定的 KPI 和數(shù)據(jù)結(jié)果來衡量產(chǎn)出;在最終的復盤中,不忌諱失敗,會認真反思分析。
這些充分條件就是外部給予的成長環(huán)境,這里郭老師引用了機器學習這個學科分支的基礎(chǔ)假設(shè),如果把架構(gòu)師想象成一個大數(shù)據(jù)驅(qū)動的算法模型,那么架構(gòu)師的成長,就是這個模型在不同場景下快速找到正確架構(gòu)設(shè)計的過程。那么最終的產(chǎn)出是什么呢?對于機器學習系統(tǒng)而言,就是高質(zhì)量的算法模型。對于架構(gòu)師而言,就是最優(yōu)的架構(gòu)設(shè)計。充分條件保證了成長的有效性,必要條件保障了成長的速度。
? 職業(yè)選擇:
? ?選擇行業(yè)要比選擇企業(yè)更重要!尋找高速成長的企業(yè),這個選擇肯定是有風險的,如果從不為自己的決策擔風險,就無法獲得復雜、競爭的商業(yè)的成功。文章來源:http://www.zghlxwxcb.cn/news/detail-529189.html
小結(jié):
? 回顧這個模塊,郭老師都在講每個層級的目標是要解決什么問題?需要什么能力維度?再分析:現(xiàn)有能力 需要跨越的障礙是什么?最終 你的回報是能力的提升。這里有個隱含的條件,就是成長的意愿。文章來源地址http://www.zghlxwxcb.cn/news/detail-529189.html
到了這里,關(guān)于架構(gòu)課學習筆記:職業(yè)成長的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!