導讀:魯迅曾說:這世上本沒有路,走的人多了,也便成了路,作為一個非計算機專業的程式員,我的架構師成長之路也許有點另類,但是另類的路走的人多了,也就成了尋常的路,
因為,這世上本沒有路,
作者:李智慧
來源:大資料DT(ID:hzdashuju)

01 初入江湖
大學期間我所學的專業是工業自動化,第一份作業是到一家國企做儀表工程師,就是維修各種化學分析儀器儀表,這些儀表的各種氣路經常出故障,這些氣路管道如果漏氣就會影響化學成分的分析精度,所以我的主要作業就是找到這些氣路管道的泄漏之處,每天拿肥皂水涂在很細小的管道上,觀察是不是有氣泡滲出,
這份作業做了兩年,一想到這樣涂一輩子的肥皂水,我就開始有點崩潰了,以前在大學的時候,我喜歡寫程式,經常用C語言寫各種小游戲給自己玩,所以我就想,能不能找份程式員的作業呢?于是我跑到人才市場去找,也沒帶簡歷,其實帶了也沒用,總不能寫自己涂了兩年肥皂水吧,
在人才市場,我找到一家招聘軟體工程師的企業,跟人家說我會用C語言編游戲,你們需不需要,招聘的人告訴我,他們需要會Delphi的人開發企業管理軟體,我說,我可以學的,我學編程很快的,
對方說,“那你學一下Delphi,編個倉庫管理軟體,編好了再到我們公司來”,然后給我名片就讓我走了,他可能只是想盡快把我打發走,但當時我卻覺得很開心,我有機會換個更有意義和價值的作業了,事實證明,這個機會徹底改變了我的人生,
從人才市場出來,我去新華書店買了一本Delphi編程的書,看了一晚上,覺得學得差不多了,第二天借了個電腦過來開始撰寫倉庫管理軟體,不到一個星期,感覺自己的程式寫得還可以,就拷了代碼跑到那家公司,給他們看——這就是我用Delphi寫的倉庫管理軟體,
就這樣,我從一個涂肥皂水的弱電工程師,搖身一變成為一個寫代碼的軟體工程師,
現在回過頭來看這段經歷,會感激當時年輕的自己,人在年輕的時候,世界是嶄新的,人也是嶄新的,有無限的可能,可以去做各種嘗試,即使嘗試失敗了也不要緊,至少也成了一個有故事的人,而人生就可能在各種嘗試之中找到自己的方向,
剛開始做程式員的時候覺得很緊張,因為自己不是計算機科班出身,沒有系統學習過軟體開發的基礎課程,也不知道能不能勝任作業,于是我買了各種軟體專業的教科書,花了一年多的時間,把資料結構、作業系統原理、資料庫原理、離算數學各種計算機專業基礎都補習了一遍,
這時我又困惑了,教科書里各種高大上的原理在我當時的作業中一個也用不上,天天復制粘貼代碼、資料庫增刪改查,感覺跟以前涂肥皂水沒什么兩樣,當時我就想,要去更厲害的大公司,寫一點有技術含量的代碼,但是,作為一個半道出家,在塞外小城小公司作業的野路子程式員,我連大公司的門在哪兒都摸不著,
于是我決定考研,成為計算機專業的研究生,以此作為進入大公司的敲門磚,
說干就干,我選了一個有技術含量又有前途的專業—北京工業大學人工智能專業,經過努力我考上了,當我興致勃勃去北京參加復試時,結果學校通知,今年報考人工智能專業的人太多,而汽車專業需要有計算機背景的人才,就這樣我被調劑到汽車專業,讀了三年汽車專業的研究生,我的人生之路真是曲折,
我讀研時雖然學的不是計算機,但是還是學了很多計算機專業的選修課,可以說把計算機的專業基礎知識重新扎實地學了一遍,也為自己后面的技術進步奠定了基礎,
人在年輕的時候,要勇于去做各種嘗試,無論成敗曲折,都可能在你未來的成長中發揮作用,人生所有的汗水都不會白費,你的路走得越遠,曾經付出的努力就越能顯現出作用,

02 小試牛刀
研究生畢業之后,我加入了方正,方正接了一個據說是當時最大的國外軟體外包專案,我去報到時,專案經理指著空蕩蕩的一層大樓說,過幾個月,需求確認后進入開發階段,這里全都會坐滿人,但那時只有我們幾個人,坐在一個角落里,每天看外方發來的需求檔案和技術規范要求,
當時,外方找了國外一家技術咨詢公司,負責整體架構設計,但是,這個咨詢公司只給出整體的概要設計模型和一堆技術規范要求,沒有詳細的設計和技術落地方案,我就去找專案經理說,“要實作這些技術要求需要有一個技術框架支撐,現有的開源技術框架都不滿足要求,我們是不是要自己開發一個?”
專案經理說:“確實,但是我手上僅有的幾個技術高手都被派到國外客戶方那里了,國內就你們幾個新人,要不你帶幾個人開發這個框架吧,”
人生的機會通常都是以巨大挑戰的形式出現的,而不是放在禮盒里打上蝴蝶結擺在你面前的,你幾乎不可能以一種愉悅、輕松的方式面對機會,任何恐懼、逃避都會使你錯失良機,
當專案經理跟我說,“你來負責框架開發的時候”,巨大的壓力讓我只想快速逃避這個任務,但是我知道,我一直想要擺脫的涂肥皂水的機會就在眼前,無論如何我都不能放棄,
于是我用周末的時間,研究了相關開源軟體的實作原理,根據外方的技術要求,做了一個技術框架設計,用 UML 畫了三四張架構圖,第二周,專案經理邀請其他部門的技術高手過來做了一個設計評審,然后就開始開發了,
等外派到客戶那里的技術高手回國時,這個技術框架已經開發完成,并且針對一個典型的需求場景開發了一個樣例程式,運行良好,于是這個框架就成為整個系統的核心,也成為開發的基本技術規范,
專案進入開發階段以后,果然每周都有幾十個開發工程師入場,很快就坐滿了一整層大樓,每周我都要給這些新加入的工程師講框架的運行原理、開發的流程規范、介面的實作規則,
所有工程師都遵循框架的介面規范編程,跨團隊開發的代碼不會彼此呼叫,所有的程式都在框架的呼叫下運行,任何對流程的改變都需要經過我的確認,任何對開發規范的調整都需要通過我修改框架來實作,我成了全專案組最核心的人員,這是我第一次體驗到做技術的快樂和做架構的樂趣,
如果你對人生有自己的追求,你遲早會處在某個風口浪尖上,是乘勢而上迎著風浪做個弄潮兒,還是畏懼風雨退縮不前做個旁觀者,人生的選擇,一念之間,

03 拔劍四顧
在方正獲得了大家的認可后,我逐步進入了新的舒適區,隨著專案開發進入后期,框架已經完全穩定,開發規范也已經被嚴格執行,我幾乎沒什么事情可做,雖然作業真的是“錢多事少離家近,位高權重責任輕”,但是自己未來的前途在哪里?我又一次陷入迷茫,
這時,有個朋友跳槽到NEC,問我要不要去,我想既然在這里遇到天花板,不如換個環境試試,于是也去了NEC,但是這次是被當作技術高手請過去的,
我加入的是一個剛成立不久的團隊,團隊職責是配合日本本部維護開發一個類似Tomcat這樣的Java Web容器,客戶給的要求是先研究這個容器,然后再分配具體開發任務,可能也是想了解這個遠在中國的團隊的技術實力吧,
我加入團隊的時候,大家問我,“我們已經把這個容器的代碼都看過了,實作細節也都搞清楚了,但是我們該怎么辦呢?”是啊,怎么讓對方知道我們真的已經完成研究,可以勝任接下來的開發任務,甚至可以承擔一些關鍵的開發呢?
了解了團隊的問題和客戶方面的期望后,我組織團隊對這個Web容器進行了逆向設計,也就是根據代碼反推設計模型,用UML將整個軟體重新用建模語言描述了一次,然后撰寫成一個設計檔案發送給客戶,
我猜客戶收到這個設計檔案還是有點吃驚的,因為他們很快派了兩個人來中國,跟我們當面交流,并表示對我們的技術很有信心,希望我們負責開發一個在Web容器上可插拔的應用防火墻插件,
開發的時候,我本來想自己開發最核心的一個模塊,但看到團隊成員都躍躍欲試,于是就都分給大家去開發了,后來負責這個核心模塊開發的同事聯系到國外一個類似的開源軟體的作者,這個作者給了我們很多建議和指導,
這件事情讓我很震驚,以前我做架構設計,會制定很嚴格的介面規范,限制工程師在開發的程序中自我發揮,以保證整個系統的統一,但是這位同事主動聯系外部資源,結果完成得更加出色,
那時我意識到,把團隊每個人的主觀能動性發揮出來,產生的能量和價值是多么巨大,而在這樣的團隊中作業,識訓的不僅是作業成就和個人成長,還有愉悅的人際關系,
其實當初離開方正到NEC,我也猶豫過,這里作業得這么開心,換一個環境,能不能適應,會不會被新團隊接納?
厭惡風險是人的天性,但是走出舒適區,也許可以看到更廣闊的天地和更美麗的風景,還能識訓更加美好的人生體驗,

04 永遠的江湖
在NEC的作業,隨著產品和團隊的成熟,我又變得無所事事,我決定再去外面看看別的機會,這次去的是阿里巴巴,
我去阿里巴巴面試時,上網看了看它的網站,因為前面做Web容器和應用防火墻的時候,需要開發一些Web應用進行測驗,在瀏覽阿里巴巴的網站時,我發現,雖然這個網站的功能很多,但技術上不過是我們開發測驗用例的水平,所以面試的時候頗有點自大,
面試官可能看出我自信滿滿的樣子,開始問我一些分布式技術相關的問題,也就是海量高并發用戶訪問的技術方案,當時高并發互聯網應用剛剛嶄露頭角,高并發相關的技識訓不是軟體開發領域的主流技術,這些技術當時我完全不了解,面試官看我目瞪口呆,說如果想知道答案就加入我們團隊吧,
我加入的這個團隊也是剛剛成立的,就是后來開發出Dubbo、Fastjson等多個知名開源軟體的阿里巴巴平臺技術部,當時,團隊只有六七個人,其中一個同事坐在我背后,工號14,過了好幾個月我才知道他就是阿里巴巴著名的十八羅漢之一,
其他幾個同事,工號要么很小,一看就是公司元老,要么跟我工號差不多,一看就是新來的,
但奇怪的是,除我之外,其他成員不管新老員工,好像互相很熟的樣子,討論技術問題時他們都非常默契,對彼此的技術思路也很熟悉,技術水平也很高,思維和語速也非常快,每次開會我都有一種跟不上趟的感覺,覺得自己既不會做事也不會做人,非常有壓力,
于是就拼命學習各種互聯網技術,技術水平也很快提高了,
大概過了快半年我才知道,原來幾年前阿里巴巴在開發淘寶的時候,一方面組織了自己的技術骨干,另一方面從一家知名外企請了幾個外包人員,組成了一個開發團隊,開發了淘寶和支付寶這兩個核心產品,開發完淘寶和支付寶后,外包人員就離開了,
后來阿里巴巴要建立平臺技術部,就把這幾個外包人員又挖了回來,把幾個技術骨干也轉崗到這個部門,
這也就解釋了明明是跟我一樣的新員工,卻和公司創業元老關系這么好,明明是從一家不做互聯網開發的外企跳槽過來的,卻對互聯網技術這么熟悉的原因,原來他們曾經一起開發過中國最重要的兩個互聯網應用,
所以,我跟他們關系沒那么好可以理解,我技術沒他們好情有可原,想到這一點,我技術進步的動力忽然沒有了,人還真是一種奇怪的生物呢,
在阿里巴巴作業了幾年后,各種互聯網技術也都熟悉了,我又開始思考,下一個技術浪潮在哪里?其實當時局面也比較明朗,就是云計算和大資料,
后來有一個去Intel的機會,了解到Hadoop大資料很多中國區的開源開發者都在Intel,于是我又加入了Intel大資料團隊,參與Hive、Spark一些開源大資料的開發,
應該說,這些世界頂尖大資料產品的開發者技術水平確實很高,我想大約可以代表軟體開發的頂尖水平吧,和這樣一些人合作開發代碼,使我對軟體編程這件事又有了新的認識,
有句話叫“不忘初心”,我想我這十幾年的職業生涯,一直在追求更好的技術、更有挑戰的編程體驗,這也算是不忘初心吧,還有句話叫“念念不忘,必有回響”,如果你對一件事心心念念、朝思暮想,你幾乎就不會錯過任何機會,也一定會識訓相應的回報,
關于作者:李智慧,資深架構專家,同程旅行交通首席架構師,曾在NEC、阿里巴巴、Intel等知名企業擔任架構師,也曾在WiFi萬能鑰匙等企業擔任CTO,長期從事大資料、大型網站的架構和研發作業,領導設計過多個榷訓用戶在千萬級以上的互聯網系統架構,實戰經驗豐富,曾設計、開發過 Web 服務器防火墻、分布式NoSQL 系統、大資料倉庫引擎、反應式編程框架等各種型別的軟體系統,
本文摘編自《架構師的自我修煉:技術、架構和未來》,經出版方授權發布,

延伸閱讀《架構師的自我修煉:技術、架構和未來》
點擊上圖了解及購買
轉載請聯系微信:DoctorData
推薦語:大型網站技術架構作者李智慧新作,通過架構師的4項自我修煉,構建你的架構師知識體系,完整展示架構師修煉之道,

劃重點????
干貨直達????
資料分析怎么學?我畫了一個導圖,又找到22本書
3個最常見案例詳解DBA日常維護
終于有人把平均數、中位數和眾數講明白了
史上最全!用Pandas讀取CSV,看這篇就夠了
更多精彩????
在公眾號對話框輸入以下關鍵詞
查看更多優質內容!
PPT | 讀書 | 書單 | 硬核 | 干貨 | 講明白 | 神操作
大資料 | 云計算 | 資料庫 | Python | 爬蟲 | 可視化
AI | 人工智能 | 機器學習 | 深度學習 | NLP
5G | 中臺 | 用戶畫像 | 1024 | 數學 | 演算法 | 數字孿生
據統計,99%的大咖都關注了這個公眾號
????
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292657.html
標籤:其他
