相關(guān)閱讀:
鹿晗關(guān)曉彤公開戀情,是如何把微博服務(wù)器搞炸的? 附大型網(wǎng)站高可用架構(gòu)和解決方案
本文首發(fā)于infoQ:
http://www.infoq.com/cn/articles/the-well-rounded-architect
作為技術(shù)領(lǐng)導者
作為開發(fā)人員
聚焦系統(tǒng)
具備企業(yè)家思維
具備權(quán)衡策略思維與戰(zhàn)術(shù)思維
能夠進行良好的溝通
作為技術(shù)領(lǐng)導者
一名好的軟件架構(gòu)師需要明白,作為領(lǐng)導者并不一定要告訴開發(fā)人員做什么。相反,好的架構(gòu)師就像一個導師,能夠帶領(lǐng)開發(fā)團隊向同一個技術(shù)愿景前進。好的架構(gòu)師會借助于講故事、影響力、引導沖突、構(gòu)建信任等領(lǐng)導技能,將他們的架構(gòu)愿景變成現(xiàn)實。一個好的領(lǐng)導者,同時也是一個好的架構(gòu)師。他/她會仔細聽取每個參與者的意見,通過與團隊的反饋互動調(diào)整他們的愿景。
一個架構(gòu)師同時又是一個好的開發(fā)人員。通常,做出一個良好的架構(gòu)選擇需要權(quán)衡理想的架構(gòu)狀態(tài)與軟件系統(tǒng)的當前狀態(tài)。例如,如果一個問題更適合采用關(guān)系型數(shù)據(jù)庫來解決,那么將文檔數(shù)據(jù)庫引入到系統(tǒng)中的做法是毫無道理的。一個架構(gòu)師如果不考慮技術(shù)選型與問題域之間的匹配度,那么會很容易受到各種技術(shù)的誘惑——這也就是常見的“象牙塔式架構(gòu)師”行為模式。
緩解這種情況的最佳方式是讓架構(gòu)師多與開發(fā)人員待在一起,花一些時間在代碼上。了解系統(tǒng)的構(gòu)建方式及系統(tǒng)的約束,這將幫助架構(gòu)師在當下環(huán)境做出正確的選擇。
經(jīng)驗豐富的開發(fā)人員明白代碼只是軟件的一個部分。為了讓代碼可運行,他們還需要了解代碼在生產(chǎn)環(huán)境中運行良好所需的其他重要質(zhì)量屬性。他們需要考慮部署過程、自動化測試、性能、安全和可支持性等方面。開發(fā)人員可能以臨時的方式來實現(xiàn)這些質(zhì)量屬性,而架構(gòu)師不僅需要專注于了解代碼,還要了解并滿足不同利益相關(guān)者(如支持、安全和運營人員)的需求。一個好的架構(gòu)師需要專注于尋找那些能夠滿足不同利益相關(guān)者需求的解決方案,而不是選擇針對某一個參與者的偏好或風格進行優(yōu)化的工具或方法。
所有的技術(shù)選型都有相關(guān)的成本和收益,一個好的架構(gòu)師需要從這兩個角度考慮新的技術(shù)選型。成功的企業(yè)家愿意承擔風險,不過也會尋求快速學習和快速失敗的方法。架構(gòu)師也可以用類似的方式做出技術(shù)選型,收集真實世界中有關(guān)短期和長期成本的信息,以及他們可能意識到的好處。
這方面一個很好的例子是,架構(gòu)師避免承諾立即使用一個在閱讀新文章時看到的工具或某一會議上聽過的工具。相反,他們試圖通過架構(gòu)調(diào)研來了解工具在其環(huán)境中的相關(guān)性,以收集更多信息。他們對于工具的選擇不是基于銷售量,而是考慮他們需要什么、以及這個工具所提供的價值。他們還會尋找這些工具背后的隱性成本,例如工具的支持情況(如文檔化程度、社區(qū)使用情況),工具可能帶來的約束或長期來看可能引入的額外風險。
許多團隊由一些獨立的開發(fā)人員一起構(gòu)建軟件,而每個人都傾向于選擇自己最舒適或最有經(jīng)驗的工具和技術(shù)。好的架構(gòu)師會持續(xù)關(guān)注可能有用的新技術(shù)、工具或方法,但不一定立即采用它們。技術(shù)采用往往需要長期的考量。架構(gòu)師將在團隊和組織層面尋求敏捷度(允許團隊快速采取行動)和對齊(保持足夠的一致性)之間的良好平衡。建立自己的技術(shù)雷達這樣的練習是用戰(zhàn)略思維探索技術(shù)的一個有用工具。
架構(gòu)師需要知道,有效溝通是建立信任和影響團隊以外成員的關(guān)鍵技能。他們知道不同群體使用不同的詞匯,而使用技術(shù)術(shù)語和描述與業(yè)務(wù)人員溝通將會變得比較困難。與其談?wù)撃J健⒐ぞ吆途幊谈拍睿軜?gòu)師需要使用聽眾熟悉的詞匯與之交流,諸如風險回報、成本和收益等。這比單純使用技術(shù)詞匯進行溝通來得更好。架構(gòu)師還需要認識到團隊內(nèi)部溝通與外部溝通同樣重要,可以使用圖表和小組討論的方式來建立和完善技術(shù)愿景,并進行書面記錄(如架構(gòu)決策日志或Wiki等),從而為將來留下可追溯的歷史。
做一個技術(shù)全面的架構(gòu)師并不容易,因為有很多方面需要我們關(guān)注,而每個方面都有很多作為開發(fā)人員經(jīng)常不會專注并練習的技能。其實最重要的不一定是一個架構(gòu)師的能力,而是他們在每個不同的領(lǐng)域都有足夠的專業(yè)知識。僅僅掌握上述某個領(lǐng)域的架構(gòu)師不如在六個方面都有良好專業(yè)知識的架構(gòu)師有價值。
Pat Kua/文 禚嫻靜/
看完本文有收獲?請轉(zhuǎn)發(fā)分享給更多人