架構(gòu)師是一個(gè)充滿挑戰(zhàn)的職業(yè),需要關(guān)注很多維度和技術(shù)质和。只專注于單一領(lǐng)域的架構(gòu)師并不是優(yōu)秀的架構(gòu)師稳摄。Pat Kua是一位經(jīng)驗(yàn)豐富的技術(shù)人員,他指出饲宿,一個(gè)好的架構(gòu)師需要是技術(shù)全面的架構(gòu)師厦酬,他還在文中探討了成為一個(gè)技術(shù)全面的架構(gòu)師所必須具備的六個(gè)特質(zhì)胆描。
- 作為技術(shù)領(lǐng)導(dǎo)者
- 作為開發(fā)人員
- 聚焦系統(tǒng)
- 具備企業(yè)家思維
- 具備權(quán)衡策略思維與戰(zhàn)術(shù)思維
- 能夠進(jìn)行良好的溝通
作為技術(shù)領(lǐng)導(dǎo)者
一名好的軟件架構(gòu)師需要明白,作為領(lǐng)導(dǎo)者并不一定要告訴開發(fā)人員做什么仗阅。相反昌讲,好的架構(gòu)師就像一個(gè)導(dǎo)師,能夠帶領(lǐng)開發(fā)團(tuán)隊(duì)向同一個(gè)技術(shù)愿景前進(jìn)减噪。好的架構(gòu)師會(huì)借助于講故事短绸、影響力、引導(dǎo)沖突旋廷、構(gòu)建信任等領(lǐng)導(dǎo)技能鸠按,將他們的架構(gòu)愿景變成現(xiàn)實(shí)。一個(gè)好的領(lǐng)導(dǎo)者饶碘,同時(shí)也是一個(gè)好的架構(gòu)師。他/她會(huì)仔細(xì)聽取每個(gè)參與者的意見馒吴,通過(guò)與團(tuán)隊(duì)的反饋互動(dòng)調(diào)整他們的愿景扎运。
作為開發(fā)人員
一個(gè)架構(gòu)師同時(shí)又是一個(gè)好的開發(fā)人員。通常饮戳,做出一個(gè)良好的架構(gòu)選擇需要權(quán)衡理想的架構(gòu)狀態(tài)與軟件系統(tǒng)的當(dāng)前狀態(tài)豪治。例如,如果一個(gè)問(wèn)題更適合采用關(guān)系型數(shù)據(jù)庫(kù)來(lái)解決扯罐,那么將文檔數(shù)據(jù)庫(kù)引入到系統(tǒng)中的做法是毫無(wú)道理的负拟。一個(gè)架構(gòu)師如果不考慮技術(shù)選型與問(wèn)題域之間的匹配度,那么會(huì)很容易受到各種技術(shù)的誘惑——這也就是常見的“象牙塔式架構(gòu)師”行為模式歹河。
緩解這種情況的最佳方式是讓架構(gòu)師多與開發(fā)人員待在一起掩浙,花一些時(shí)間在代碼上。了解系統(tǒng)的構(gòu)建方式及系統(tǒng)的約束秸歧,這將幫助架構(gòu)師在當(dāng)下環(huán)境做出正確的選擇厨姚。
聚焦系統(tǒng)
經(jīng)驗(yàn)豐富的開發(fā)人員明白代碼只是軟件的一個(gè)部分。為了讓代碼可運(yùn)行键菱,他們還需要了解代碼在生產(chǎn)環(huán)境中運(yùn)行良好所需的其他重要質(zhì)量屬性谬墙。他們需要考慮部署過(guò)程、自動(dòng)化測(cè)試经备、性能拭抬、安全和可支持性等方面。開發(fā)人員可能以臨時(shí)的方式來(lái)實(shí)現(xiàn)這些質(zhì)量屬性侵蒙,而架構(gòu)師不僅需要專注于了解代碼造虎,還要了解并滿足不同利益相關(guān)者(如支持、安全和運(yùn)營(yíng)人員)的需求蘑志。一個(gè)好的架構(gòu)師需要專注于尋找那些能夠滿足不同利益相關(guān)者需求的解決方案累奈,而不是選擇針對(duì)某一個(gè)參與者的偏好或風(fēng)格進(jìn)行優(yōu)化的工具或方法贬派。
所有的技術(shù)選型都有相關(guān)的成本和收益,一個(gè)好的架構(gòu)師需要從這兩個(gè)角度考慮新的技術(shù)選型澎媒。成功的企業(yè)家愿意承擔(dān)風(fēng)險(xiǎn)搞乏,不過(guò)也會(huì)尋求快速學(xué)習(xí)和快速失敗的方法。架構(gòu)師也可以用類似的方式做出技術(shù)選型戒努,收集真實(shí)世界中有關(guān)短期和長(zhǎng)期成本的信息请敦,以及他們可能意識(shí)到的好處。
這方面一個(gè)很好的例子是储玫,架構(gòu)師避免承諾立即使用一個(gè)在閱讀新文章時(shí)看到的工具或某一會(huì)議上聽過(guò)的工具侍筛。相反,他們?cè)噲D通過(guò)架構(gòu)調(diào)研來(lái)了解工具在其環(huán)境中的相關(guān)性撒穷,以收集更多信息匣椰。他們對(duì)于工具的選擇不是基于銷售量,而是考慮他們需要什么端礼、以及這個(gè)工具所提供的價(jià)值禽笑。他們還會(huì)尋找這些工具背后的隱性成本,例如工具的支持情況(如文檔化程度蛤奥、社區(qū)使用情況)佳镜,工具可能帶來(lái)的約束或長(zhǎng)期來(lái)看可能引入的額外風(fēng)險(xiǎn)。
權(quán)衡策略思維與戰(zhàn)術(shù)思維
許多團(tuán)隊(duì)由一些獨(dú)立的開發(fā)人員一起構(gòu)建軟件凡桥,而每個(gè)人都傾向于選擇自己最舒適或最有經(jīng)驗(yàn)的工具和技術(shù)蟀伸。好的架構(gòu)師會(huì)持續(xù)關(guān)注可能有用的新技術(shù)、工具或方法缅刽,但不一定立即采用它們啊掏。技術(shù)采用往往需要長(zhǎng)期的考量。架構(gòu)師將在團(tuán)隊(duì)和組織層面尋求敏捷度(允許團(tuán)隊(duì)快速采取行動(dòng))和對(duì)齊(保持足夠的一致性)之間的良好平衡拷恨。建立自己的技術(shù)雷達(dá)這樣的練習(xí)是用戰(zhàn)略思維探索技術(shù)的一個(gè)有用工具脖律。
良好的溝通
架構(gòu)師需要知道,有效溝通是建立信任和影響團(tuán)隊(duì)以外成員的關(guān)鍵技能腕侄。他們知道不同群體使用不同的詞匯小泉,而使用技術(shù)術(shù)語(yǔ)和描述與業(yè)務(wù)人員溝通將會(huì)變得比較困難。與其談?wù)撃J矫岣堋⒐ぞ吆途幊谈拍钗㈡ⅲ軜?gòu)師需要使用聽眾熟悉的詞匯與之交流,諸如風(fēng)險(xiǎn)回報(bào)分预、成本和收益等兢交。這比單純使用技術(shù)詞匯進(jìn)行溝通來(lái)得更好。架構(gòu)師還需要認(rèn)識(shí)到團(tuán)隊(duì)內(nèi)部溝通與外部溝通同樣重要笼痹,可以使用圖表和小組討論的方式來(lái)建立和完善技術(shù)愿景配喳,并進(jìn)行書面記錄(如架構(gòu)決策日志或Wiki等)酪穿,從而為將來(lái)留下可追溯的歷史。
結(jié)論
做一個(gè)技術(shù)全面的架構(gòu)師并不容易晴裹,因?yàn)橛泻芏喾矫嫘枰覀冴P(guān)注被济,而每個(gè)方面都有很多作為開發(fā)人員經(jīng)常不會(huì)專注并練習(xí)的技能。其實(shí)最重要的不一定是一個(gè)架構(gòu)師的能力涧团,而是他們?cè)诿總€(gè)不同的領(lǐng)域都有足夠的專業(yè)知識(shí)只磷。僅僅掌握上述某個(gè)領(lǐng)域的架構(gòu)師不如在六個(gè)方面都有良好專業(yè)知識(shí)的架構(gòu)師有價(jià)值。
原文:The Well Rounded Architect
譯文首發(fā)于InfoQ
Pat Kua/文 禚嫻靜/譯