如何成為一名軟體架構師?
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服務,它會顛覆你對雲的理解 | 硬創公開課