駕馭你的“職場布朗運動”
在我的博客空間內(nèi),不時會有在校學生就職業(yè)發(fā)展和學習方面的內(nèi)容向我尋求幫助。同學們由于初入社會沒有行業(yè)經(jīng)驗,加上在校所學內(nèi)容又廣(但不深),所以在擇業(yè)方 面很容易產(chǎn)生困惑。在擇業(yè)觀上,他們希望找到一個將來有前途的行業(yè),也希望在“是選擇大公司還是小公司”這類問題上有人給予參考意見,也有人擔心自己的學 歷對將來職業(yè)發(fā)展的影響。
另外,在我的工 作中,也不時會有同事就自己的職業(yè)發(fā)展與我探討。他們幾乎都是對技術(shù)很有追求的“有為青年”和已經(jīng)走上技術(shù)管理崗位的負責人。與在校學生的困惑有所不同的 是,這些人已經(jīng)選擇了通訊行業(yè),也有了好幾年的工作經(jīng)驗,但卻苦于在工作中很難發(fā)揮自己的特長和精進技術(shù),或在技術(shù)管理崗位上擔憂自己將來的競爭力。此 外,也有些同事對將來是走技術(shù)線還是管理線充滿著困惑。
對于所有的這些迷茫也好,困惑也好,我想借這篇文章談一談自己的看法。但怎么談呢?這類話題可以說是老得不能再老了,但又新得不能再新— 因為每一個人都具有自己的獨特性,在離開學校之前或參加工作之后又有著自己特有的經(jīng)歷和感悟,因而所面臨的問題也會別具一格。
時至今日的職場 生涯中,每當我與同事分享自己的成長經(jīng)歷,總會有人為之振奮(希望你讀這篇文章時也能感受到),或許以我的成長經(jīng)歷作為本文的寫作主線是一個不錯的選擇! 通過這篇文章,你可以看到一個1997年畢業(yè)的大專生(畢業(yè)于南昌水利水電高等??茖W校,現(xiàn)更名為南昌工程學院)、一個在高二時英語還只考29分的人,是 如何一步一步成為Motorola的軟件架構(gòu)師。
在繼續(xù)讀下去之 前,讀者應(yīng)認識到一點:個人觀點的獨特性與自身的成長經(jīng)歷有很大的關(guān)系。因此,千萬不要盲從,而應(yīng)時刻保持一種批判接受的態(tài)度?;蛘哒f,你得有自己的觀 點,你(也只有你自己)得對自己的職業(yè)發(fā)展負責!另外,文章主線是自傳形式,如果你對我的成長經(jīng)歷不感興趣,可以快速地略讀,只關(guān)注文中加粗的部分。
故事的開始得從 大學以前開始。從小受“學好數(shù)理化,走遍天下都不怕”觀念的影響,我認為只要學好數(shù)理化就行了,所以偏科很嚴重,高二時英語還考過29分。那時也不愛讀 書,高三時,別的同學在復習,我卻在看《晶體管技術(shù)》這類電子技術(shù)書。這種狀態(tài),直接的結(jié)果就是第一次高考落榜了。
落榜的那個暑 假,父母為我的出路沒少操心。在一天早晨刷牙時,當我媽對我說希望我去復讀時,我當時腦海里想“能象表哥那樣考上大學那該多好??!”,在這個念頭驅(qū)使下, 我答應(yīng)了去復讀。從那天開始,我頓悟了,真正知道自己要什么了。在復讀的一年里,我學到的一種重要能力是— 自學,這為以后大學乃至職場學習打下了很好的基礎(chǔ)。正因如此,我想給出我的職場第一感悟:自學能力是競爭力之本。
經(jīng)過復讀,高考總成績提高了100多分,但也只夠?qū)?凭€。最終,我被南昌水利水高等專科學校錄取,專業(yè)是“供用電技術(shù)”。這個專業(yè)相信很多人不知其然,其實就是電力自動化的變種專業(yè),其專業(yè)內(nèi)容主要是電站、發(fā)電廠高電壓的繼電保護技術(shù)。
大學讀書期間,我開始有與人在成績上一爭高下的念頭了,加上復讀一年所獲得的自學能力,以及自己的努力,學習相當輕松,尤其是只要與電子技術(shù)沾邊的課程,都能輕松地拔得頭魁。 三年共六個學期的學習,我拿了五個一等獎學金,一個二等獎學金。畢業(yè)時,我是系里唯一的一名優(yōu)秀畢業(yè)生。期間通過了大學英語四級考試和計算機二級考試,獲 得了江西省電子技能比賽一等獎。需要提及的是,在大學期間所學的與計算機相關(guān)的課程只有:《電子技術(shù)基礎(chǔ)》、《計算機組成原理》、《計算機軟件基礎(chǔ)》、 《單片機技術(shù)》和《Basic編程語言》。
在大學期間,我 完成了人生很重要的一件事 — 找好了現(xiàn)在的妻子。由于她是浙江人,所以畢業(yè)時工作地點毫不猶豫地選擇了杭州。那時很多同學的工作還是包分配的,而我來到了杭州的人才市場進行雙向選擇, 那時找一份工作還是相對輕松的(注:我們大學錄取那年的招生人數(shù)是90多萬),投出一份簡歷就找好了工作。第一個工作單位是一家不到100人、地處杭州花 港觀魚對面(三臺山)的電力設(shè)備制造民企。
盡管選擇去這家 民企后立馬到公司去做了實地調(diào)查,但由于沒有社會經(jīng)驗,加上被問的人沒如實反應(yīng),所以進入這家民企后所了解的情況讓人大跌眼鏡。另外也了解到單位會通過一 些不入流的做法控制我們的戶口,不讓我們跳槽(那會兒的戶口還是相當重要的,結(jié)婚要戶口證明,有同事就因為戶口被控制而登記不了)。而我們在進入這家單位 時簽訂了六年的勞動合同。在這樣的小企業(yè)干上六年意味著什么?!當時與家人打電話告知這一狀況時,我都哭出來了(就在現(xiàn)在楊公堤與虎跑路交叉的、現(xiàn)早已不 存在的一個電話亭里,記憶猶新呀?。?。
盡管前途是那樣的渺茫,但帶有“優(yōu)秀畢業(yè)生光環(huán)”的我仍堅信自己能做得比別人更好,因為有我的職場第二感悟:自信能讓你與眾不同,盡管有時的自信有點莫名其妙。 在這個企業(yè)一開始的工作職責是電站設(shè)備的電氣設(shè)計工程師,需要用AutoCAD(到單位后學的)設(shè)計電氣圖紙,并指導工人最終完成電氣設(shè)備裝配及調(diào)試。期 間,企業(yè)經(jīng)營范圍擴大,需要從事電子設(shè)備的生產(chǎn),因此我開始有機會接觸電子技術(shù)方面的設(shè)計工作。在兄弟單位一同事的幫助下,在一個星期內(nèi)我掌握了如何用 Tango(后來更名為Protel,現(xiàn)在的名稱是Altium Designer)進行原理圖和PCB線路板設(shè)計。而且,這一個星期的設(shè)計結(jié)果最終成為了電氣產(chǎn)品的一個部件。對于一個畢業(yè)不到一年的我來說,這是不小的 進步。那時知道了什么是網(wǎng)絡(luò)表、過孔、焊盤等,掌握了很多電子原件的工作原理(有的還自己用面包板做實驗),明白了做電路板的大致業(yè)務(wù)流程,還能動手焊接 電路板,熟練運用示波器和萬用表進行調(diào)試。那段時間,我對電子技術(shù)的興趣幫上了大忙,學習起來遠比別人快。當我精通電路原理,能自如運用示波器和萬用表調(diào) 試電子產(chǎn)品時,別人卻還不明白我的調(diào)試動機。我的職場第三感悟:興趣是學習效率的催化劑,培養(yǎng)自己的職業(yè)興趣。
第一次真正對編 程感興趣是從知道PLC(Programming Logic Controller)開始的。當時的電站設(shè)備采用了三菱的PLC,為了配合這一電氣產(chǎn)品的需要,企業(yè)社招了一名懂PLC編程的工程師。由于老板擔心我們 相互學技術(shù)而“翅膀變硬”,所以明確提出工程師所掌握的技能不能互通有無。當時看到這位兄弟能通過“梯形圖”改變PLC的行為,真是覺得他太神氣了,仰慕 不已。后來通過這位兄弟的私下幫助(哥們呀?。彝砩贤低档卦趶S房里面學習PLC編程。為了獲得良好的學習效果,我設(shè)定了對電氣產(chǎn)品的PLC程序進行重 寫的目標,且最終達成了這一目標(當然,由于這個目標不能讓老板知道,所以我的PLC程序不能用于商用)。我的職場第四感悟:學習應(yīng)給自己設(shè)置虛擬的項目目標,以做項目的形式提升學習效果,只有這樣學到的內(nèi)容才會深入而實用,切忌無目標地學到哪算哪。
一年多的功夫, 我成為了某電氣產(chǎn)品的技術(shù)負責人,對整個產(chǎn)品的所有技術(shù)細節(jié)都了如指掌,我?guī)ьI(lǐng)了其他幾個工程師實現(xiàn)了該產(chǎn)品的“自主研發(fā)”。有趣的一件事是,老板當時并 不知道我已經(jīng)“翅膀硬了”,想抵賴答應(yīng)過的8000元項目獎金,年輕氣盛的我在與之拍完桌子之后對其他工程師下令:“沒有我的允許,誰也不能將電氣圖紙和 電路原理圖用于生產(chǎn)”(因為年經(jīng),所以二!)。對抗的結(jié)果以老板兌現(xiàn)承諾而告終。這時我隱約地有了我的職場第五感悟:話語權(quán)首先來自能力,而不是職位權(quán)力(公務(wù)員、國字號、壟斷企業(yè)的工程師請忽略。你懂的?。?。
#p#
我那時還學會了CRC算法并將之運用于PLC的串口通訊中,但對于計算機如何通過串口與PLC通訊獲得采集數(shù)據(jù)存在很大的好奇心。于是想到了學習編程語言,并計劃做一個 能在計算機上實時顯示PLC所采集數(shù)據(jù)的軟件。在向PLC編程的兄弟表達了這一想法后,他給我的建議是:學習C語言比較難,Basic語言則更容易。于 是,我毫不猶豫地選擇了自學C語言,因為我深信我的職場第六感悟:難學的技能一旦掌握更具競爭優(yōu)勢。
也正是從那時開始,我真正開始了成為軟件工程師的自學旅程。那時比較幸運的是,單位專為我配備了工作電腦,所以具備了自學的硬件條件。由于那時Internet還不普 及,學習書籍都來自浙江大學的科海書店(后來眼見著它的店面越來越小,這也是進入電子商務(wù)時代的一個縮影),那時隔三叉五地到科海去找書,生活最大的花費 就在于購書(那時這方面的書不少是質(zhì)次價高)。當然,學習的過程或多或少還得瞞著老板。那段時間,別人午休我就編程,除了看書和做書后的習題,還一直朝實 現(xiàn)自己的計算機監(jiān)控軟件這個目標邁進(參見我的職場第四感悟)。終于有一天,我用Turbo C在DOS環(huán)境下實現(xiàn)了具有串口通訊功能的、基于圖形界面的監(jiān)控軟件(如果你用現(xiàn)在的眼光看那個軟件,一定會說“很土”)。當我樂此不疲地向他人演示時, 你可以想象我那時有多高興和自豪!這種小小的成功助長了我的信心,也讓我感受到了我的職場第七感悟:用階段性成果不斷增強自己的自信,且最終支持自信的是能力,而不是自大。嘗到了成功甜頭的我隨后拓展了自己就軟件開發(fā)方面的學習內(nèi)容。那時的我已經(jīng)下定決心要向軟件開發(fā)方向發(fā)展,這種選擇是因為我的職場第八感悟:做自己喜歡的事,如果那是自己的興趣最好。
1999年的某月,在企業(yè)拖欠了一個月工資的情形下,“蓄謀”逃離企業(yè)束縛的我們(共19個工程師)經(jīng)過幾個月的勞動仲裁后,與企業(yè)解除了勞動合同。在離開這家民企的第 二天,1999年11月的某天,我在浙江大立機電技術(shù)開發(fā)公司(即現(xiàn)在的大立科技。后面都簡稱為大立公司)找到了第一份專職的軟件開發(fā)工作。我逃離束縛后 能很快地找到新的支點,完全得感謝我的職場第九感悟:不論身處多么困難的環(huán)境,即使覺得前途渺茫,也不要放棄學習,否則就是“自斷筋脈”。
在大立公司所參 與的第一個軟件項目,是使用Visual C++從事Windows某變電站圖像監(jiān)控桌面軟件的開發(fā)。盡管我之前自學過C++語言,但那時并未完全掌握面向?qū)ο缶幊蹋绕涫瞧渲械亩鄳B(tài)。我在該桌面 軟件中借鑒微軟的示例軟件DrawCli,獨立地實現(xiàn)了電子地圖功能。正是通過掌握這個示例軟件的設(shè)計與實現(xiàn),我真正領(lǐng)悟到了面向?qū)ο笤O(shè)計的好處。也通過 該圖像監(jiān)控桌面軟件的開發(fā)經(jīng)歷,掌握了Windows VxD驅(qū)動開發(fā)、socket通訊、多線程編程、圖像處理(銳化、偽彩處理、圖像字符識別和圖像對比等)、ODBC數(shù)據(jù)庫編程(用的是SQL Server)等。
這里要插一個與 我妻子相關(guān)的小故事。她是我大學的同班同學,畢業(yè)以后進了諸暨供電局從事農(nóng)網(wǎng)預(yù)算工作。我在第一家民企工作時,時常往返于兩地,有時覺得很是辛苦。另外, 妻子在供電局安逸的工作環(huán)境下,時常會開玩笑說老了要是下崗了都不知能干什么。在我進入大立公司不到一年的時間里,我向公司提出了可否讓她到公司來從事軟件開發(fā)工作。當時在我妻子沒有任何面試和編程經(jīng)驗(她當時只自學了譚浩強老師的《C程序設(shè)計》和一本C++的書,忘記書名了)的情況下,公司讓她過來了, 我想這是緣于公司對我的器重(這里要謝謝龐總和章總兩位老總!)。自然,我成了妻子學習編程的老師。我的岳父岳母當時對于妻子放棄供電局的工作盡管不舍, 但還是尊重了我們的想法,謝謝他們的開明。支持我們做出這一決定,除了為了解決兩地分居問題,還有我們的職場第十感悟:長期安逸的工作意味著將來更大的風險。
在妻子進入大立公司不久,由我擔綱了新版圖像監(jiān)控軟件的重新開發(fā),這是我第一次擔任軟件項目負責人。在這個項目上,我可以從技術(shù)層面盡情發(fā)揮,將我在老版本軟件上所看到 的設(shè)計不足完全克服。也正是通過這個軟件項目,我的面向?qū)ο缶幊棠芰τ辛撕艽蟮奶岣?,而且完整地做過了一個軟件產(chǎn)品。用我現(xiàn)在的眼光來看:那時的開發(fā)工作 除了引入了版本控制軟件外,是不折不扣的作坊式軟件開發(fā);至于管理技能的提高,也可以說是微乎其微。
2000年底, 大立公司因為業(yè)務(wù)拓展的需要,需開發(fā)嵌入式圖像監(jiān)控系統(tǒng)(系統(tǒng)中的前端產(chǎn)品是后來數(shù)字硬盤錄象機的前身)。為此,公司社招了一位比我年長十歲的資深硬件開 發(fā)工程師,他在進公司時已經(jīng)有基于AMD的Elan SC520 x86嵌入式微控制器的硬件開發(fā)經(jīng)驗。他在進公司之初與章總交談時指出:“做這類嵌入式產(chǎn)品,需要軟件功底非常強的人”,章總的回答是:“你放心好了,我 一定找一個最好的人與你搭檔”(章總后來告訴我的)。是的,所找的那個人就是我!而其實那時我只有用Visual C++從事Windows桌面軟件的開發(fā)經(jīng)驗,可見公司領(lǐng)導對我能力之信任!我的職場第十一感悟:機遇很重要,但你得有能力才能抓住它。
我當時所面臨的 技術(shù)挑戰(zhàn),讀者可以想象。要知道,在2000年時基于x86微控制器的嵌入式系統(tǒng)的開發(fā)人員國內(nèi)還很少。我的自學能力、電子愛好的興趣在這種挑戰(zhàn)面前又幫 了大忙。其實,做嵌入式系統(tǒng)開發(fā)最主要的是參考各種資料以便掌握各類技術(shù)細節(jié),這得通過大量地閱讀芯片手冊、用戶手冊,以及研究AMD在其官網(wǎng)上所提供的 示例程序。在這個過程中,就技術(shù)困惑堅持探究和養(yǎng)成各種好的工作習慣(思考習慣、筆記習慣、總結(jié)習慣、閱讀習慣)非常重要。我的職場第十二感悟:職場首先比拼的不是智商,而是堅持與好習慣。
我獨自完成了該 嵌入式前端產(chǎn)品上的軟件開發(fā)工作。其中包含的大致技術(shù)內(nèi)容有:從編程的角度精通x86處理器架構(gòu); PCI、IDE硬盤、網(wǎng)卡、串口、閃存等總線或外設(shè)的驅(qū)動;實時操作系統(tǒng)內(nèi)核的移植工作;MINUX操作系統(tǒng)的文件系統(tǒng)的移植; XINU操作系統(tǒng)的TCP/IP協(xié)議棧的移植工作。移植工作往往會碰到各種技術(shù)細節(jié)問題,等移植工作完成,對被移植模塊的實現(xiàn)和背后的原理也已了如指掌。 正應(yīng)如此,這一時期的工作讓我對操作系統(tǒng)的實現(xiàn)原理有了很深的理解。
除了軟件方面的進步,我在大立公司時的硬件知識也得到了很 強擴充。不僅能輕松地閱讀數(shù)字電路原理圖,還自學了VHDL語言,使得拿到邏輯器件CPLD的VHDL程序就能調(diào)試軟件(通過VHDL程序,可以了解編程 所需的譯碼端口、相關(guān)信號的操作時序等)。還學會了如何使用邏輯分析儀輔助軟件調(diào)試工作。前面提到的這位兄長式硬件工程師調(diào)侃我說:“你讓我看到了中國軟 件的希望!”,而我將這話當成了對自己的鼓勵。另外,這期間還考入了浙江大學專升本的通訊工程專業(yè),給自己充電(2001年入學,2004年畢業(yè),獲多學期“優(yōu)秀學生”和“優(yōu)秀畢業(yè)設(shè)計”)。
#p#
由于大立公司是浙江省測試技術(shù)研究所的子公司,它或多或少帶有事業(yè)單位的氣息。加上公司的技術(shù)舞臺有限,以及妻子也在同一家公司工作,我于2003年4月份左右離開了大 立公司。在我離開之前,浙江省科委已批復了公司的申請,分配給我一套福利房。在我離開之時,房子仍在建,不少同事對于我的離職很是不解,也勸我拿到房再 走。但我有我的職場第十三感悟:當短期利益與長遠利益無法得兼時,選擇長遠利益。
在大立公司工作期間,很希望自己能入職UTStarcom這樣的通訊企業(yè)(那時的UTStarcom是多么地輝煌?。?。計劃離開大立公司之際,我向UTStarcom提交了求職簡歷。這次求職開始好像很順利,但到我真正入職UTStarcom的過程卻很是曲折。
一開始當我收到UTStartcom的面試通知時,可能太希望能進入這個公司了,在沒有很深入了解這個崗位的前提下,就去面試了,且馬上拿到了Offer。但后來才了解到,我拿到的是生產(chǎn)部測試開發(fā)崗位,與實際研發(fā)部門是有區(qū)別的。 當時很糾結(jié) — 這是我想進的公司,但卻不是我想要的崗位。如果拒絕生產(chǎn)部的Offer,我很有可能與UTStarcom無緣。考慮再三,我還是選擇了拒絕(參見我的職場第十三感悟)。并重新向研發(fā)部門投了簡歷。
經(jīng)過度日如年的一個 多月等待(那會兒剛好發(fā)生了SARS疫情),在覺得入職UTStarcom研發(fā)部門無望的情況下,我入職了另外一家小公司。令人意外的是,在入職那家公司 的第二天,我收到了UTStarcom研發(fā)部門的面試通知。在HR面試的那一輪中,HR對我說,“你是我所面試的人中最有工作激情的”。那時的技術(shù)面試官 中,其中一位是我日后入職后的上司 — 夏青(現(xiàn)在是恒生電子通訊事業(yè)部的總經(jīng)理),他是我的伯樂。由于我的學歷問題,在技術(shù)面試通過后,別人只要一位VP面試通過就行,我卻需要兩位。我的職場第十四感悟:學歷是很重要的敲門磚,即便你的能力很強;學歷盡管很重要,但能力才是最終的通行證。
2003年6月 份左右,我正式入職UTStarcom研發(fā)部,從事小靈通基站控制器(后面簡稱為基站控制器)的軟件開發(fā)工作,也從此踏入通訊行業(yè)。在入職之初,由于自認 為對于操作系統(tǒng)的原理很精通,又完整地做過軟件項目,有點飄飄然,覺得自己是個“小牛牛”。然而,入職后一接觸工作就發(fā)現(xiàn),內(nèi)容沒有想象的那么簡單!
首先,基站控制 器的軟件規(guī)模比我以前主導開發(fā)的項目要大很多,而且需要熟悉通訊行業(yè)的相關(guān)信令。其次,盡管我那時精通x86處理器,基站控制器用的卻是PowerPC 8250,這意味著我得重新掌握它。再次,實時操作系統(tǒng)用的是前美國軍方的、開源的RTEMS,那是我第一次接觸。最后,UTStarcom的工作語言是 英語,寫文檔和郵件都得用英語。盡管我那時能無障礙地閱讀MSDN和各類芯片手冊,但要著手寫,卻是一大挑戰(zhàn)(口語不作要求,因為不需直接接觸老外)。
一入職所分配的工作是網(wǎng)元網(wǎng)管部分告警抑制軟件模塊的開發(fā)。盡管PowerPC處理器和RTEMS操作系統(tǒng)技術(shù)細節(jié)的掌握與否并不影響日常開發(fā)工作,但我仍將掌握它們作為自己的努力目標,因為我的職場第十五感悟:技術(shù)細節(jié)掌握得越深,解決問題時就越能游刃有余。
那時工作時間應(yīng) 付日常開發(fā)工作,業(yè)余時間則先將精力集中放在熟讀PowerPC 8250處理器相關(guān)的技術(shù)手冊上(晚上還得上夜大)。加起來超過2000頁的英文資料,我讀了不少于3遍。隨著時間的推移,當我對PowerPC 8250處理器很有感覺之后,我將工作重點轉(zhuǎn)移到了熟悉RTEMS操作系統(tǒng)的實現(xiàn)細節(jié)上。先處理器后操作系統(tǒng)的學習安排,是基于我以往在x86處理器上的 工作經(jīng)驗而得出的,也是因為我的職場第十六感悟:技能的發(fā)展應(yīng)采取深度先于廣度且交替進行的方式,只有這樣,面對大量的新知識才能更淡定。
RTEMS是一 個類UNIX的實時操作系統(tǒng),也正因為接觸這個操作系統(tǒng)我才意識到了自己在軟件設(shè)計能力上存在很大的提升空間。盡管我對操作系統(tǒng)的實現(xiàn)原理胸有成竹,但卻 無力于構(gòu)建一個象RTEMS那樣優(yōu)雅的操作系統(tǒng),也真切地體會到了RTEMS的設(shè)計之美。那時基站控制器上運行的RTEMS操作系統(tǒng)是由美國的新澤西研發(fā) 中心移植好的,杭州研發(fā)中心只需在之上做應(yīng)用開發(fā)。為了就RTEMS操作系統(tǒng)獲得更好的學習效果,我又一次運用了我的職場第四感悟,設(shè)定了自己完成 RTEMS新版本移植這一目標。
RTEMS新版 本的移植工作雖不在公司的日常工作范圍內(nèi),但卻得到了上司的支持。由于那時RTEMS還在開發(fā)新的功能,并不是很穩(wěn)定,在移植過程中碰到各種奇怪的問題, 有些問題還與GNU的binutils工具集有關(guān)(binutils中包括nm、ld、objdump等工具。RTEMS是用GCC編譯的)。在無法確認 是GNU工具集的問題之前,我甚至還向Wind River公司(其知名產(chǎn)品是VxWorks實時操作系統(tǒng))尋求過幫助,因為那時用的是它的JTAG仿真器。移植工作雖曲折,但最終還是成功了(我所移植 的版本并沒有運用到產(chǎn)品中,后來的同事又做過了RTEMS4.6.0pre4的移植,且運用于產(chǎn)品中)。這一移植經(jīng)歷,讓我對GNU的binutils、 RTEMS操作系統(tǒng)的實現(xiàn)有了更為深入地掌握。
在UTStarcom工作的前期,我大多從事的是RTEMS操作系統(tǒng)相關(guān)的代碼維護工作,工作內(nèi)容除了OS內(nèi)核,還包括FTP、Telnet等協(xié)議。直到中期轉(zhuǎn)為做E-Box產(chǎn)品的互聯(lián)網(wǎng)接入模塊的開發(fā)工作。
E-Box是一 個企業(yè)級電話交換產(chǎn)品,其中還存在一塊基于ADSL的互聯(lián)網(wǎng)接入數(shù)據(jù)板(與現(xiàn)在的ADSL貓功能一樣),用于實現(xiàn)企業(yè)網(wǎng)對互聯(lián)網(wǎng)的數(shù)據(jù)接入功能,這一數(shù)據(jù) 板使用的是VxWorks5.5.0實時操作系統(tǒng)(PNE 2.0),處理器是Intel的XScale IXP425。那時VxWorks的IP協(xié)議棧還是基于BSD的,但Wind River對之做了一定增強。這段時期我的工作重點全在IP協(xié)議棧上(《TCP/IP詳解》這套書幫上了大忙)。這一時期的開發(fā)經(jīng)歷,讓我對PNE的 Bridge、FastPath、MUX、PPPoE協(xié)議、Radix路由算法和VLAN協(xié)議很熟悉,也學會了用SmartBit儀器和Chariot軟 件做網(wǎng)絡(luò)性能測試??傊屛覍P(v4)協(xié)議棧方面的知識和軟件實現(xiàn)有了長足的進步。
E-Box產(chǎn)品 數(shù)據(jù)板上的開發(fā)工作進行了半年后,管理層決定放棄,于是我被調(diào)到了E-Box產(chǎn)品的軟件平臺組。那時平臺組剛好面臨一個比較麻煩的問題 — 在命令行上運行reboot命令后,有時會出現(xiàn)整個系統(tǒng)掛起,而不是期望的重啟。平臺組的同事花了一個多星期的時間仍沒有解決這一問題。
#p#
進入平臺組之際,同樣是在沒有任何人安排的情況下,我自己主動承擔解決reboot命令功能異常的工作。在我的職業(yè)生涯中,我一直熱衷于去解決別人難以解決的技術(shù)問題,因為我的職場第十七感悟:越難的技術(shù)問題,其所蘊藏的知識越豐富,也越具學習價值。經(jīng)過一天半的時間,問題被解決了。其根源在于,reboot之前沒有禁用CPM協(xié)處理器。我能那么快地解決這一問題,完全是因為之前熟讀過PowerPC 8250處理器的資料。
我在 UTStarcom工作的后期,致力于ACE在E-Box產(chǎn)品中的一些應(yīng)用,借助ACE的網(wǎng)絡(luò)通信功能幫助實現(xiàn)在Windows平臺上通過Visual Studio調(diào)試E-Box產(chǎn)品。我在《專業(yè)嵌入式軟件開發(fā)》一書的《可開發(fā)性設(shè)計,一種高效且經(jīng)濟的開發(fā)模式》一章中所闡述的內(nèi)容其實就是這一工作經(jīng)歷 的總結(jié)與延伸。
另外,我還在 E-Box產(chǎn)品上做過難度比較大的一個特性是,利用PowerPC 8250的MMU功能在VxWorks操作系統(tǒng)上實現(xiàn)了對任務(wù)棧的保護 — 當一個任務(wù)被調(diào)度而處于運行狀態(tài)時,它的棧就處于可讀寫狀態(tài),而其他任務(wù)的棧全處于只讀狀態(tài)(VxWorks5.5.0內(nèi)核中,還沒有RealTime Process的概念,這一概念是從6.0開始有的,所以那時我所做的這一特性很具實用性)。通過這一特性,可以有效地防止任務(wù)棧被意外篡改(比如野指針 操作),即便出現(xiàn)篡改也能盡早發(fā)現(xiàn)根源。這個功能的實現(xiàn)過程需要調(diào)試VxWorks內(nèi)核,那時VxWorks的源碼雖對公司提供,但Wind River公司對所提供的GNU的binutils做了特殊處理,使得無法為內(nèi)核代碼生成調(diào)試所需的信息,結(jié)果是無法對內(nèi)核進行源碼級程序調(diào)試。由于我之 前的RTEMS操作系統(tǒng)移植經(jīng)歷讓我對binutils非常熟悉,通過使用一定的方法(說來話長了)繞過了Wind River公司所設(shè)置的障礙,成功地實現(xiàn)了對VxWorks的源碼級程序調(diào)試。
在職場中,我不時能成功解決復雜問題和克服技術(shù)障礙。我的職場第十八感悟:每次積累的點滴知識,一定會在將來不知不覺地發(fā)揮效能。
2006年4月 份左右,我離開了UTStarcom。在UTStarcom所學到的,不只是前面所介紹的那些技術(shù)知識,更讓我知道了軟件開發(fā)的“正規(guī)軍”是怎樣的,與小 公司相比,UTStarcom的軟件開發(fā)流程要正規(guī)得多;也經(jīng)歷了英文寫作的“擠牙膏”時期過渡到輕松時期(好友周海東在我的英語學習中幫了不少忙);看 到了好友于善成如何通過大量閱讀成為一個知識淵博的人(他的閱讀量現(xiàn)在仍是我的學習榜樣);還有上司夏青的技術(shù)敏感度到現(xiàn)在仍讓我為之稱道,是我職場至今 所見過的二位具有良好技術(shù)敏感度的技術(shù)管理者之一(另一位是我在Motorola工作期間認識的,后面會談到他);團隊實力之強使得開發(fā)出的E-Box產(chǎn) 品在我離開UTStarcom后不時能聽到正面的評價。
對了,我在大立公司工作時期,就很注重軟件設(shè)計文檔的編寫,而且在我離開之時,不僅完善了所有文檔,還為后繼同事做了全面的培訓。我始終堅守我的職場第十九感悟:通過文檔化的方式傳承知識給后繼者是你的基本責任,因為你作為后繼者時也希望如此,這也是對自己負責的一種表現(xiàn)(文檔的重要性請參見《該死的“代碼就是文檔”》一文)。在UTStarcom工作期間,我進一步形成了將自己的技術(shù)想法寫成文章與大家分享的習慣(那時同事賀旭東稱我為“作家”,而我則稱他為“點評家”
),也因為自己在嵌入式軟件開發(fā)技術(shù)上的長期點滴積累,開始有了寫書的想法。
離開 UTStarcom后,我入職了杭州華數(shù)集團旗下的雷科通技術(shù)(杭州)有限公司。公司當時的意向是安排我負責某寬帶接入產(chǎn)品的軟件開發(fā)工作。在這個公司, 盡管只有兩個月的時間但也做了些事。除了一個月內(nèi)完成了寬帶接入產(chǎn)品以太網(wǎng)交換芯片在VxWorks操作系統(tǒng)上的驅(qū)動開發(fā),并使得產(chǎn)品支持VLAN功能 外,還解決了好幾個影響整個產(chǎn)品系統(tǒng)穩(wěn)定性的嚴重遺留缺陷。這兩個月的工作不光讓我在技術(shù)團隊中很快地樹立了自己的威望,也使得公司高層管理者真切地看到 了我的能力而在我提出離開時極力地挽留。這短暫兩個月的工作經(jīng)歷帶給我職場第二十感悟:別人對你價值的認可,其實不是簡單地根據(jù)你的自身能力,而是根據(jù)你對他人和團隊的貢獻。
入職2006年 初在杭州成立的Motorola研發(fā)中心的故事得從面試開始。在入職雷科通不久,我收到了獵頭的電話,雖然那時并沒有換工作的想法,但也沒有拒絕獵頭投簡 歷。隨后我收到了Motorola的面試電話。那次面試過程記得很清楚,因為那是我所經(jīng)歷的第一次英語口語技術(shù)面試。雖然工作中從沒有鍛煉過英語口語,好 在對于自己做過的技術(shù)知識很熟悉,也經(jīng)常需要查閱英文資料,所以對于所做過的內(nèi)容還能用英語勉強解釋清楚。在面試的最后,我對印裔技術(shù)面試官說,“現(xiàn)在我 的英語口語不好,但我相信只要有合適的環(huán)境,能很快地提高”。印裔技術(shù)面試官最后將我領(lǐng)到HR那,說了一聲“Yes” — 我的技術(shù)面試通過了!
面試結(jié)束的第二 天,收到了Motorola HR的電話,告知Offer的相關(guān)信息(我的入職級別是E09,E09及以上的人在整個Motorola杭州研發(fā)中心占比大約為10%)。那時由于并沒有 換工作的想法,所以拒絕了Offer。想法很簡單,因為曾在UTStarcom這樣的公司呆過了,所以對外企的工作并不是很向往,反而認為在雷科通這種小 公司更能施展。在我拒絕了Motorola的Offer后,我將這件事告訴了身邊的同事,他們的反饋幾乎都是“你應(yīng)當去Motorola”。
幸運的是,另一名HR再一次致電給我,試圖說服我加入Motorola。她當時說“你一旦加入Motorola,以后離開時所看到的就是HP或IBM這樣的大公司”,也正是這句話打動了我。之后的經(jīng)歷證明,加入Motorola是很正確的一個選擇!
2006年7月 6日,我正式入職Motorola杭州研發(fā)中心。加入的初期是大量的內(nèi)部培訓,培訓內(nèi)容包括技術(shù)方面的、流程方面的和英語。Motorola有著成熟的企 業(yè)文化,通過培訓可以讓工程師很快地融入企業(yè),使人行事象是Motorolan(摩托羅拉人)。在經(jīng)歷了約半年的培訓和學習后,2006年底,我開始參與 WiMAX產(chǎn)品線上的CLA中間件軟件項目。
盡管我在CLA項目上沒有具體的工作(比如,沒有缺陷修復工作會分配給我,也沒有新的特性開發(fā)工作會掛在我的名下),但對整個團隊所從事的技術(shù)工作都得負責。我的日常工作主要是設(shè)計方案評審、代碼審查、幫助或帶領(lǐng)團隊解決技術(shù)難題等。
在CLA項目上 工作了一個月左右,2007年春節(jié)之后,我被第一位派到Motorola的芝加哥研發(fā)中心做為期二個月的現(xiàn)場技術(shù)支持。之前盡管在公司有過英語培訓,但要 很好地聽與說還是存在很大的障礙,加上芝加哥那邊一起工作的是口音較重的印度人和巴基斯坦人,挑戰(zhàn)可以想象。在芝加哥研發(fā)中心除了做現(xiàn)場技術(shù)支持,還得為 后續(xù)人員的到來做鋪墊。比如,租好房子、車子,準備好生活所需的一些家當(當時因為預(yù)算有限,我們住的是公寓,還得自己燒飯)。那段時間雖然因為語言的問 題倍感壓力,但在全英文的環(huán)境中,我的聽說能力進步也明顯。之后差不多每年一次的出國,見到以前認識的外國同事,總會有人對我說“Your English is getting better”。對于自認為英語聽說能力不行的同仁,請記住我的職場第二十一感悟:英語的聽說能力只要有合適的環(huán)境,并勇于張嘴練習的情況下能快速地提高,不必擔心。
CLA軟件在技 術(shù)上屬于運行于Linux操作系統(tǒng)上的一個中間件,它存在多個進程用于幫助通訊設(shè)備網(wǎng)元(包括WiMAX基站和接入網(wǎng)關(guān))實現(xiàn)網(wǎng)管功能。由于軟件架構(gòu)的特 點,使得CLA團隊不時會碰到由于其他團隊沒有用好CLA而產(chǎn)生的技術(shù)問題,這類問題開始大多難以定位是屬于CLA的、還是不屬于CLA的,因而查錯過程 很低效。在CLA項目的后期,我希望通過引入新的軟件設(shè)計方案幫助團隊提高軟件的查錯能力,并改善軟件質(zhì)量。引入新設(shè)計需要增加很多代碼,如何讓管理層不 擔心由此而引入更多的缺陷是我著力這事時首先要考慮和解決的問題。
在這種背景下, 我在CLA項目引入了單元測試,寄希望于通過單元測試提高新增代碼的質(zhì)量,以使管理層更具信心而獲得他們強有力的支持。最終結(jié)果表明,在新增了近一萬行代 碼的情況下,代碼在最終發(fā)布后總共只發(fā)現(xiàn)了一個軟件缺陷。這個項目上的工作經(jīng)歷讓我第一次真正嘗到了單元測試的甜頭,在《專業(yè)嵌入式軟件開發(fā)》一書中,就 單元測試方面的內(nèi)容很多源于我在這一項目上的成功經(jīng)驗。我在CLA上新增設(shè)計中的AED(Abnormal Exiting Detection)功能,在我離開CLA項目之后,還幫助團隊發(fā)現(xiàn)了很隱蔽的多線程問題。當通過AED功能發(fā)現(xiàn)這一問題的同事高興地跑過來對我說這個功 能管用時,我的高興勁寫滿了整張臉。這個項目的經(jīng)歷,也讓我更加堅信我的職場第二十二感悟:在軟件開發(fā)活動中,應(yīng)設(shè)法通過有效的技術(shù)途徑去解決工程困境。
2009年 初,Motorola杭州研發(fā)中心迎來了一個重量級項目 — WiMAX產(chǎn)品線的接入網(wǎng)關(guān)ASN-GW,我被安排到該項目,角色是軟件開發(fā)架構(gòu)師。初期我的架構(gòu)師一職只是杭州研發(fā)中心單方面的角色安排,而非全球性的 (當時該產(chǎn)品由美國、印度和中國三個研發(fā)中心共同參與)。
在ASN-GW 項目上與我一同共事的經(jīng)理,是曾在Motorola美國研發(fā)中心呆了近十年、后來臨時轉(zhuǎn)到國內(nèi)來工作的華人李亮(后面簡稱亮,習慣了)。他之前在美國工作 時做過架構(gòu)師、軟件發(fā)布經(jīng)理(Release Manager)等職,是一個對技術(shù)很有敏感度的管理者(我前面提到過的兩位有技術(shù)敏感度的管理者之一)。我在此之后的成長,完全離不開他的支持與信任, 以及他為我所創(chuàng)造的職場發(fā)展環(huán)境,能與他共事讓我倍感榮幸和感激。
我從亮身上學到 的第一個內(nèi)容是如何與美國管理層打交道??傮w說來,Motorola在軟件開發(fā)管理方面很是四平八穩(wěn),其管理存在兩大特色,一是爭奪項目的所有權(quán) (Ownership),另一個是質(zhì)疑(Challenge)。前者使得各團隊職責清晰,不容易出現(xiàn)突發(fā)問題或狀況找不到負責人;后者使得團隊在工作中有 所作為,不至于讓人渾水摸魚。在面對美國團隊的質(zhì)疑時,我以前看到的大多管理者都很緊張,總想一味地達到美國方面的要求,但亮在這方面的表現(xiàn)卻明顯不同。 他告訴我們(包括Team Lead),“如果美國提的要求不合理,直接與他們‘掰’”。后來我認識到,美國方面做事其實很講邏輯,只要我們對于他們所質(zhì)疑的問題能給出合理的解釋, 很多異常事件根本就沒什么大不了。我的職場第二十三感悟:不要用沉默的方式一味地迎合別人的要求,據(jù)理力爭或許才是作為的表現(xiàn)。
參與ASN- GW的呼叫處理子系統(tǒng)的開發(fā)工作后,整個團隊經(jīng)歷了大約半年的成長痛苦。痛苦的根源,一是對WiMAX無線接入技術(shù)相關(guān)的國際標準不熟悉,另外則是對 ASN-GW產(chǎn)品的現(xiàn)有實現(xiàn)不了解,而且產(chǎn)品的復雜度的確很大(其中一個技術(shù)指標是:必須達到99.999%的容錯能力)。在半年的痛苦期中,我很重要的 一個工作職責是幫助團隊成長,作為亮這類管理層與基層工程師間的橋梁。比如,為團隊起草《開發(fā)者指南》和《測試指南》這樣的文檔,且要求和引導工程師通過 文檔化的形式沉淀經(jīng)驗與教訓,以便提高工作效率(雖然文檔化方法的實施過程需要我不斷地提醒,但這一方法被證明在這種時期很有效);我也會在例會上毫不留 情地指出工程師的哪些行為影響了工作效率。我的職場第二十四感悟:流程、文檔的作用,不只是引導我們做完事,更能規(guī)范我們的行為和幫助培養(yǎng)工作習慣。
亮在項目進展的 過程中,一直向美國方面主張杭州團隊必須設(shè)置架構(gòu)師一職,也正是由于亮的一再爭取,美國方面最終努力地幫助我向這個方向發(fā)展,不斷為我分派屬于架構(gòu)師工作 的任務(wù)(如更新產(chǎn)品架構(gòu)模型、參與需求管理、參與系統(tǒng)設(shè)計文檔的評審、完成新特性開發(fā)工作評估等)。亮那時告訴我,我應(yīng)是杭州研發(fā)中心第一個真正從事架構(gòu) 師工作的人。
剛接觸架構(gòu)師方 面的工作時,其實還是不大自信的,盡管我那時掌握了軟件架構(gòu)師所需的基礎(chǔ)技術(shù)技能(比如,我的軟件設(shè)計能力很強、UML從1998年開始接觸加上之后的持 續(xù)學習所以功底也很好),但對于軟件研發(fā)管理方面的內(nèi)容,以及WiMAX無線接入技術(shù)知識的系統(tǒng)性認識還是相對單薄的。那時與美國同事接觸下來的感覺是, 他們的綜合能力都很強,似乎隨便一個人都知道如何做架構(gòu)師,不少人有做GSM、iDen和CDMA產(chǎn)品的經(jīng)驗,而且長期工作于無線接入技術(shù)領(lǐng)域。隨著更多 地參與架構(gòu)師方面的工作,不僅逐漸建立了自信,對Motorola的軟件研發(fā)管理也有了更為深入地認識與理解。所看到的不僅僅是產(chǎn)品技術(shù)本身的復雜度,更 有開發(fā)活動運作管理方面的復雜度。最終,我成為了整個ASN-GW產(chǎn)品的架構(gòu)師。
在2009年, 我考入了浙江大學的MBA,同時還開始著手寫自己的處女作《專業(yè)嵌入式軟件開發(fā)》。在之后長達近兩年的工作、學習和寫作的三重壓力下,我在時間管理上有很 大的進步,抗壓能力也得到了很好的鍛煉,這時我的職場第十二感悟(指其中的堅持)又讓我最終渡過了這段最為艱難的時期。(注:《專業(yè)嵌入式軟件開發(fā)》一書 其實不只專注于嵌入式,其中絕大部分內(nèi)容是C/C++開發(fā)人員應(yīng)當掌握的。當時書名中采用“嵌入式”三個字完全是因為給書定位的需要,害怕書名不具體而使 人難以選書。當然,也正因為“嵌入式”三個字,使人覺得面太窄了。有利有弊吧!該書在各大網(wǎng)上書店都歸類于“軟件工程及軟件方法學”,而非“嵌入式系 統(tǒng)”)
2010年中 期,NSN宣布收購我所在的Motorola網(wǎng)絡(luò)部門,收購活動直到2011年的4月份才結(jié)束。同時由于WiMAX市場的不景氣,美國不少系統(tǒng)架構(gòu)師轉(zhuǎn)到 了FDD-LTE產(chǎn)品線上,我也因為這一緣故擔任了大約半年的系統(tǒng)架構(gòu)師,主要負責WiMAX技術(shù)的移動性與網(wǎng)絡(luò)安全方面的工作。
2012年7月份,因為WiMAX產(chǎn)品線裁員,我轉(zhuǎn)到了NSN的WCDMA產(chǎn)品線。也從此開始離開了Motorola的研發(fā)管理環(huán)境,而真正步入了NSN的研發(fā)管理環(huán)境。真感謝你花時間讀到這!盡管我們常將“職業(yè)規(guī)劃”掛在嘴邊,實際上職場發(fā)展真的是一種“布朗運動”。你不知道下一站會是哪、也不知道后面將要從事什么工作、更不清楚后面 會碰到怎樣的老板。在眾多不確定因素面前,或許參照我一路走來所總結(jié)出的職場感悟能讓你不斷地朝好的方向發(fā)展。