架構師,聽起來是如此神秘的乙個稱號。尤其是在開發領域剛入門不久的菜鳥級程式設計師眼中,架構師都是高手,都是牛人,都是如此高高在上的存在。不過,在搞了
四、五年程式設計之後,程式設計師們往往早已失去了當年對這些「高階」職位的神秘感,甚至會對自己所在專案的架構師抱怨不已,背後裡稱他們是一群水王。所以有江南白衣曾撰文述說:「國內的架構師到了三十歲以後很多就往理論上跑,而國外的架構師在往上發展的同時保持下面的程式設計體驗,所以國內多水王,而國外則多大師。」
這句話按照fred george的話來說,那就是「不程式設計的架構師的職業生涯是短暫的」。他說這句話的背景主要是針對有些架構師的設計與實現有斷層的問題而言的,因為如果架構師不去實踐,只是想當然的認為「沒問題,這個想法能實現」,那麼對於專案的落實而言是個很大的隱患。[支付寶架構師馮大輝]也表示過,架構師是乙個比較「虛」的崗位,主要的問題都在「落地」的過程中。
而乙個架構師確認乙個想法究竟能不能落地的最直接的方法,就是自己編寫**,嘗試「實現乙個系統最難實現的一部分」(fred george)。看看fred,他自己就是最好的示範:年紀一大把了,仍然每天都在編寫**。事實上,我們可以列舉出乙個長長的頂級架構師的列表,你會發現他們沒有乙個不是頂級的程式設計師。
我們可以列舉出乙個長長的頂級架構師的列表,你會發現他們沒有乙個不是頂級的程式設計師
不過這在邏輯上或許沒有多少說服力,因為似乎這並不能證明一位資深架構師憑自己的經驗感覺不能夠知道乙個想法能不能落實。如果你覺得上面這些只是某些西方老頭兒對程式設計的古怪癖好,那麼不妨看看ebay的架構師[randy shoup先生]是如何總結架構師在專案中的職責的:
產品團隊要做乙個新產品,架構師開工了。架構師要幫助產品團隊把可行性、技術需求以及權衡取捨等因素一一剖析清楚。
技術需求出來了,架構師的主要工作開始了:設計整體的技術實現步驟。randy在後面補充說「大多數成功的架構師都喜歡與其他團隊成員一同完成架構和設計這一塊的工作」,而認為自己應獨自完成這個步驟則是新手架構師常見的誤區。
與開發團隊一起,完成設計與實施的細節
與開發團隊和運維團隊一起,完成部署的過程
與運維團隊一起,進行部署之後的維護和故障排除
在這個過程中,乙個架構師至少有一半以上的工作是需要與開發團隊一起進行的。按照randy的描述,這是「乙個架構師不能將實施細節拋之腦後」的體現。而且與開發團隊一起工作,命令式的領導方式並不被推崇,乙個架構師必須通過自己的個人影響力來對開發團隊進行指導工作。而什麼是影響力?說的直白一些,就是通過自己寫**以及和其他成員一起寫**,來指導團隊成員實現每個架構細節的思路。
只要稍微思考一下,就會明白此舉的重要性。如果乙個架構師靠命令管理開發團隊,告訴他們「要實現這個模組」,「要實現那個功能」,而團隊也嘗試照辦。可是或許是架構師的要求太高了,或許是團隊的開發實力不夠,團隊成員便會向架構師求助:您看這個我們不知道如何實現,您能否指導一下?架構師可能知道怎麼處理,也可能沒有仔細思考過這個問題,但又覺得自己做大事者不拘泥於小節也,於是一皺眉頭扔下一句:這是你們的事,你們自己解決!
然後就是矛盾的開始了。架構師只覺得團隊技術不夠,而團隊則對架構師愈發不滿。專案黃了不說,開發團隊中也會傳出各種說法,比如說「此君其實是個一行**也不會寫的大忽悠!」
綜上所述,便映證了fred的那句斷言:「不程式設計的架構師的職業生涯是短暫的」。乙個架構師不僅要會寫**,還必須要能夠寫出自己設計的系統中最難實現的那段**。這樣他才能夠放心的把「落地」的這個重擔交給開發團隊來做。
讓我用fred的這句話做為本篇的總結:「乙個架構師的價值在於,他不僅能看到系統的美,而且能夠在建造系統的時候能夠把這些美創造出來。」
是的,每個好架構師都是一位出色的程式設計師。
軟體架構師的十大特點
1 相關技術知識 在相關技術領域具備紮實的專業知識。2 分析 設計的能力 具備很強的分析和設計能力。能運用設計模式解決各種各樣的問題。3 編碼與驗證性測試 poc 熟悉該組織整個技術棧,並能使用各層的技術熟練地編碼。能快速實現驗證性測試。4 架構設計的實力 能為原始需求提供架構方案。考慮周全 工具和...
軟體架構師應具備的十大特點
4141 軟體架構師 設計模式 開發者軟體開發測試 如果有人問你,作為乙個軟體架構師需要哪些特質的話,你會怎麼回答?從技術層面上講,架構師的技術要求是首位的。除此之外在做人處事方面,更有魅力的架構師則更受歡迎。最近有個同事問我,是什麼成就了乙個架構師。下文就是我的回答,適用於各個技術領域。其中我故意...
架構師之路(十)
架構師之路 十 作為一名軟體開發人員,成為架構師是追求之一。系統架構師的能力不僅僅體現在書寫業務 上,更重要的是系統的結構和效能,是否具有可拓展性 高併發性和穩定性。最近乙個人在寫websocket服務端,最後完成了,有很多分享的地方,特意總結如下 為什麼要使用websocket?websocket...