架構(gòu)設(shè)計(jì)系列文章,請(qǐng)參見連接钥弯。
背景
前面幾篇文章說了很多問題径荔,什么是架構(gòu)、架構(gòu)為什么重要脆霎、架構(gòu)師知識(shí)體系等文章总处,也翻譯了《如何系統(tǒng)學(xué)習(xí)軟件設(shè)計(jì)和架構(gòu)》。而作者在從業(yè)的這么多年以來睛蛛,也一直在學(xué)習(xí)架構(gòu)設(shè)計(jì)鹦马。而業(yè)界也有很多架構(gòu)設(shè)計(jì)的方法論,理論基礎(chǔ)忆肾。
對(duì)于系統(tǒng)的學(xué)習(xí)架構(gòu)作者也沒有很好的方法荸频,去系統(tǒng)的學(xué)習(xí)架構(gòu)方法。作者只能盡量的去查找并學(xué)習(xí)架構(gòu)到底應(yīng)該怎樣學(xué)習(xí)客冈。這里對(duì)于這些方面進(jìn)行逐個(gè)的分析與深入旭从,以幫助作者與讀者更好去學(xué)習(xí)架構(gòu)設(shè)計(jì)。
問題定義
學(xué)習(xí)一項(xiàng)事物的時(shí)候场仲,做好的方式是帶著問題去學(xué)習(xí)和悦。那么學(xué)習(xí)架構(gòu)設(shè)計(jì)時(shí)我們應(yīng)該帶著什么問題去學(xué)習(xí)呢?
- 架構(gòu)到底干了什么渠缕?能給我們帶來什么鸽素?
- 誰驅(qū)動(dòng)了架構(gòu)設(shè)計(jì)?誰來做架構(gòu)設(shè)計(jì)亦鳞?
- 怎么輸出一個(gè)架構(gòu)馍忽?怎么做架構(gòu)設(shè)計(jì)棒坏?
- 用什么做架構(gòu)設(shè)計(jì)?
- 什么架構(gòu)才是好架構(gòu)舵匾?
- 架構(gòu)怎么落地實(shí)施俊抵?架構(gòu)落地偏差怎么樣解決?
- 實(shí)踐中的架構(gòu)模式有哪些坐梯?
前面文章中也提過IASA這個(gè)組織徽诲,這個(gè)組織提出來架構(gòu)師的技能圖表。這個(gè)技能表比作者之前編寫的《架構(gòu)師知識(shí)體系》更加以人為本的方式進(jìn)行架構(gòu)師技能描述吵血。下面會(huì)總結(jié)IASA的技能表和其他的一些內(nèi)容進(jìn)行學(xué)習(xí)架構(gòu)設(shè)計(jì)的方法谎替。
思維轉(zhuǎn)變
在解決上面的問題之前,需要做一些簡(jiǎn)單但是很難的事情蹋辅。從一個(gè)程序員升級(jí)到架構(gòu)師并不像從初級(jí)到中級(jí)钱贯、再到高級(jí)的這個(gè)過程,而從程序員到架構(gòu)師是一個(gè)質(zhì)的變化侦另。所以說升級(jí)到架構(gòu)師時(shí)需要做下面這幾件簡(jiǎn)單而又很難的事情秩命。
-
第一條思維:從代碼跳出來才可以真正的學(xué)習(xí)架構(gòu)
現(xiàn)在很多高級(jí)程序員或者初級(jí)架構(gòu)師有一個(gè)重要的誤區(qū):"架構(gòu)就是框架"、"架構(gòu)就是《高級(jí)》技術(shù)"褒傅。作者只能說架構(gòu)和技術(shù)是兩個(gè)領(lǐng)域的東西弃锐。架構(gòu)是追求美的,技術(shù)是準(zhǔn)求準(zhǔn)的殿托。兩個(gè)事物的目標(biāo)都不一樣霹菊,怎么可能是一種東西。
-
第二條思維:最新的并不是最好的支竹。
適時(shí)適事分析決斷是最新的技術(shù)并不是最好的思維的精華旋廷。作者一直堅(jiān)持著一件事:所有的技術(shù)都有它適用的范圍,一項(xiàng)技術(shù)不可能適用于所有的場(chǎng)景礼搁。需要根據(jù)具體的使用場(chǎng)景去確定在一個(gè)領(lǐng)域內(nèi)使用的具體技術(shù)饶碘。例如:通信,在iot場(chǎng)景下的通信最好的方式是mqtt馒吴。而在互聯(lián)網(wǎng)場(chǎng)景的通信最好的方式是HTTP熊镣,在微服務(wù)場(chǎng)景下最好的通信方式是rpc。
-
第三條思維:方法論是必不可缺的募书。
作為一個(gè)必須要有理論基礎(chǔ)绪囱。理論基礎(chǔ)在軟件行業(yè)中很多都是經(jīng)驗(yàn),而不是具體的公式推導(dǎo)莹捡。這些方法論有很多很多鬼吵,在不同的方面體現(xiàn)著不同的作用。這些方法論是經(jīng)過很多次經(jīng)驗(yàn)教訓(xùn)總結(jié)歸納出來的篮赢。所以從成長(zhǎng)的角度來說從別人的經(jīng)驗(yàn)教訓(xùn)中獲取經(jīng)驗(yàn)是一個(gè)聰明人應(yīng)該做的齿椅。例如:奧卡姆剃刀和YAGNI原則都是在不同的場(chǎng)景下總結(jié)出相同的經(jīng)驗(yàn)教訓(xùn)琉挖。
-
第四條思維:為自己織一張知識(shí)的網(wǎng)。
自我管理是自我提升的最重要內(nèi)容涣脚。而在自我管理中對(duì)于架構(gòu)師的基本技能的管理就需要有完整的技術(shù)知識(shí)體系(網(wǎng)絡(luò))示辈。有了這張網(wǎng)隊(duì)自己知識(shí)的欠缺,知識(shí)間聯(lián)系就更有把握遣蚀》椋可以更好完善自我也可以更好的指導(dǎo)實(shí)踐。
對(duì)于這四條思維轉(zhuǎn)變是逐層遞進(jìn)的芭梯。在成為架構(gòu)師的過程中需要不斷的學(xué)習(xí)與總結(jié)险耀,總結(jié)出系統(tǒng)化的知識(shí)體系。最后還是一個(gè)現(xiàn)在流行的一句話:人生在于提升認(rèn)知玖喘。
解決方案
提出問題是最難的甩牺。也就是意識(shí)到這里有問題,才有辦法去解決這些問題累奈。如果一直沒有意識(shí)到問題贬派,那問題就永遠(yuǎn)解決不了。所以澎媒,認(rèn)識(shí)問題赠群、認(rèn)識(shí)本質(zhì)、根因分析才是解決問題的本質(zhì)旱幼。
而在問題定義中我們對(duì)于學(xué)習(xí)架構(gòu)師這個(gè)問題做了一個(gè)定義。帶著這些問題去解決學(xué)習(xí)架構(gòu)師這件事可以更加體系化突委。
在之前介紹IASA組織中柏卤,有一個(gè)叫做《系統(tǒng)架構(gòu)的五大基礎(chǔ)》的技能表。這個(gè)五支柱的目標(biāo)是基于以人為本的方法創(chuàng)建一本IT架構(gòu)能力指南匀油,該指南傳達(dá)了體系結(jié)構(gòu)發(fā)展的各個(gè)層次的最佳實(shí)踐和學(xué)習(xí)目標(biāo)缘缚。
IT架構(gòu)師的知識(shí)體系是通過對(duì)架構(gòu)師工作任務(wù)分析的信息來定義的。我們學(xué)習(xí)并將其組織成有意義的技能支柱敌蚜。
我們所有這一切的目標(biāo)都是在這個(gè)環(huán)境中桥滨,所有人都能找到了學(xué)習(xí)和實(shí)踐體系結(jié)構(gòu)的途徑和方法。大多數(shù)項(xiàng)目失敗是因?yàn)樗鼈儧]有按時(shí)或按預(yù)算完成弛车,更糟糕的是齐媒,他們沒有解決他們開始的商業(yè)問題。我們相信通過共同的技能纷跛、工具和培訓(xùn)以解決這些問題喻括,這就是我們創(chuàng)造知識(shí)體系的原因。IASA 認(rèn)為贫奠, 以下幾點(diǎn)可以說是一個(gè) IT 架構(gòu)師的成功的必要條件:
-
技術(shù)戰(zhàn)略(企業(yè)技術(shù)戰(zhàn)略:BTS)
通過技術(shù)開發(fā)和實(shí)施商業(yè)戰(zhàn)略的技能唬血。架構(gòu)師如果不能深入理解企業(yè)的業(yè)務(wù)背景望蜡,或者不具備進(jìn)一步深入理解的能力, 那么他將無法滿足企業(yè)拷恨、機(jī)構(gòu)脖律、客戶的業(yè)務(wù)目標(biāo)。他們必要的知識(shí)包括金融腕侄、IT 企業(yè)戰(zhàn)略的演進(jìn)小泉,行業(yè)熱點(diǎn)、趨勢(shì)兜挨、標(biāo)準(zhǔn)等也是架構(gòu)師需要長(zhǎng)期關(guān)注的內(nèi)容膏孟。
具體內(nèi)容還包括: -
IT 背景
管理和交付技術(shù)計(jì)劃時(shí)使用的技能和知識(shí)。這里的 IT 背景是指為了形成合理拌汇、成熟的解決方案柒桑, 一名架構(gòu)師在一個(gè)特定企業(yè)背景中所應(yīng)該具備的技能。這里說的技能應(yīng)同時(shí)包含架構(gòu)本身的技能和組織流程方面的技能噪舀, 也就是說架構(gòu)師需要在各方面具有執(zhí)行和創(chuàng)新的能力魁淳。舉個(gè)例子來說, 一名好的架構(gòu)師不僅須要熟悉行業(yè)內(nèi)的趨勢(shì)与倡, 理解各項(xiàng)技術(shù)的優(yōu)缺點(diǎn)界逛, 但同時(shí)也還需要了解特定 IT 背景中各個(gè)各種技術(shù)的使用和方法論。 -
設(shè)計(jì)技能
在業(yè)務(wù)和技術(shù)中解決問題并在實(shí)現(xiàn)之前對(duì)其進(jìn)行描述的技能息拜。設(shè)計(jì)技能是架構(gòu)師的主要技能。擁有設(shè)計(jì)技能不僅可以創(chuàng)造一個(gè)新的架構(gòu)净响, 更重要的是對(duì)架構(gòu)設(shè)計(jì)的審核少欺;我們不能僅僅關(guān)注于完美的藍(lán)圖,更重要的是決策過程中的判斷馋贤、依據(jù)和各種權(quán)衡因素的考量赞别。該領(lǐng)域的技術(shù)以及設(shè)計(jì)的方法論是作為一個(gè)名架構(gòu)師必須具有具備的知識(shí)。 當(dāng)然配乓, 對(duì)各種設(shè)計(jì)的工具仿滔、模式、風(fēng)格犹芹、觀點(diǎn)的熟悉也必不可少崎页。同時(shí), 架構(gòu)師須要需要以業(yè)務(wù)需求為依據(jù)來做出合理決策腰埂。 -
人員能動(dòng)性
在人類系統(tǒng)內(nèi)工作的溝通实昨、社會(huì)和組織能力。人員能動(dòng)性研究的是在IT項(xiàng)目或環(huán)境中管理盐固、引導(dǎo)人員荒给,并協(xié)調(diào)人員之間的關(guān)系丈挟。在這方面,架構(gòu)師也需要這方面的技能志电,他們需要管理不同文化的差異曙咽,處理和客戶之間或和項(xiàng)目成員之間的關(guān)系。 雖然大多數(shù)情況下挑辆, 架構(gòu)師不會(huì)有承擔(dān)直屬經(jīng)理或項(xiàng)目經(jīng)理的職責(zé)例朱, 但他們?nèi)匀恍枰I(lǐng)導(dǎo)和管理的能力, 尤其是協(xié)作和協(xié)商的技能鱼蝉, 同樣重要的是演講和協(xié)作技能洒嗤。 -
質(zhì)量因素
跨領(lǐng)域的系統(tǒng)關(guān)注點(diǎn),如性能魁亦、安全性和可靠性渔隶。IASA將決定架構(gòu)質(zhì)量的各個(gè)因素歸為四大類: 使用方面的因素, 演化方面的因素洁奈, 操作方面的间唉, 以及最重要的安全方面的因素。 這些質(zhì)量因素通常是會(huì)互相牽制利术, 基于時(shí)間呈野、成本、需求印叁、人員等限制被冒, 架構(gòu)師往往需要在這四個(gè)方面之間做反復(fù)權(quán)衡。我們需要對(duì)這些質(zhì)量因素做量化的分析和監(jiān)控轮蜕。然而昨悼, 這些質(zhì)量因素的標(biāo)準(zhǔn)也必須具有實(shí)際意義的, 因?yàn)榭蛻敉恍枰到y(tǒng)達(dá)到 99.999% 的可用性肠虽,而往往不愿意支付達(dá)到這一質(zhì)量標(biāo)準(zhǔn)所須需的費(fèi)用。
對(duì)于IASA的五大支柱每一個(gè)都是一個(gè)非常大的領(lǐng)域佛析,而IASA的公開材料中并未對(duì)這些內(nèi)容進(jìn)行完整的闡述。所以彪蓬,從IASA的這幾個(gè)部分可以自行深入研究寸莫,也可以在IASA上報(bào)一個(gè)培訓(xùn)。不過IASA的培訓(xùn)和資料的話沒有接觸過档冬,不知道怎么樣可以自行判斷膘茎。
總結(jié)
要成為架構(gòu)師就需要對(duì)自己的認(rèn)知進(jìn)行不斷的提升,不斷的改進(jìn)酷誓。而成為架構(gòu)師之路是一條漫長(zhǎng)而艱辛的路披坏,而且在這條路上需要不斷的探索新的路徑。在不斷的學(xué)習(xí)中組織出自己架構(gòu)師知識(shí)網(wǎng)絡(luò)才能真正的成為架構(gòu)師盐数。
實(shí)踐與理論在架構(gòu)師成長(zhǎng)過程中一樣重要棒拂。通過實(shí)踐去驗(yàn)證理論,通過理論去指導(dǎo)實(shí)踐就是架構(gòu)師之路上重要的策略娘扩。