【51CTO獨家特稿】架構(gòu)師,聽起來是如此神秘的一個稱號。尤其是在開發(fā)領(lǐng)域剛?cè)腴T不久的菜鳥級程序員眼中,架構(gòu)師都是高手,都是牛人,都是如此高高在上的存在。
51CTO開發(fā)頻道年終巨獻:架構(gòu)師最怕程序員知道的十件事
不過,在搞了四、五年編程之后,程序員們往往早已失去了當年對這些“高級”職位的神秘感,甚至?xí)ψ约核陧椖康募軜?gòu)師抱怨不已,背后里稱他們是一群水王。所以有江南白衣曾撰文述說:“國內(nèi)的架構(gòu)師到了三十歲以后很多就往理論上跑,而國外的架構(gòu)師在往上發(fā)展的同時保持下面的編程體驗,所以國內(nèi)多水王,而國外則多大師。”
這就是我們今天這篇文章的論題:一個優(yōu)秀的軟件架構(gòu)師,首先一定是一個出色的程序員。
這句話按照Fred George先生的話來說,那就是“不編程的架構(gòu)師的職業(yè)生涯是短暫的”。他說這句話的背景主要是針對有些架構(gòu)師的設(shè)計與實現(xiàn)有斷層的問題而言的,因為如果架構(gòu)師不去實踐,只是想當然的認為“沒問題,這個想法能實現(xiàn)”,那么對于項目的落實而言是個很大的隱患。支付寶架構(gòu)師馮大輝也表示過,架構(gòu)師是一個比較“虛”的崗位,主要的問題都在“落地”的過程中。
而一個架構(gòu)師確認一個想法究竟能不能落地的最直接的方法,就是自己編寫代碼,嘗試“實現(xiàn)一個系統(tǒng)最難實現(xiàn)的一部分”(Fred George)??纯碏red,他自己就是最好的示范:年紀一大把了,仍然每天都在編寫代碼。事實上,我們可以列舉出一個長長的頂級架構(gòu)師的列表,你會發(fā)現(xiàn)他們沒有一個不是頂級的程序員。
我們可以列舉出一個長長的頂級架構(gòu)師的列表,你會發(fā)現(xiàn)他們沒有一個不是頂級的程序員
不過這在邏輯上或許沒有多少說服力,因為似乎這并不能證明一位資深架構(gòu)師憑自己的經(jīng)驗感覺不能夠知道一個想法能不能落實。如果你覺得上面這些只是某些西方老頭兒對編程的古怪癖好,那么不妨看看eBay的架構(gòu)師Randy Shoup先生是如何總結(jié)架構(gòu)師在項目中的職責(zé)的:
1. 產(chǎn)品團隊要做一個新產(chǎn)品,架構(gòu)師開工了。架構(gòu)師要幫助產(chǎn)品團隊把可行性、技術(shù)需求以及權(quán)衡取舍等因素一一剖析清楚。
2. 技術(shù)需求出來了,架構(gòu)師的主要工作開始了:設(shè)計整體的技術(shù)實現(xiàn)步驟。Randy在后面補充說“大多數(shù)成功的架構(gòu)師都喜歡與其他團隊成員一同完成架構(gòu)和設(shè)計這一塊的工作”,而認為自己應(yīng)獨自完成這個步驟則是新手架構(gòu)師常見的誤區(qū)。
3. 與開發(fā)團隊一起,完成設(shè)計與實施的細節(jié)
4. 與開發(fā)團隊和運維團隊一起,完成部署的過程
5. 與運維團隊一起,進行部署之后的維護和故障排除
只要稍微思考一下,就會明白此舉的重要性。如果一個架構(gòu)師靠命令管理開發(fā)團隊,告訴他們“要實現(xiàn)這個模塊”,“要實現(xiàn)那個功能”,而團隊也嘗試照辦??墒腔蛟S是架構(gòu)師的要求太高了,或許是團隊的開發(fā)實力不夠,團隊成員便會向架構(gòu)師求助:您看這個我們不知道如何實現(xiàn),您能否指導(dǎo)一下?架構(gòu)師可能知道怎么處理,也可能沒有仔細思考過這個問題,但又覺得自己做大事者不拘泥于小節(jié)也,于是一皺眉頭扔下一句:這是你們的事,你們自己解決!
然后就是矛盾的開始了。架構(gòu)師只覺得團隊技術(shù)不夠,而團隊則對架構(gòu)師愈發(fā)不滿。項目黃了不說,開發(fā)團隊中也會傳出各種說法,比如說“此君其實是個一行代碼也不會寫的大忽悠!”
綜上所述,便映證了Fred的那句斷言:“不編程的架構(gòu)師的職業(yè)生涯是短暫的”。一個架構(gòu)師不僅要會寫代碼,還必須要能夠?qū)懗鲎约涸O(shè)計的系統(tǒng)中最難實現(xiàn)的那段代碼。這樣他才能夠放心的把“落地”的這個重擔(dān)交給開發(fā)團隊來做。
讓我用Fred的這句話做為本篇的總結(jié):“一個架構(gòu)師的價值在于,他不僅能看到系統(tǒng)的美,而且能夠在建造系統(tǒng)的時候能夠把這些美創(chuàng)造出來。”
是的,每個好架構(gòu)師都是一位出色的程序員。
本文為《架構(gòu)師害怕程序員知道的十項技能》中的優(yōu)秀程序員篇。