1. 程式人生 > >【十年磨一劍】我們能從阿里架構師的身上學到什麼?

【十年磨一劍】我們能從阿里架構師的身上學到什麼?

前言

做技術的,一定不能放棄技術。在精進技術的同時完善其他方面的能力,十年如一日。不忘初心,方得始終。

正文

本文是看到阿里巴巴系統架構師黃勇的採訪記錄有感而發,如有侵權,請聯絡我。下面就一起來看看阿里架構師的十年架構路。

和大家介紹下我目前所從事的工作:我目前從事分散式服務架構的設計與開發工作,在阿里的大資料平臺上進行應用程式開發。

我們整個系統架構採用了“前後端分離”的思想,前端關注資料展現,後端關注資料生產,通過 REST服務將前後端整合起來,所有的應用都是無狀態的,可以做到水平擴充套件。

我們將整個系統拆分成許多“微服務”,服務之間通過統一的介面來呼叫,每個服務是通過容器技術進行隔離,此外服務可釋出到統一的服務管理平臺上,可通過該平臺監控每個服務的執行狀態與生命週期事件,併為服務呼叫者提供了服務發現的能力,可對服務進行平滑升級。

阿里有許多優秀的中介軟體與基礎服務,可以快速幫助我們搭建應用系統,而且這些技術在阿里內部全是開源的,大家可以通過原始碼和文件學習到很多有價值的經驗。阿里也提供了濃厚的技術氛圍,每位同學都非常專注於自己的工作領域,大家對工作一絲不苟,相互配合,方向一致。

我是如何走上技術這條路的?

【2006 年大學畢業】,我離開了母校武漢理工大學。

在院長薛勝軍老師的推薦下,我來到了上海,這個對於我來說非常陌生的地方。我有幸加入了一家名為“動量軟體”的創業公司,這家公司的老闆曾經是亞信科技的 CTO,他也是普元軟體的創始人兼 CTO,他的名字叫黃柳青,他也是薛老師的大學同學。於是就這樣,我的老闆成為了我的老師,我習慣叫他黃老師,包括公司其他資深的同事也成為了我的老師,因為我很想他們身上學到更多有價值的東西。

剛開始工作的時候我學習了什麼是雲端計算?什麼是 SaaS、PaaS、IaaS?我們花了三年時間開發了一款名為 ODE 的 PaaS 平臺,讓使用者可以在該平臺上量身定製自己的軟體,最終為客戶提供基於 SaaS 的產品。確實很驕傲,那時我們已經在做雲了,只是沒想到後來雲會在中國得到這麼好的市場,可能當時只有黃老師一個人想到了吧。

【在 2008 年,我為公司拿回了“第一桶金”】,這也是我從程式設計師轉向專案經理的里程碑。

當時我帶領團隊遠赴深圳,為國信證券公司開發經紀人管理系統,這個專案對於我個人而言卻是一筆至高無上的財富,我開始學習如何與人打交道,如何做需求分析,如何將需求轉變為技術,如何帶領團隊小夥伴一起工作

學到了太多太多,但我依然選擇在我工作第四個年頭裡離開了動量軟體,我剛加入動量軟體的時候,公司只有 5 個人(包括老闆和前臺),當我離開動量軟體的時候,公司已經有 200 人左右了。感謝黃老師!我在他身上學到了很多,他的思想和態度直到今天都還在影響著我。

【我的第二份工作還是選擇了我最熟悉的證券金融行業】,同樣也是一家創業型公司。

在這家公司裡我擔任了技術經理,管理了整個技術團隊,從專案的售前到售後,我都親自帶領團隊來完成。雖然在這家公司我只做了兩年,但在這短短的時間裡,我學會了如何提高開發效率、如何培養技術團隊、如何選拔技術人才、如何建立企業文化

但最後我發現了一個問題,越是想做好,越是很難做好,為了做成一件事情需要做很多的嘗試,做事情缺乏正確並有效的方法。

回想我工作的前六年時間裡,我一直都是在創業公司裡成長,雖然可以快速學到東西,但似乎很難學到更加規範的做事方法。於是【我選擇了新的工作機會,來到了 TCL 通訊】,這是一家相當大的公司,公司的研發管理流程來源於法國阿里卡特公司。

我在公司擔任 Java 架構師職位,也算是整個 Java 團隊的技術負責人,雖然團隊並不是特別地大。我在這家公司做了三年,學到了如何整合現有資源、如何按標準流程去做事、如何設計系統架構、如何進行異地工作、如何跨團隊工作、如何用英文來溝通

說實話,當時我沒有任何的工作壓力,可以按時上下班,從來都不會加班。雖然自己空閒的時間很多,但我並沒有選擇去浪費時間,而是開始寫點技術部落格,也正是因為這些技術文章,才改變了我後續的職業發展道路。

我清楚的記得,那是在【2013 年 9 月 1 日】,我在開源中國(oschina.net)網站發表了我人生的第一篇博文《Smart Framework:輕量級 Java Web 框架》 ,這篇文章影響了我後續兩年。其實說句心裡話,當我第一次寫這篇文章時,我心裡是沒底的,這個框架只是根據自己的理解做出來的一個設想,當時甚至連一行程式碼都沒寫過。我的想法是先將這個思想發表出來,讓大家討論起來,我會做一個決策,然後再親自做具體實現,最後我會將實現過程通過博文的方式展現給大家,後續大家會對我的實現進行點評,我會基於大家的建議進行改善。整個開源過程正好與敏捷的思想是一致的,有效溝通、小步快跑、擁抱變化、不斷改進

也許就是我的技術文章吸引了很多廣大讀者,這裡面不排除想邀請我加入的其它公司。我在【2014 年離開了 TCL 通訊,加入了易傳媒】。為什麼我要放棄如此舒適的工作環境,去加入一家還在不斷拼搏的企業呢?其實我看到的是未來網際網路的發展趨勢,廣告程式化交易以及廣告與大資料的結合,未來最值錢的一定是資料

抱著這樣的信心,我加入了易傳媒,擔任系統架構師職位。當時易傳媒正處於技術轉型的初期,需要將 .Net 全部遷移到 Java,這件事情對於我而言是非常有挑戰的。

我的做法是:

  • 第一步定義開發規範與流程

  • 第二步培養核心技術人員

  • 第三步分階段進行改造

僅半年時間,我們所有的產品成功地遷移到了 Java 平臺,結果出乎大家的想象。公司市場也非常不錯,產品得到了業界的認可,訂單數源源不斷,大家每天都很忙碌,但卻很開心。而易傳媒的“易家人”企業文化,讓我所感動,不管是核心技術部門還是其它支援性部門,大家就像一家人一樣,你的事情就是我的事情。

直到【2015 年初,阿里巴巴與易傳媒建立了合作關係】,兩家公司進行了深度合作,易傳媒公司與阿里媽媽事業部進行了整合,新阿里媽媽從此誕生了,於是我也成為了阿里巴巴的一員,目前負責阿里媽媽大資料品牌營銷產品的系統架構工作。就在兩家公司整合的過程中,我完成了人生中的處女作《架構探險 —— 從零開始寫 Java Web 框架》這本書,目前該書正在各大網上書店售賣,我真心希望這本書能對一些想成為架構師的程式設計師們有所幫助。

我的思考

我可能永遠不會想到,一個架構師的煉成經歷了多少的曲折,多少個日日夜夜對技術的熱枕和鑽研才換來大家對於【架構師】三個字的羨慕與嚮往。

從作者的經歷來看,06年從學校畢業,接觸的是‘雲端計算’這種在當時很超前的領域,這也為作者打下了堅實的基礎。

08年,作者需要帶團隊出差。擔任技術經理的職位,負責整個技術團隊。而這離作者畢業才僅僅2年的時間,讓人不得不感嘆這種進步速度。反觀我們,是否能在程式設計師生涯重要的前兩年打好堅實的基礎,積累豐富的經驗呢?我想大多數人並不能。

說到管理,一個快速發展的行業會推著你往前走,不會等你萬事俱備了才讓你帶團隊,泛網際網路就是這樣一個領域。也許你還沒想過要做管理,而且你的上級也並不希望你做純粹的人力管理,但是“帶團隊”這個事情,卻已經變得不可避免。換句話說,你叫什麼不重要,頭銜也不重要,重要的是,你很快就得帶著一個小團隊做事了。

能在工作的頭兩年裡得到提升管理能力的機會,一方面是幸運,另一方面更是能力。尤其是在技術這個領域,作為一個團隊Leader,最應該拿出手的就是強悍的技術能力,在團隊碰到技術難題的時帶頭攻克。對新手來說,技術的積累、沉澱絕對是重中之重

技術經理的經歷給作者帶來的是技術上的愈加精進,同時還有管理方面的協調和統一。而這,也為作者第二份工作提供了經驗支撐。因此,作者全程參與了一個專案的售前到售後工作,必定培養出了一個對專案的巨集觀認識。雖然也進行了很多必要的嘗試,但是苦於沒有正確有效的方法。

為什麼作者要全程參與?一個優秀的程式設計師,他一定是技術和業務都很精通的人才。碼農不是工程師,碼農只會明確需求和邏輯的情況下寫程式碼。工程師才懂得用技術怎麼解決實際業務問題,用技術驅動業務的發展。

這個世界,缺的是技術過硬又精通業務的工程師,缺的是真正能解決實際業務問題的人,缺的是複合型的人才。

架構師為什麼這麼吃香我想大家也明白了吧?正是因為各個公司之間的業務千差萬別,我們做出來的產品也是截然不同。相同的是:每個公司都想要一位甚至多位牛逼的架構師。

回到作者,在作者經歷了6年的創業公司磨練後,認為自己需要一個更加規範的做事方法,因此來到了TCL,同時也真正地任職架構師職位。我認為這是一個比較重要的階段,在技術已經達到一個相應的瓶頸,團隊管理也已經步入正軌的情況下,那麼接下來該如何提升自己呢?

可以看到,作者學到的(如何整合現有資源、如何按標準流程去做事、如何設計系統架構、如何進行異地工作、如何跨團隊工作、如何用英文來溝通。)更多的是一種工作的方式方法,不僅解放了自己,也解放了團隊,提升了公司的生產力。

這時,又來了一個重點,那就是技術部落格。不少的程式設計師大牛都建議寫技術部落格,具體原因我這邊就不再贅述。希望大家在看完這篇文章後能繼續拾起落下的部落格或者開始寫部落格的第一步。

經歷了這麼多年的摸爬滾打,作者已經有了自己對行業的理解,正如那句“未來最值錢的一定是資料”所說,現在的大資料行業誰敢小覷?最終作者原本供職的“易傳媒”和“阿里巴巴”結為連理,作者也進入了“阿里巴巴”這家偉大的公司,也算是人生的另一個里程碑。

可以看到在作者十年架構之路上,技術總是不變的主題,隨之提升的是管理、思維、眼界、方法論、遠見等一系列各個維度像金字塔一樣的層級。

對技術的追求是程式設計師永恆的主題,也是程式設計師賴以生存的發展之道。要想邁向架構師的方向,技術也是堅實的"地基",否則架構師也只是空中樓閣而已。關於架構師應該掌握的技術棧,我也有一套自己的理解:原始碼分析、分散式架構、微服務架構、併發程式設計、效能優化、團隊協作等。具體的知識點我也整理成了一個Xmind腦圖,同時還請資深架構師錄製了一些視訊,需要的同學可以加群:895244712,這些資料我也分享到了群檔案之中,歡迎大家加群交流。

故事到這裡就結束了,至於未來會往哪裡發展,我們誰都不清楚。但我堅信:是金子總會發光,比起背景,更重要的是堅持不懈的努力。正如文章開頭所說 “做技術的,一定不能放棄技術。在精進技術的同時完善其他方面的能力,十年如一日。不忘初心,方得始終”

那麼,作為程式設計師的你,離架構師還差幾步?

原文連結:https://www.csdn.net/article/2015-09-06/2825621

主人公:黃勇(阿里巴巴系統架構師)