針對技術人員,職業(yè)發(fā)展有以下幾種可能:繼續(xù)專精技術、轉(zhuǎn)型管理和晉升架構師。本篇文章不灌雞湯,不販賣焦慮,靜靜地聊一聊一個多年的資深技術人員如何成為為一個優(yōu)秀的架構師。
聚合數(shù)據(jù)大數(shù)據(jù)部門的技術總監(jiān)曾說過,架構師并不等同于資深的程序員。架構師和程序員之間的區(qū)別,有點類似于工匠和架構人員的區(qū)別,工匠其實是做好自己的工作,并且把自己的工作做到極致。架構師除了對自己的工作有足夠的自信,還能夠幫助別人來解決問題,并能幫助組織和整個系統(tǒng)來完成整體的工作。
從這一點來看,架構師在做架構之前,對問題的定義至關重要。因為他需要發(fā)現(xiàn)利益相關方,從多個角度去認真理解真實的需求,同時要抽象出核心的概念以及核心的需求,然后,需要對問題進行切分,在這個過程中我們必不可少地涉及到組織或人,這也是很多架構師可能會忽略的問題。實際上每一個架構的背后,都必不可少地涉及到人的問題或者組織的問題。
阿里 p9 專家李運華曾言
提供線索的編輯后來我?guī)Я藞F隊,看到幾乎每個程序員在嘗試架構設計的時候,都面臨著我曾經(jīng)遇到過的各種困惑和瓶頸。特別是我作為職業(yè)等級晉升評委的時候,發(fā)現(xiàn)很多同學技術能力很強,業(yè)務也很不錯,但卻卡在了架構設計這方面
這里提到的問題,其實是思維上的幾個誤區(qū),架構設計的關鍵思維是判斷和取舍,程序設計的關鍵思維是邏輯和實現(xiàn)。任何一個優(yōu)秀的架構師都有自己獨特的思考方式,這決定了他如何抽象系統(tǒng),以及如何“創(chuàng)造性地”設計與構畫這個系統(tǒng)。例如,我們一直在討論的“架構思維”——這樣一個內(nèi)在的系統(tǒng)與規(guī)則都是未可知的新東西。對此,我們沒有現(xiàn)成的、成熟的詞匯去描述它,因而必須構建一個抽象系統(tǒng),或映射或重現(xiàn)這個“架構思維”,進而闡述清楚它的架構與邏輯。
其次,很多人認為架構師需要足夠高的天賦才可以,他設計的架構設計必須要高大上才能體現(xiàn)架構師能力;架構一定要具備高可用,高性能,分布式等特點,這其實是完全脫離業(yè)務的程序員思維,完全沒有考慮到業(yè)務需求以及如何去尋找業(yè)務與架構上的平衡點。
架構這個東西沒有一套放之四海而皆準的模版供你使用,因為每個公司的業(yè)務都是千差萬別的,但是既然可以作為一種職業(yè),如果把它抽象到一定高度,還是能找出許多共同點。
首先,雖然架構這個職業(yè) title 很高大上,是架構師,但本質(zhì),架構師首先得是個能力極強的程序員,需要能基本了解常用平臺,語言,數(shù)據(jù)庫等的特點,并能根據(jù)需求搭配出適用的開發(fā)配置方案。
其次,架構師要有技術說服力。身為一個架構師,不是把自己的代碼寫好就可以了,需要把你所構思的想法說給別人聽,并能讓別人理解并接受你的設計想法。
再次,既然身為架構師,就代表著要終身學習,你要盡可能的理解最新資訊,更新最新技術理論,雖然很多新的技術你不一定要精通,但是你最起碼要知道了解。
最后,送給廣大程序員朋友的建議,除了上面的幾點,身為一個架構師,需要建立完整的知識體系,善于吸收前輩的經(jīng)驗,然后你會發(fā)現(xiàn),你能解決的不只是一個問題,而是可以解決一類問題。
同時,最重要的一點,你要具備高效、準確的溝通能力。這有點像上面說的技術說服力,你要能夠非常清楚的把自己的想法描述清楚并有效的傳遞給你的老板,負責業(yè)務上的同事。很多技術人員在溝通的時候習慣經(jīng)常說一些技術術語,這其實非常不利于業(yè)務人員來理解你的想法。
最后,如果你也正在苦惱如何從一個資深的軟件開發(fā)人員成長為一個合格的架構師,不妨關注一下極客時間最近推出來的《從零開始學架構》這個專欄,專欄作者是阿里 p9 的專家,學習本專欄,你可以掌握通用的架構設計原則,無論是何種業(yè)務或技術,架構師在判斷和選擇的時候有一套方法論可以參考,避免架構設計舉棋不定,或者拍腦袋式設計。
聯(lián)系客服