以下內(nèi)容發(fā)表在8月份的InfoQ中文站電子刊物《架構(gòu)師》中,主要談到了我對架構(gòu)師這個(gè)角色的一些理解與認(rèn)識(shí),有興趣的朋友也可以留言,我們共同探討這個(gè)話題。
架構(gòu)師之我見架構(gòu)師是一個(gè)項(xiàng)目組的靈魂人物,他決定著整個(gè)系統(tǒng)的技術(shù)選型、整體架構(gòu)以及模塊劃分,同時(shí)還可能擔(dān)當(dāng)與領(lǐng)導(dǎo)層的溝通角色,從某種意義上來說,架構(gòu)師在很大程度上決定著項(xiàng)目的成敗與否,正所謂火車跑得快,全靠車頭帶。
很多優(yōu)秀的架構(gòu)師都是從一個(gè)優(yōu)秀的開發(fā)人員轉(zhuǎn)變過來的,但優(yōu)秀的開發(fā)人員未見得都能成為合格的架構(gòu)師。與架構(gòu)師相比,開發(fā)人員所需擔(dān)當(dāng)?shù)娜蝿?wù)相對狹隘的多,其最大的目標(biāo)就是編寫出精良的代碼、做好充分的測試以及撰寫高質(zhì)量的文檔等;而架構(gòu)師所要面對的則相對寬泛得多,除了過硬的技術(shù)之外,還需要有良好的表達(dá)能力,同時(shí)還要有宏觀的駕馭整個(gè)系統(tǒng)的能力。
有人曾說過,20幾歲的編程天才好找,但30多歲的優(yōu)秀架構(gòu)師難尋。架構(gòu)師何其難?除了敏銳的洞察力之外,我認(rèn)為一個(gè)好的架構(gòu)師必須具備如下幾方面的素質(zhì):
A. 過硬的技術(shù)能力。有人說架構(gòu)師就不需要編寫代碼,只需設(shè)計(jì)整體架構(gòu)就行了。但我認(rèn)為這是很片面的,試想一個(gè)人如果長時(shí)間不寫代碼,他還能具備持續(xù)的技術(shù)敏感度么?當(dāng)然了,這里所說的寫代碼并非一般開發(fā)人員的行為,而是讓自己保持住對代碼的感覺。還有人說架構(gòu)師不一定是技術(shù)高手,這一點(diǎn)我很同意,但他一定是個(gè)優(yōu)秀的開發(fā)者。
B. 良好的溝通能力。這一點(diǎn)尤為重要,因?yàn)榧軜?gòu)師需要與項(xiàng)目組的開發(fā)人員以及領(lǐng)導(dǎo)層不斷交換意見,向?qū)Ψ絺鬟f自己的設(shè)計(jì)意圖與思想,沒有良好的表達(dá)與溝通能力是很容易出現(xiàn)問題的。這一點(diǎn)在溝通方式并非母語的企業(yè)中尤為明顯。
C. 良好的軟件工程素質(zhì)。雖說架構(gòu)師不是項(xiàng)目經(jīng)理,但我認(rèn)為他需要對軟件開發(fā)過程有清晰明確的認(rèn)識(shí),這里的開發(fā)過程是個(gè)泛指,也許是RUP,也許是XP,是什么無所謂,但這種工程素質(zhì)是每個(gè)優(yōu)秀架構(gòu)師必備的品格之一。
D. 寬廣的知識(shí)領(lǐng)域。架構(gòu)師的眼界一定要開闊,絕對不能局限于眼前的小范圍事務(wù),否則極易出現(xiàn)“鼠目寸光”的后果。這就需要架構(gòu)師不斷學(xué)習(xí),這里的學(xué)習(xí)既包括技術(shù)上的,同時(shí)也包括業(yè)務(wù)上的以及溝通上的。
E. 領(lǐng)域知識(shí)。架構(gòu)師務(wù)必對自己所從事的業(yè)務(wù)領(lǐng)域有深刻的認(rèn)識(shí),他未必要成為業(yè)務(wù)專家,但他一定要對業(yè)務(wù)知識(shí)有深刻的理解。很難想象經(jīng)常從事金融領(lǐng)域項(xiàng)目的架構(gòu)師能輕松設(shè)計(jì)好電信領(lǐng)域的項(xiàng)目架構(gòu)。知識(shí)需要積累,業(yè)務(wù)也是這樣的。
F. 處理系統(tǒng)非功能性需求的本領(lǐng)。架構(gòu)師尤其需要對系統(tǒng)的性能、容錯(cuò)、并發(fā)等非功能性需求方面有獨(dú)到的認(rèn)識(shí)與解決辦法。一個(gè)項(xiàng)目到了后期,往往都是這些問題成為整個(gè)項(xiàng)目的瓶頸,這時(shí)架構(gòu)師就要發(fā)揮其優(yōu)勢了。
架構(gòu)師之路是崎嶇的,充滿了荊棘與挑戰(zhàn),但這卻是無數(shù)開發(fā)者的夢想。架構(gòu)師是多項(xiàng)技能與素質(zhì)的綜合體,每一位以此為目標(biāo)的開發(fā)者都需要在平日的工作中不斷提升自己,在這里我衷心的祝愿架構(gòu)師這個(gè)夢想能照進(jìn)每一位有心人的現(xiàn)實(shí)。