如何成為一名軟體架構師?

Software Architect

這是一個 FAQ。


謝邀!

軟體架構師(以下簡稱「架構師」)可以分為初級、中級、高級等幾個檔次。一流、二流、三流企業對於架構師的要求也自然有所不同。

架構師相當於團隊的技術領導(管理者)、技術負責人,一個團隊的技術核心(人物),有帶十幾人的架構師,也有帶幾十人、幾百人甚至成千上萬人的架構師,分別對應著領導不同規模和複雜度系統開發、不同級別的技術領導力。

優秀的架構師不僅僅需要高智商,還需要待人處世等方面好的情商。架構師需要的掌握的知識、技能結構很廣泛,出眾的編程技術當然是基礎(不然碼農不服),全面的軟體工程、項目管理等知識是必需的,此外還包括管理學、人文等方面。排除個別的天才與神童,這些架構複雜軟體系統的經驗和能力不可能在短時間內輕鬆獲得,需要大量時間的經歷、磨練與積累。

並不是編程高手,代碼寫得漂亮,就能做好企業里的架構師的。好多人技術不錯,經驗也很豐富,但是由於各方面的原因(比如人緣、性格等缺陷)做不好架構師,無法作為一名稱職的技術管理者帶出一個蒸蒸日上、有凝聚力、可持續發展的技術團隊。他們更適合被別人領導,當然也幹得不錯。

初級架構師

以下先說說如何成為初級架構師。初級架構師一般需要大學畢業後 3-5 年的職業經驗,差不多在 25-28 歲這個年齡段。

科學工程素質

開發能力

很多猿小白誤以為開發就是 Coding。No!

編碼的許多(高深)功夫恰恰都在代碼之外,例如演算法、數據結構、設計(架構)模式、分析設計等開發方法論。。。在許多情況下,如果你沒有掌握代碼之外的那些技能,不可能寫出好的代碼。

邏輯思維

抽象思維

英語能力

尤其是熟練的英文閱讀能力。

。。。


成為一名架構師,說難不難,說易不易,我個人經驗

1)首先喜歡技術,對技術要有一顆比較狂熱的心。

2)架構師的成長路徑

首先在項目中要勇於去承擔技術攻堅的任務,這點是必要條件,自己項目的技術都搞不定,

懶惰的話,那離架構師的路肯定會越來越遠。

其次要善於總結在項目中遇到的各種技術問題,包括自己遇到的,和吸納小夥伴門遇到的技術問題

最後在項目中要多和小夥伴交流和研討技術,形成一個良好的技術氛圍,大家相互取長補短。

3)需要藉助多種途徑和方法提高自己的技術

  • 堅持寫博客,記載自己平時遇到的技術問題和經驗

  • 要有一個目標,技術分支太多,首先要選定一個方向,千萬不要一會兒想成為java架構師,一會又想做ios架構師,左右搖擺,最後什麼都耽誤了,先選定一個方向,別想的太多,深入下去
  • 方向選定了,周邊的技術也都需要了解,比如操作系統,資料庫,並發等等。要讓自己能從整體上能把握技術。

  • 多參加行業內的大神的技術交流會,我本人在北京,比如創業街經常會舉辦技術交流,活動行上也有很多技術的交流會,質量都很不錯,

  • 務必抽時間多去和行業內的架構師交流

  • 參加開源社區,提交自己的代碼,與全世界的工程師一起交流和學習技術,github上有很多很好的項目可以參與

  • 多關注架構方面的文章,我在牧虎分享了一些大神門的技術文章,今後會聚合更多的好知識,分享給大家。

牧虎網 - 一站式IT技術高價值資源分享平台

看了很多這方面的文章,大家一直都是在說技術,作為架構師,我感覺下面幾個能力也是不可或缺的。

1)溝通能力:包括對內和小夥伴,對外和行內大神,自己閉門造車或者說固步自封,技術提高的會很緩慢的,需要多走出去和大家一起交流

2)業務能力:能夠把需求進行很好的技術分解,比如,哪塊業務訪問量大,比如哪塊業務可以模塊化等等,技術是為業務服務的,拋開業務談技術都是耍流氓

3)人格魅力:除了帶領技術團隊攻堅,還需要通過自身去影響團隊小夥伴,喜歡技術,愛鑽研,愛交流,一群技術極客的團隊,想著就美


我覺得需要懂得很多很多。

1、知識全面

軟體相關技術都得有了解,軟體硬體都要會, 比如什麼樣的系統應該需要一台什麼配置的伺服器

2、設計能力

需要有良好的設計能力, 一個好的設計業務擴展、需求變更都不是問題

3、管理能力

如果要帶團隊肯定是要有管理能力,不然沒法做項目

4、需求理解能力

技術是為需求服務的, 需求理解能力是必須的,不然怎麼為需求設計更合適的架構

5、溝通能力

能與各層同事有良好的溝通


推薦閱讀:

使用 caddy 作為微服務的 API gateway
是時候想想該怎麼刪代碼了
一次生產事故的優化經歷
英文版本的「弱者道之用」
詳解Serverless服務,它會顛覆你對雲的理解 | 硬創公開課

TAG:編程 | 軟體架構 | 設計模式 | 軟體架構師 |