我的靜謐成長歲月: 劫後重生

技術人成長,卻不僅僅是技術上,其中很重要的一面是心智的成長,心智的成長跟個人的思考習慣相關,思考習慣又和一個人的性格有著密不可分的聯絡,性格又主要是由成長環境和教育鑄就的。
我不僅聊過自己的少年時代:
也聊過自己的大學時代:
還聊過自己的職場初期:
如果你看過了,會覺得這其中有苦有樂,有笑有淚。而我在回憶過去的時候,偶爾有那麼一點點懊惱,但也不會深切地抱怨什麼。首先是成長環境,我們生下來是沒法自己選擇的,而我們也不應該因為沒有好的環境而怨天尤人甚至怪罪於父母。其次,在我們的成長過程中,其實是有一些選擇機會的,可能我們因為性格或其它方面的原因,沒有辦法去抓住那樣的機會讓自己變得更好,這可能是有些懊惱的原因。然而,我認為每個人在特定的成長背景和環境下,都具有侷限性,不管是思想上還是能力上的,那麼我們能做的,就是反思過去的不足,力爭在將來面臨其它選擇時,能表現得更好。而現在,應該選擇與過去的自己和解,而不是帶著滿腔怨氣面對未來。
一雙涼鞋,短褲和背心,再加個程式猿標配的雙肩包,我就這樣在一個大雨滂沱的傍晚,搭上了從北京開往深圳的列車,時長23小時。列車開動後很長一段時間內,我都是面無表情地望著車窗外,好像在期待著這場大雨,洗去這些年來所有的頹意和迷茫,好讓我在深圳有一個嶄新的開始。
我買的是硬座票,雖然有座位,但列車非常的擁擠,過道上都站滿坐滿了人,還有一些人直接鑽到別人座位下面,躺著睡地板,呼嚕打得可香了。我在座位上腿伸不直,再加上平時也有點失眠症,怎麼也睡不著,心情複雜又激動,複雜是因為將要到一個自己完全陌生的城市,激動是心中渴望一個新的開始。
插曲:直到多年後我再次坐火車,第一次買了臥鋪票,我才知道只要加一百塊錢,就可以完全不用感受那些擁擠,可以不用穿過、跳過擁擠的人群才能去到洗手間。雖然我的身體裡一直流淌著艱苦樸素的血液,但不可否認的是,貧窮,又一次限制了我的想象力……
到深圳時,天快黑了,我在車站附近的一家旅館住了下來。第二天天剛亮,我醒了過來,就離開了旅館。然而這時候我還沒有明確的目的地,就在附近走走,反正對我來說,到哪兒都差不多。走到兒童公園裡面時,腳起泡了,感覺很累,於是就躺在一塊大石頭上休息。沒想到這一休息,就睡了過去,醒來的時候,慌忙摸摸揹包和褲袋裡的錢包,沒有丟失,才舒了一口氣。繼續走著走著,走到龍崗區布吉鎮,看到居民區裡有很多房屋出租資訊,我沒有多想,就立馬租了個單間,先安頓再說,反正月租370塊比住旅館便宜多了。
跟房東辦完入住手續,我買了條涼蓆,鋪到房間裡本來就有的一張破舊床上,關起門來,就躺了上去,一種終於有安身之地的感覺瀰漫心間。我感覺實在太累了,心想不管那麼多了,就算天要塌下來,也要睡一大覺先再說,就這樣沉沉睡去了。
前邊說過,我到深圳來並沒有明確的目的地,而是先看看再說。那個時候的我,也並沒有找工作的打算,在北京開店搞網站失敗對我來說只是暫時的失敗,我還不願意承認自己暫時不具備創業的能力。其實在上一份工作離職之前,公司大領導挽留了我,說如果我覺得部門領導或者誰不好相處,可以協調之類的,我說沒有這個問題,完全是因為想自己出去闖。他說你是否做好了準備呢,很多方面可能還不夠成熟,我回答說會在鍛鍊中慢慢成熟的,他也不好說什麼了。有些前同事也跟我說,我這個人的性格可能不適合單打獨鬥,而我就偏偏不信,我覺得人家只看到我的表面,而我關注的那些東西,我所瞭解的行業及資訊,他們根本就想不到。創業成功的人,有各種各樣的性格,外向內向的都有,不是說話不多的人就不適合創業,因此,我心裡還憋著一股勁,就是要證明自己。
那個時候,我畢業了三年,上班時間大概兩年多點。那兩年掙到的錢還掉了助學貸款,在老家蓋了一小房子,又因為開店期間沒掙到什麼錢,所以到深圳時,身上只剩三千多塊。我在想著,那麼多人白手起家,我三千塊錢,是否也可以起家?
我每天輾轉反側難以入眠,還是沒有辦法開始做任何事情,曾經想去應聘酒店的臨時工作,那種可以跟人打交道比較多的工作,我知道蛻變是會痛苦的,但卻願意去經受。同時在學習一些SEO(搜尋引擎優化)相關的知識,並且想去兼職做SEO,因為這樣對自己之後創業的推廣也有幫助。又花了點時間寫C語言培訓課程,想在那裡的小鎮上搞個網上培訓。現在多年過去了,我都驚訝於當時自己的膽量,才畢業三年,並沒有太多的IT行業經驗,乳臭未乾就盤算著去傳道授業了,也許這就是無知者無畏。
就這樣過了兩個星期。有一天,突然接到家裡的電話,說老媽住院了。我趕緊跟在醫院的她通了電話,說我第二天就回去。老媽用微弱的聲音說,你回來又要影響工作了,而她並不知道,我當時並沒有上什麼班。可憐天下父母心,自己重病不起,想著的還是孩子的工作是否受影響。我感覺有些不妙,二話沒說就去附近的車站買了張票,第二天就回老家並趕去醫院了。
很遺憾我的這一回去,並沒有能留住母親,在父親離開不久後,她又永遠地離開了我們。於是我,徹徹底底淪為了,這個美麗世界的孤兒。幾天後,我就回了深圳,我知道往後的日子裡,身在異鄉的我,將少了一絲牽掛,卻多幾份空落,或伴著苦笑。
這種情況下,我已經摺騰不起了,只能找工作。不過又很快地,我在南山科技園找到了工作,職位是Windows開發工程師,待遇比之前上班也提高了不少。我感覺還可以,畢竟差不多一年沒上班,沒有在Windows開發上有精進了,但還能拿到滿意的待遇。這次,我對自己工作上的要求只有四個字:心無旁騖。
公司是做儲存起家的,而我的任務是改進他們客戶端的使用體驗,讓使用者訪問他們遠端儲存系統就像訪問本地硬碟一樣。面試時面試官對我的要求是,在Windows開發方面獨擋一面,後來證明確實如此,畢竟部門只有我一個人做Windows開發。我採用擴充套件資源管理器的方案來做,並實現像SVN那樣桌面右鍵擴充套件的功能,同時還寫了瀏覽器下載外掛,再配以一個類似網盤客戶端的管理軟體。全部設計和開發都是一個人完成。後來,領導覺得我一個人雖然能做完,但未免太寂寞了(也許是開玩笑),讓我招聘一個新人來一起開發。我招了一剛畢業的研究生小夥子,小夥子做事勤勤懇懇,責任心滿滿,週末也喜歡來公司呆著,這樣我就輕鬆了許多。後來我離開這家公司後,小夥子去了華為,聯絡也少了,不過這麼肯加班的年輕人,應該發展得也不錯。
我在這家公司的總體表現也還可以,在一次考核中,直接領導給我的評價是Windows程式設計專家,而我自認為沒有達到這個水平,畢竟只有三年的工作經驗。平時工作上的事情應付起來比較輕鬆,更多時間,我主要自學Windows核心驅動開發,因為一直對程式破解、逆向比較有興趣。兩年後我離開這家公司的原因,主要是Windows上的事情越來越少了,而我也想轉到Linux方向,但公司並沒有相應的職位可以調整。這期間工資也有漲過,所以在薪資上並沒有什麼太多不滿意,主要還是覺得,我所學的核心開發知識,在這裡沒有用武之地,對自己技能的成長不利。
緊接著,我迎來了在深圳的第二份工作,入職一家小型的雲端計算公司。當時雲端計算已經火了好幾年了,而我還以為只是概念上的炒作比較多,平時也沒太留意相關的技術。這家公司想使用一個叫做USBIP的開源專案,實現的效果就是在遠端伺服器插上一塊U盤,然後在客戶端電腦訪問這塊U盤時,好像這塊U盤直接插在客戶端電腦主機上一樣的使用體驗。但這個專案原始碼涉及到Windows和Linux核心驅動開發,他們公司裡沒有人能搞定,而我有點核心基礎,又宣稱對核心有濃厚的興趣,就被錄用了。
即使沒有任何Linux程式設計基礎,經過一個多月的摸索,進行Windows核心、Linux核心程式碼的除錯後,我對這個專案的原始碼基本理解了。寫了一個剖析文件,這個專案就算是基本完成了,可惜並沒有真正使用起來,可能跟當時的客戶需求有關。然後被安排去做一些伺服器/交換機規劃、配置方面的工作,再之後,就是各種虛擬化平臺的部署工作。在內部,我們給這個專案起名叫雲工廠(Cloud Factory),意思是生產各種私有云的工廠,達到的效果是:使用者按我們的規劃布好線、連線好伺服器交換機等裝置,然後通過圖形介面點選諸如“部署XenServer”按鈕,半個小時候,一個XenServer叢集就安裝配置好了;點選“部署vSphere”按鈕,同樣半個小時候,一個vSphere叢集就部署配置好了。這個專案除了Web介面開發,其它部分都是由我一個人完成設計開發。
因為這個專案,我真正接觸到了雲端計算,並一頭紮了進去。要想搞好雲端計算平臺,需要你具備計算、儲存、網路等方面紮實的知識,而我只在Windows方面開發多年,對網路的很多東西似懂非懂。要把專案做好,我必須拼命去學習和補上這些知識。
我發現有些同事在這裡從事雲端計算相關的工作幾年了,對雲端計算的一些思想及模式並不瞭解,只會按照網上的教程把一個叢集搭建起來。而在我看來,如果一個雲廠商的很多系統工程師只達到這種水平,我是儘量不要成為他們的客戶的。在虛擬化方面,我不僅要理解各種技術的基本原理,還需要深入到Xen、KVM這些開源虛擬化技術的原始碼層。在網路方面,要熟悉主流的SDN方案,對路由器交換機的配置、Vlan劃分等原理都能理解並且有實踐。在儲存方面,對主流的儲存技術,各種方案的優劣都要了解,並且能夠面對不同的客戶給出不同的合理的解決方案。
那時候,軟體定義計算、軟體定義網路、軟體定義儲存的概念都比較時髦,而VMWare提出了軟體定義資料中心的概念(SDDC),並認為這將是雲端計算的終極形態。我一直跟進這些理念和技術,還對當時最流行的開源虛擬化平臺OpenStack的原始碼進行了一系列剖析並放到了個人技術部落格上。當時這家公司沒有年終獎,沒有公積金,社保也基本沒交,但卻是我呆得最久的一家公司,君子能屈能伸,我要在這裡完成徹底的技術轉型,即從Windows桌面開發轉向Linux伺服器開發及運維。這期間,我同樣深入去學習了部分Linux核心程式碼,並將這些原理和Windows核心原理進行比較,想弄清楚這些設計的不同是如何形成的或者是出於什麼目的。為了更好地掌握,我還利用幾個週末的晚上,翻譯了國外的論文,在這裡: Linux和Windows裝置驅動架構比較 。
總的來說,我在這家雲端計算公司得到了極大的成長,也完成了個人的技術轉型。三年後準備離開的時候,我覺得周圍已經沒有人可以交流雲計算相關技術了,我跟公司的技術總監說,希望再利用幾年的時間,讓自己成為雲端計算領域名副其實的專家,但繼續留在這裡的話,恐怕無法完成這個願望。我的工作之前一直是直接向技術總監彙報,他對我的技術面也比較瞭解,曾經在內部會議上跟一些同事說,大家有什麼問題可以來找我,我什麼都懂。其實我並不是什麼都懂,能給他這種印象,是因為他每次到我工位上,基本上我都是在看英文資料,滿屏的英文,好像在偷懶不做事情,但卻總能按時完成工作任務。有一次他跟我談起寫作業系統的話題,我馬上開啟自己電腦上儲存的關於自己動手寫作業系統的書籍資料,並跟他說我之前研究過一些,然後他又跟我聊起程式語言,說如果能設計一門語言怎樣怎樣,我又馬上拿出程式設計語言的文件資料給他看,並奉上了知乎上很有名的輪子哥的一個系列《如何設計一門語言》。因此,技術總監整體上比較認可我,於是說了一些挽留的話,比如說我可以給你漲工資到多少多少,我表示了感謝,並表示自己去意已決。
因為在我看來,當時公司老闆傾向於玩概念,什麼概念新就炒什麼,這樣的話其實公司在哪方面都沒有深厚的積澱,而對時髦的技術,倒是什麼都懂一點。同時我認為,一家雲端計算公司,沒有幾個虛擬化、網路、儲存方面的專家級人員,想要在市場上有競爭力並能服務好客戶,是極為困難的。雲端計算是大廠或者技術極為先進的新興公司才能玩得起的,而大部分公司,到最後都屬於雲端計算廠商的客戶,只需要懂得如何去使用好雲端計算就可以了。
也在那一年,大資料技術開始時髦起來,我在離職之際也開始學習大資料方面的技術,去了解了大資料在國內外一些大公司的實踐經驗,為自己在職場競爭中增添籌碼。
後來合同快到期的時候,我還沒找好新的工作,但已經決定離開了。我先後面試了深圳不少公司,不過整體上都不太理想,很多面試官可能就工作個三到五年,提的一些問題是我很早就研究過甚至已經忘記了的,讓我對他們的技術反而沒有信心。也有些公司需要某一方面有專長的人才,我在那方面又沒有那麼多經驗,情況比較尬尷。
至今記得比較清楚的是美的雲端計算的電話面試,面試官問了一些我覺得相對有深度的問題,同時兼具廣度,讓我覺得面試官是一個牛人。比如我提到協程,他馬上問我那種實現是對稱的還是非對稱的,我提到作業系統的進執行緒,他馬上問我Linux系統中程序狀態為D(不可中斷遮蔽狀態)是什麼意思,提到C++模板庫STL的時候,問我迭代器失效的問題,重新分配記憶體的問題等等。這個面試讓我們有一種棋逢對手的感覺,於是在一種愉快的氣氛中結束了面試。
然而過了一段時間後,我並沒有接到後續通知,心裡有點小小的沮喪。那段時間家裡人跟我說,可以考慮回南寧了,這樣離老家也近一些,來回方便。我之前已經在南寧買了房子並已裝修好,所以我也聽從家人的意見,將簡歷上可接受的工作地點增加了南寧。
之後,我通過獵頭比較快地拿到了南寧兩家公司的offer,一家是小型的雲端計算公司,給我的職位是技術總監,另一家是智慧農業方面的公司,職位是高階軟體工程師。待遇都差不多,但技術總監職位這家公司離家近一些,而我最後選擇了智慧農業公司,原因我在拙作《漫談中小企業研發技術棧》中有提及,這裡先不贅述了,下一篇可能還會詳細說這個事情。
我決定好回南寧了,最主要的理由是離家近,清明回老家方便,在外漂泊太久了,心已累。就在我正收拾東西準備快遞迴南寧的時候,突然接到美的雲端計算之前那位面試官的電話,說之前因為休假了,沒得及時聯絡我,問我是否考慮他們的崗位。我姑且相信他是真的休假了,並說我已經決定好回南寧,然後他說如果我想法有變化後面又回深圳的話,可以跟他聯絡,我說若有緣再續吧,並表示了感謝。
還記得嗎?之前我從北京到深圳,原因之一是因為人家都說深圳是創業者的天堂,而我在深圳這幾年,並沒有再想著去創業,而是踏踏實實做技術去了。之前看到很多年紀輕輕的人創業成功,我就特別有危機感,而到深圳後,我卻覺得創業什麼時候都可以進行,上班反而不是什麼時候想上就能上的,得有公司錄用你才行,因此,我需要珍惜上班時間,好好做事情,多做各種準備,這樣到年紀大了不容易找工作時,還可以去創業。
幾天後,我在動車上發了這麼一條朋友圈,結束了五年的深圳漂泊之旅。

微信掃碼,進入【技術人成長】社群逛逛。
