架構師是乙個神秘而又神聖的名詞,作為軟體開發領域的設計師,架構師承載著太多的責任和挑戰。對於乙個程式設計師或者工程師來說,架構師就像是乙個目標,一條道路,抑或是一座山峰。如何能夠成為一名合格的架構師?架構師應該具備何種素質?而架構師又是如何做到持續不斷的成長和提高的呢?帶著這些問題,我們請到了五位infoq中文站的編輯,同時也是各領域出色的架構師或者諮詢師,來談談他們心中的「架構師修煉之道」。他們是:
1)在你的心目中,架構師意味著什麼?
張龍:架構師是乙個專案組的靈魂人物,他決定著整個系統的技術選型、整體架構以及模組劃分,同時還可能擔當與領導層的溝通角色,從某種意義上來說,架構師在很大程度上決定著專案的成敗與否,正所謂火車跑得快,全靠車頭帶。2)架構師應該具備何種技能或者素質?王瑜珩:對我來說,架構師一直是乙個很迷惑人的詞,似乎每個人的理解都多少有些不一樣。我認為架構師更像是乙個投資家,需要權衡各方面的利益和風險,反覆思量,最後給出乙個現實可行的方案,爭取用最小的風險獲得最大的利益。
李明:我覺得,架構師不僅僅是乙個頭銜,更是乙份責任。所謂「在其位,謀其政」,我倒是覺得架構師更像是父母,而系統和專案則如同子女一般,需要架構師耐心的呵護和培養。完成乙個專案,絕不是架構師工作的全部。通過**重構和架構改造,讓這個專案如同有了生命一般逐漸成長起來,這才是架構師最終的目標。
宋瑋:架構師應該具備一定的業務知識和業務分析能力,能夠準確地把握需求。要有較強的學習能力,對於新出現的技術、框架和工具,能夠快速掌握。紮實的基本功,能夠把握住技術方向。良好的溝通能力,能夠清楚地表達自己的意圖和想法。3)架構師需要不斷修煉和提高的是什麼?李明:**能力絕對是很必要的。我見過太多隻懂得畫圖的架構師了,「識大體不拘小節」這個說法,在架構師身上並不適用。作為一名架構師,在系統的效能和可擴充套件性上,要有足夠的敏感性,既要充分利用現有資源,又要為長遠做好打算。另外,對業務的理解是很多技術架構師所忽視的地方,只要徹底了解業務需求,技術才能派得上用場。
趙劼:在我看來,乙個合格的架構師需要具備開放的眼光,各種平台、系統、專案隨手拈來皆可組合,唯一的目標則是針對合適的環境選擇合適的做法,這顯然需要在成本和質量之間進行權衡。作為乙個架構師,應該具有很好的「彈性」,在真正的環境中,很少會遇見與過去一模一樣的情況,因此也需要架構師能夠大膽嘗試,靈活應對,使用踏實而嚴謹的做法來進行推測。乙個架構師也必須有著足夠的溝通和交流能力,把自己的想法使用合適的方式告訴別人,並且根據別人的反饋進行不斷調整自己的觀點。沒有東西是永遠正確的,但是乙個人往往會傾向於自己的結論,而作為乙個合格的架構師,需要有能力認識到自己存在的缺陷,使用各種方式進行彌補。
王瑜珩:架構師需要**遠矚著眼未來,從外部功能與內部架構兩方面來考慮可能面臨的變化。誠如周愛民所說,架構師要在開發1.0版的時候就想到2.0、3.0,甚至更遠。然而在考慮未來的同時,也不能脫離現在,不能由於對未來的設想而大幅提高現在的開發成本,萬一未來並沒有到來,所有對未來的投資都將毫無意義。因此架構師需要平衡投資與風險之間的關係,以適當的風險來獲得最大的利益。架構師需要有良好的溝通能力,才能將自己的想法展示給開發團隊中的每個人,確保整個團隊對系統架構的理解是一致的。架構師不能脫離實際,設計乙個無法實現或成本很高的架構。同時對於乙個實際的團隊來說,也需要了解團隊中成員的能力,知道何種架構可為,何種架構不可為。
張龍:很多優秀的架構師都是從乙個優秀的開發人員轉變過來的,但優秀的開發人員未見得都能成為合格的架構師。與架構師相比,開發人員所需擔當的任務相對狹隘的多,其最大的目標就是編寫出精良的**、做好充分的測試以及撰寫高質量的文件等;而架構師所要面對的則相對寬泛得多,除了過硬的技術之外,還需要有良好的表達能力,同時還要有巨集觀的駕馭整個系統的能力。
宋瑋:擴充知識面,學習了解眾多技術及框架的特點和適用範圍。了解非功能特性的相關技術和方法,包括可用性、容錯性、可擴充套件性、可伸縮性等等;了解系統安全性方面的技術和框架以及系統效能和狀態監測方面的知識及工具。除了技術方面,還架構師還應擴充套件自身的業務知識,不斷提高業務分析能力。想要做到持續不斷的學習,保持對各種技術、框架、產品的濃厚興趣是必不可少的,另外還要掌握他們各自的優缺點及相應的適用場景。學習途徑和方式則是多種多樣的,但是有一點是可以肯定的,架構師們相互間經常交流對成長是非常有益的。infoq的《架構師》就提供了乙個很好的交流平台,通過大家的廣泛參與,相信《架構師》能夠在分享經驗、促進交流方面起到積極的作用。對於合格的架構師應該具備的素質和技能方面,張龍還給出的詳細的列表:李明:我覺得這個問題可以從兩個方面去談。一方面,架構師要緊跟技術潮流,了解技術的發展和趨勢,利用新技術、新方法來提公升團隊的生產力,將技術轉化為收益。這就要求了架構師平時要多關注所在領域或社群最新的新聞和報道,最簡單有效的方式莫過於每天都看看infoq中文站了。而另一方面,架構師要培養自己的專業領域。雖然從技術的層面上說,很多解決方案放之四海而皆準。但是,從業務的角度來說,很多行業的解決方案放到另外乙個行業中,未必行得通。這就要求了架構師必須對所屬行業的業務十分了解才行,這也是乙個平日裡需要修煉的地方。
趙劼:架構師的學習過程是痛苦也是美好的,乙個合格的架構師應該可以從學習過程中找到,至少是追求「架構之美」,把架構當作一種「藝術」來對待,並且可以把這種美給傳播出去,帶領技術團隊把這種美變成產品,讓更多人體會得到。
張龍:架構師之路是崎嶇的,充滿了荊棘與挑戰,但這卻是無數開發者的夢想。架構師是多項技能與素質的綜合體,每一位以此為目標的開發者都需要在平日的工作中不斷提公升自己,在這裡我衷心的祝願架構師這個夢想能照進每一位有心人的現實。
有人曾說過,20幾歲的程式設計天才好找,但30多歲的優秀架構師難尋。架構師何其難?除了敏銳的洞察力之外,我認為乙個好的架構師必須具備如下幾方面的素質:通過上面諸位的發言,我們可以看出,架構師得是乙個「全才」,不但在技術上和業務上要做到「兩手抓,兩手都要硬」,更是得需要持續不斷的修煉和學習,才能成為一名合格的架構師。雖然這是一條充滿挑戰的道路,但也同樣充滿了樂趣與收穫,正所謂「無限風光在險峰」,讀者朋友們,你們做好準備了嗎?
系統架構師修煉之道 (1) 序
系統架構師是乙個很虛的職位,也是很多程式猿追求的目標,它代表了一定的技術高度,特別是當今網際網路時代,真正懂架構的人不多,我希望能寫下筆記,記錄我的成長一步步成長歷程,希望能和大家一起分享,一起共勉。做過很多簡單的架構,都屬於copy型吧,突然老闆說,你要有個完整的理論基礎,我忽然意識到很多知識都掌...
讀《測試架構師修煉之道》劉琛梅 筆記001
讀 測試架構師修煉之道 劉琛梅 測試核心 測試策略,測試策略包括 測什麼,怎麼測 主要分解為 1 測試物件和範圍 測什麼,測試物件有什麼特點,測試覆蓋的範圍?2 測試目標 3 測試的重點和難點 根據測試物件的特性確定測試的重點以及難點,如金融產品的特點,安全性 資料,4 測試的深度和廣度,根據測試物...
測試架構師修煉之道 第二部分
1 測試活動可以概括為測試需求分析 測試分析和設計 測試執行和測試質量評估。2 產品測試不應該該是產品研發末端的活動,而應該改是端到端的,在產品研發的開始階段,測試就需要投入。和 好的產品是設計出來的 一樣,測試分析不僅能夠幫助測試更好地認識產品,準備測試,還能反過來幫助開發確認需求,確認產品的非功...