互聯網的蓬勃發展,讓無數的「屌絲」程序員在一晚上之間,彷彿都變成了「香餑餑」。可是,沒有幾個作開發的同窗真的想作一生「碼農」,不少同窗都但願當上CTO,最終迎娶「白富美」,今後過上幸福美滿的生活。前端
誠然,CTO 的路不是那麼好走的,而其中最重要的先決條件就是你要先成爲一名優秀的架構師,那麼普通程序員如何才能成爲架構師呢?讓咱們聽聽移動開發精英羣裏,這些國內頂級的大牛怎麼說!本文系 OneAPM 市場部王鵬整理。程序員
三生社羣副總裁,ThinkPHP核心開發者羅飛總結:編程
程序員可能的發展路線是什麼?後端
先說說這張圖,它幾乎表示出了一個程序員可能走的全部職業路線。 當咱們剛開始仍是個初級開發的時候只能把本身變成高級,開發者纔能有更多的選擇。你能夠選擇管理線、專家線或者小老闆線。(圖有四個象限,x軸表明金錢, y軸表明時間。)設計模式
咱們學習知識的路線是: 技術->技術+管理->技術+管理+商業。可是隨着階段不同,咱們學習的知識也有不一樣,剛開始咱們只作開發,只須要學習技術知識就好了,後面咱們作到了管理職位,不只要懂技術還要學習管理知識,而後咱們想要成爲CTO\CEO或小老闆,必須得學習一些商業知識才行。安全
想成爲架構師,你須要經歷3個階段的磨練!性能優化
從技術上來說,要成爲高級工程師或架構師,我認爲可能須要經歷3個階段: 實現->借鑑->優化。服務器
第一個階段: 實現架構
在這階段咱們只在意功能的實現,不會考慮性能優化,咱們會以爲一些功能不會作,一些功能本身沒作,咱們只要實現了功能,就以爲頗有成就感。在這個階段中,咱們要多去作事,沒作過的就去作。要注意培養本身的全面能力,前端、後端、服務器等要去接觸。其實,這個階段就比如人類的居住環境,原始人的時候只考慮實現遮風避雨就好了,不考慮住得舒不舒服,因此找個山洞住就能夠了。運維
第二個階段:借鑑
當咱們以爲基本全部功能本身都能實現的時候,咱們會遇到本身的第一個瓶頸,這時候不要自滿,要發現那只是本身的第一個瓶頸而已。其實,咱們每一個人本身的提高空間還很大,這時候建議你們多借鑑別人的東西,看一些開源程序的代碼,其實讀別人的程序能學到不少東西。或許有人認爲別人能實現的本身也能實現,不屑於看別人的東西,但這顯然阻礙了本身進步的空間!
美國一位大師Matt Zandstra說過這樣一句話:「咱們正在努力開發的功能,或許已經被其餘程序員實現過無數次,咱們怎麼不借鑑他們的,而是把重心放在本身特有的業務邏輯上呢?」這個階段我仍是拿人類居住環境來作比喻:人類在必定階段後, 好像能借鑑鳥搭鳥窩的形式,本身能「搭建」茅草屋了。
第三個階段:優化
當咱們功能都能實現了,也借鑑了許多別人的東西時候,借鑑階段也是有瓶頸的,當咱們看了一兩年開源代碼後, 再看新的程序,已經看不出新的編程思想了,感受編程思想都是之前看過的。這個時候,咱們的重心會想着怎麼優化咱們的代碼:
咱們會考慮代碼的可讀性、安全性、可擴展性。這時候建議你們能夠看一些設計模式、編程思想、安全方面的書。 我說的這三個階段可能屬於從初級程序員到高級程序員的階段,離真正的架構師可能還有點距離,由於真正很牛的架構師還會理解公司業務需求,能知道什麼階段用什麼技術!這是很是重要的。
經典語錄分享:
唐巧:個人觀點是,程序員可以成長爲架構師,不只要靠本身的努力,很大程度上也依賴於機遇。淘寶的系統經歷過10次重寫,每次都面臨新的挑戰,這些參與其中的每一個人都獲得了親自的鍛鍊和成長,這也是他們遇上了好時候:電子商務和淘寶的快速發展。
在這波人過了以後,如今的新人若是想在電商系統上有所深刻的成長,再想成爲架構師就很難了,由於他們沒法深刻理解這些設計原理,爲何這樣設計可以避免各類「坑」?
固然,移動開發領域正經歷快速變革和發展的時期,這幾年作移動開發的人,能夠看到這個系統的演進過程,他們極可能成爲移動開發專家。他們也有機會去設計一些很是基礎的、有挑戰的系統,來解決如今移動開發中遇到的問題。總的來講,就是找準趨勢,順勢而爲,纔可能在技術上接觸到挑戰和機會,單純的努力可能不必定有效果。
馮軍:我以爲架構師不在於掌握多少前沿的技術語言和牛逼的技術,而是在於對業務和技術發展的理解,能站在公司的角度,明確在不一樣的階段用不一樣的技術架構,可以快速支持業務的發展,保障平臺的穩健。
並且,架構師的技術棧會多元化,由於架構師不只僅要作好技術(技術不只僅是包含於開發層面,還有前端構建,運維,測試等領域),還要理解業務,不懂業務的架構師不是一名好架構師。固然,架構也不是設計出來的,而是伴隨着項目的發展一步步不斷演進出來的。**
薛偉:程序員在基於本位模塊開發上,應該多想一想支撐業務及總體需求,多考慮支撐業務問題的實際解決,以及突破所轄模塊及端的協做兄弟的換位技術思考。只要多實踐,多務實解決切實問題,就能天然發展成爲架構師,全部技術架構思惟其實都是相通的。
Sama:這個世界上最重要的是人,咱們索要學習的也都是人創造的。因此跟隨大師和領會大師的意圖也很是重要,試想一下你有關注過大師的社交號或者社區嗎?大師的做品有沒有詳細研究過?有沒有天天堅持用谷歌查看如今世界上任何與架構有關的文章?有沒有遇到問題去學習背後的原理?若是你作到了,就說明你已經在架構師的路上了!
還有一點就是工具集,架構師的工具集都是精心對比研究過的,由於在架構師眼裏效率是至上的。正如「王牌特工」裏師傅帶給徒弟的特工「武器庫」同樣!
富麗餅乾:沒有完美的架構,只有最適合需求的架構!架構師更要理解需求,理解產品方向和產品經理的思惟,一味追求技術上完美的架構,最後很容易作成空中樓閣,百度騰訊都很強調架構師對產品的理解和產品經理的溝通能力。
陳馳遠:在技術方面,我以爲架構師首先得了解本身作的業務,業務上有規劃,能找到現階段最適合解決業務上問題的方案,而且對以後的發展有概念和對策。同時,保持對業界技術的關注,知道如何使用新技術解放生產力。永遠只有最合適業務的架構!
此外,借力也很關鍵,架構師得有必定的人脈,遇到本身不擅長的問題,能找到擅長問題的牛人,向他們學習,能夠少走不少彎路!
伍星:架構師的成長離不開平臺的發展。小平臺很難造就優秀架構師,架構師都是在瓶頸和崩潰中成長的!
李帥:基礎紮實,多思考,多實踐!並且每一個人的狀況都不太同樣,須要因人而異,但最根本的就是對編程的熱愛以及對美的思考!(貌似已經提高到哲學的範疇了!)
牛逼的人都是自學成才的,別期望有人能把你教成大牛!(送給全部閱讀本文的程序員同窗)