談談工作 - 神州數碼篇
本文是之前的文章『談談大學』的姊妹篇。也是拖了很久,才下定決心,寫上一寫。
我的工作歷程不算太長,但也不短,11年工齡,30歲出頭,要寫這麼篇文章,其實很尷尬。刨去創業兩年時光,我也就是9年在企業里工作的經驗,更尷尬的是,這9年時間我就呆了兩家公司,而且還在同一行業,這在瞬息萬變的IT公司看上去比較少見,所以所述未必合大家的心。
為了便於描述,我還是以時間為軸,來展開討論。本篇先講我在神州數碼的經歷。
在『談談大學』里我說到本科畢業後,自己便加入了神州數碼網路公司(DCN)。DCN前身是聯想網路,脫胎於中科院,有濃郁的研發背景,相對於神碼大家庭來說,DCN像是個正在創業的小兄弟。03年正是郭總(郭為)躊躇滿志一展拳腳的時候 —— 與聯想的「兄弟盟約」業已到期,便迫不及待殺入PC市場;同時眼紅於正在興起的移動市場,也玩起了手機,結果多線作戰節節敗退,巨額虧損,財報上單單為手機業務就計提上億港幣(這些也要歸功於麥肯錫給定的戰略啊)。「計提」這種高大上辭彙,我是這時掌握的。神碼大環境的狀況雖然不佳,DCN的小環境卻很好,很「聯想style」地被稱作是二級火箭,相對於整個公司的主營業務 —— 分銷這個現金奶牛,DCN算是神碼的未來,所以氛圍相對寬鬆。接觸的HR姐姐,程序員哥哥都很nice。
初入公司懵懵懂懂間我就被集合做了為期一周的「入模子培訓」—— 這是聯想系經典的企業文化培訓,很多雞湯,很多正能量。現在大家被過多的雞湯搞得逆反,聞「湯」變色,唯恐避之不及。其實,只要帶著腦子聽,雞湯還是蠻好的,反正一周的培訓下來,我是感覺收穫很多。要在一個企業做好,你需要接受它的文化,並懷有工作的榮譽感。柳總(柳傳志)說的很多話:「企業是個模子,你來了以後,必須融入到我們企業的模子當中」,「辦公司就是辦人」,「壘一層土,夯實,再壘一層」等等我都是很認同的。在「入模子培訓」里,我最大的收穫是認識了一群「書生意氣,揮斥方遒」的才子佳人。11年來,風雲變幻,我們依舊相互關心,肝膽相照。
培訓完成後,能量滿滿地投入工作。DCN當時在主打路由器和交換機,我被分到了路由組,主要負責接手即將離任的一個工程師xiahm手上的OSPFv2(一個路由協議)。而他,也順理成章地成為我的mentor。他給了我很大的幫助。雖然在學校里我已經累計了很多開發的經驗,但並未真正接觸過協議(使用socket接觸到的tcp/ip不算),也沒讀過Linux kernel,所以面對由linux + gated(一個開源路由協議平台)組織起來的路由器系統是兩眼一抹黑。xiahm盡心盡責,手把手把我領入了行。
人生中總是很多「第一次」讓你難以忘懷,比如說第一個mentor,第一行運行在商業系統里的代碼。當我為解一個bug第一次提交了代碼,並在注釋中寫下了自己的大名,別提多興奮了。
一個月後,我領到了第一筆試用期工資,扣完稅後大概不到兩千五,這相對於我還在進行中的兼職項目每月能拿到的不菲收入,簡直不值一提。不過,兼職項目能給我收入,卻給不了我成長空間。做人和做公司其實也很相似,是犧牲成長性換取高收益,還是犧牲收益換取高成長性?各有利弊。人生的不同階段需要做不同的選擇,這選擇是很個人的選擇。
那時回龍觀的房子三居室一千八,我和兩個同事zhangchi和chenyj合租。zhangchi是硬體部門的,chenyi和我都是軟體部門的。我和chenyj經常會討論些軟體的問題,所以聊得多些。他常常勸我花五萬元買個回龍觀經濟適用房的號,然後貸款買房。我覺得回龍觀這種鳥不拉屎的地方還要2600元/平,簡直是打劫,堅決不買。現在想想自己那時真是井底青蛙,世界觀無比狹隘,就想著亞運村的花花世界,看不起回龍觀的荒蕪貧瘠。一年以後,我以幾乎類似的理由拒絕了女友在天通苑買個100平50w的房子,固執狹隘地真是可笑可嘆可氣。
zhangchi和chenyi這倆老兄都是努力奮鬥的有位青年,對我影響很大。我們仨很少使用客廳的電視 —— 周末的球賽除外。zhangchi是阿森納的球迷,chenyj是曼聯的鐵杆,那正是英超雙雄死死互掐的年代,每逢比賽,兩人就樂呵呵地冷言嘲諷對方的球隊。除此之外,他們都各自躲在自己的小屋裡刻苦學習,一個準備雅思,一個籌劃移民澳大利亞。這讓每天下班回到小窩裡打打遊戲看看小說的我很不自在,總感覺自己一個人"show me the money"玩星際爭霸1v7充滿了罪惡感。後來我索性卸了筆記本中裝著的這唯一的遊戲,一門心思地讀起書來。孟母擇鄰而居真是很有道理,你周圍的朋友某種程度上定義了你。
談到朋友,就不得不提在入模子里認識的朋友們。我們那時沒事就聚會,一群年輕人在一起遊山玩水,K歌打球之餘,就是聊自己的工作。他們每個人都很有上進心,在這個陌生的城市裡奮力打拚,這一直激勵著我。如果說成功以個人的成就或是社會地位來定義的話,我的這群朋友們都稱得上是成功人士 —— 如今不少人混得都比我強。歲月是把殺豬刀,也是塊試金石,人和人的差距在畢業那一刻並無太大分別,大家的學校也無明顯優劣,但十年的時光,足以將兩個人拉出無法企及的距離。
工作兩三個月後,我已經成為團隊里的熟手。十一長假來臨,我無所事事,決定翻譯rfc2328(OSPFv2)。我這麼做並非心血來潮 —— 工作過程中除了跟linux打交道,就跟這份長長的英文文檔過不去。協議這玩意,用語很講究,MUST,SHOULD,MAY有嚴格的定義。為了一個小小的行為是否符合協議,我得讀一大段精鍊到乾巴巴的文字,然後細細咀嚼。當時我的英文閱讀能力還很差,rfc2328通讀過兩三遍,總是讀了後面忘了前面,所以遇到問題,還得重新翻開再讀。不堪其苦後,我最終決定,利用假期邊讀邊翻譯,邊練手。三五天幾乎日以繼夜地過去後,這份文檔的核心部分終於都翻譯完了,以至於後來我成了團隊中對OSPF把握最清晰的那個人,再讀gated里ospf相關的代碼,就好像一行行代碼爭先恐後地向我解釋他們的來路一樣,頓時輕鬆了許多。(可惜的是,當時互聯網還不發達,UGC並不時髦,這份翻譯稿僅在團隊內部傳遞,現在我自己已經找不到一個拷貝了)
04年我成了團隊的骨幹力量,工資也翻了番。那時DCN正在和ipinfusion談合作,全面使用對方的商業源碼ZebOS(和gated類似的一個商用路由協議平台,包含ospf,bgp,rip等協議,對ipv6有完整支持,ZebOS來源於開源軟體Zebra),我因為英文口語還湊合(其實就是臉皮厚,敢說),便被團隊推舉為代表和ipinfusion的技術人員學習溝通協調。ipinfusion對這次合作非常重視,創始人(兼CTO)ishiguro親自過來給我們展示和教授ZebOS的技術。ishi是個美籍日本人,口音略生硬,但他的英語比把computer發成「狂皮尤塔」的「標準」日式英語耐聽得多。這是我第一次接觸業界傳說中的高人(ishi也是Zebra的創始人),心情忐忑而激動。在講解代碼邏輯的過程中,ishi使用17寸的macbook(當時應該叫powerbook)做各種演示,讓我驚異而艷羨;但最讓我感到震撼的一幕是當我們報給ishi一個bgp的bug時,這哥們從包里變戲法似的又拿出兩個mac,簡單連成一個網路拓撲,然後就開始調試運行。只見他雙手如梭,指尖在鍵盤上迅猛敲擊,游標在屏幕肆意移動,不一會兒,就轉過頭來,無視我膜拜的豬哥像,淡淡地說ok了。後來我才知道,有個編輯器叫vim,有種操作系統叫MacOS(如今的OSX),有種工作狀態叫flow。
那段時間我學東西學得特別快,似乎全身的細胞都被動員起來。我不放過任何一個細節,有問題抓住機會就向ishi問。後來我很快能把netlink(linux下kernel和user space通訊的一種機制)從2.2的kernel back port回DCN當時使用的2.0,並且和ZebOS配合完美,也得益於此。
如果ishi讓我領略了一個「大師」是什麼樣子的,那麼公司里驅動組的leader suzg則讓我 把眼界放寬,擁抱更大的世界。做數通產品路子其實很窄,公司的成就也就是個人成就的最大值,像我這樣才智平庸的人,幾乎無法單槍匹馬做個產品出來,所以職業生涯往後走,要麼依靠對系統底層的了解強勢轉型,要麼在這個圈子裡一直混下去,似乎別無他法。而suzg則不同,他閑暇時候會琢磨很多新技術。當wikipedia流行的時候,他在公司內部使用mediawiki搭了個KB(knowledge base),各組有自己的板塊,可以分享整個公司的研發知識。我當時是個wikipedia的重度使用者(04年它還沒被封),當看到他搭建的系統後,我被震驚了,業餘時間就折騰出來這麼個東東,讓整個公司受益,太了不起。在suzg的指導下,很快我弄清楚了mediawiki所用的lamp/wamp整套軟體棧,發現了在php領域有如此之多的開源軟體(這和dotnet相當不同),於是開始在自己的電腦上搗鼓各種各樣的互聯網開源軟體。
自那以後,我便迷戀上了通過工具來提高生產率。mediawiki是個很好的提高生產率的例子。之前公司內部文檔的分享,都採用郵件+文件伺服器的方式,效率低下,找個內容太麻煩。mediawiki這種協同工具一下子就讓好幾十人的開發團隊的分享體系高效了很多,而且,更為關鍵的是,我們漸漸形成了沉澱下來的知識庫。這就是工具的力量。
04年DCN開始推行日集成(那時還沒有到持續集成的高度),開發人員每次提交代碼前需要先跑一個測試組提供的測試套件,這是個很麻煩的流程:
1) 首先要向有設備的人(測試 or 開發)借好一套測試環境
2) 在自己的機器上編譯出目標系統的image
3) 將image載入到測試設備上
4) 運行測試套件
我那時學php正學得不亦樂乎,覺得這事可以自動化,於是就跟老闆申請了一台PC和三台設備,搭建了一個測試環境。PC用來跑我做的web服務,基本思想是用戶只需要提交image,生成一個job,剩下的事情由web服務包圓。做著做著發現了php的局限(這是我當時的偏見) —— 它用來做網站還不錯,但做後台服務就捉襟見肘。所以我又在suzg的推薦下學習了Python —— 因為,做這樣一個系統,如果用C寫,要累死很多腦細胞的。於是這麼個自動化測試平台就搭起來了:
1) 用戶可以訪問一個url來提交要測試的image,生成一個job,這是用WAMP實現的。
2) python服務會在空閑的時候輪詢mysql資料庫,找到未處理的任務(當時我還不知道有message queue這樣的利器),然後使用pyserial和secureCRT的python介面,連接被測設備,上傳image,調用測試腳本測試。
這個沒花太大功夫的界面醜陋、相對簡單的工具為team提高了工作效率。也正是這麼個小玩意兒,讓我先是得到了那年神碼「金馬獎」十佳技術的提名,進而獲得了這一獎項 —— 在一個包括DCN,DCS等眾多子公司,研發人員少說也有幾百上千的公司獲得這樣一個相對「稀有」的獎項,實屬幸運。
當然,幫我獲得這一獎項的不光是這麼個「不務正業」的工具,還有我開發的一系列的產品功能,ospf2/3(主要是維護),igmpv3,sntp,netlink back port等等。做好該做的,老闆才會給你更多的發揮空間,你才有機會「不務正業」,才會獲得更多的賞識。
Paul Graham在『黑客與畫家』中說,好的工作是同時具備「可度量性」和「可放大性」。在DCN這樣一個「小」團隊里,個人的貢獻比較容易度量(比如說我自己一個寫igmpv3,好壞均由我自己承擔),而類似於自動化測試平台這樣的工具,則具備可放大性,因為它影響著整個開發團隊幾十號人的工作效率 —— 每個人每天提升10分鐘(實際完成整個流程所花時間遠不止如此),那麼總體的效率提升是非常可觀的。我想,我得益於這兩點。
獲得「金馬獎」的最大的好處是,我獲得了於05年免費去歐洲旅遊的機會。一次歐洲游至少要上萬元,這錢放在如今算不得什麼,但對於當時月薪還僅僅五六千的我來說,簡直如天賜的恩惠。二十三歲,我人生中第一次擁有了護照,出了國門。在羅馬的許願池下,我許下了一個願望:三年內,我要重回此地。結果,兩年後,這個願望就達成了。這是後話。人生就是這樣,當你非常想要一件事的時候,哪怕再艱難,你也能找到各種途徑達成它。
05年對我而言是一個轉折。在女友的鼓勵下,我讀了一個自己很感興趣的北航的IT項目管理的在職碩士。這個課程非常緊湊,第一年每周周一到周四下午6:30-9:30都是課,隔周的周末兩天也都是課,更令人髮指的是,當年五一十一的長假,外加還需要請一整周的假,用來上五六門由來自美國的教授集中講授的課程。上課幾乎佔用了我所有的業餘時間,可我驚喜地發現,把自己逼得越緊,時間似乎就越多。因為上課,我無法每天加班(加班在IT公司幾乎是必然),這引起了我老闆的不滿,但我用更高效地方式完成工作將這不滿消弭於無形;沉重的課業反而促使我更好地管理時間,在不得不去啃PMBOK的同時,我還閱讀了更多和管理,尤其是項目管理相關的書籍。05年3月到06年3月的整整一年,我過得異常充實。
很多人把在職碩士作為混文憑的一種手段,但我純粹靠興趣激發 —— 我覺得自己在這一行這麼做下去總有一天會帶團隊,帶項目,那麼在實踐之前做好理論的準備,總比臨時抱佛腳,或者被趕鴨子上架要好,所以我看了不少這方面的資料,最後發現並報了北航的這個在職研究生項目。很多學生讀者問我本科畢業後究竟是讀研還是工作,我都是建議 如果能找到不錯的工作,那麼就先工作,在工作中發現自己的興趣和不足,帶著這種興趣再去讀一個在職研究生,這樣更有意義;另外,花著自己的血汗錢讀書,和花父母的錢讀書的感覺是遠不一樣的,錢來的辛苦,也會更加珍惜。一家之言,僅供參考。
05年下半年,工作對我而言越來越輕鬆,已經成為一種近乎重複的勞動,而身邊來自IBM/Oracle的朋友不斷訴說和展現著外企的好處。那時候外企風頭正勁,不像現在普遍萎靡,IBM,Microsoft,HP甚至Motorola都是所有工程師夢想的舞台。我的行業背景和語言背景(C語言)很難去這樣的軟體公司,於是我只好把目光瞄向了同行業的Cisco和Juniper。Cisco當時在北京沒有R&D,Juniper便成了幾乎唯一的選擇。本來,像我這樣並非絕對名校出身,並且工作剛剛兩年的小本是入不了Juniper的法眼,但當時Juniper中國研發中心成立不久,正是求賢若渴的時候,而我的前同事yangkai剛剛跳槽去了Juniper做QA,願意為我引薦,我的簡歷便輾轉到了當時的hiring manager shalang的手上。shalang當時想找人做test automation,看我簡歷上做的那個自動化測試平台很感興趣,於是便約我面試。
面試的結果很理想。shalang看中了我身上的某種潛力,所以沒有糾結於我的工作年限和學歷,給了我offer,而且我的工作範圍和防火牆開發有關,而非工具,這令我非常開心。我一直把自己定位在軟體工程師,做工具對我而言只是副業,而且我一直認為,如果不在第一線幹活,是無法體會到各種酸甜苦辣,從而也無法做出有效的工具。所以能在Juniper這樣的外企做開發,而且是做保護各種耳熟能詳的高大上企業(如AT&T,NTT,BOA,中移動,五大銀行等)的網路的防火牆產品,我當時感到非常自豪。毫不誇張地說,加入Juniper後,我的職業生涯和人生軌跡都徹底變了。
在05年這個節點加入Juniper對我而言還有另一個意想不到的收穫,就是獲得超常規的發展空間。如果說這篇文章對你而言有何takeaway,那麼以下這點值得銘記:如果可以選擇,那麼盡量加盟規模較小,處在上升期,快速發展的企業。我所知道的例子便有01年以前的華為,04-06年的百度。當然,回過頭來看歷史很簡單,但站在歷史的漩渦中,我們很難判斷一家規模較小的企業是否有機會存活下去(比如3721,03/04年名頭比百度大),所以這樣選擇風險略大。對於風險厭惡者,我們可以從上面那點衍生出一個風險較小,收益較大的變體,那就是:如果可以選擇,盡量加盟一家在其它市場上已經獲得成功(或者初步成功)的外企在國內設立不久的分支。04-06年上半年的Juniper便是典型。我加盟的時候,ScreenOS team才十個人出頭,人少事多,visibility大,很符合「可測量性」和「可放大性」,只要足夠努力,足夠優秀,便能脫穎而出;而Juniper在全球市場上已經相對成熟,倒閉的風險幾乎為零。06年下半年以後,團隊骨架基本成型,再加盟的人往往要付出更多的努力才有機會脫穎而出。當然,這樣的職場「定律」我並非一開始就懂,而是在Juniper浸淫了兩年才慢慢發現的。如果要問今年符合這條定律的外企,我覺得至少有Airbnb和LinkedIn吧。
在拿到了Juniper的offer後,05年9月26日,我正式來到Juniper報道。
歡迎訂閱公眾號『程序人生』(搜索微信號 programmer_life)。每篇文章都力求原汁原味,早8點與您相會。
同時也歡迎訂閱我百度閱讀上的電子書「途客圈創業記:不瘋魔,不成活」。
推薦閱讀:
※[產品技術] Operational Transformation
※被虐,並快樂著
※行者無疆:西雅圖,波特蘭及其它
※談談FRP和Observable(二)
※談談管理