2002年7月的深圳烈日炎炎。不覺已辭去工作近兩個月,仍在天天奔忙著面試,尋找新的工作機會。我已經(jīng)嘗試了好幾家公司,有小到只有一個三房一廳住宅改造成的軟件公司,也有大到有幾棟樓宇的大型IT國企。從繁華的羅湖商業(yè)區(qū)到IT企業(yè)林立的南山科技園再到美麗的蛇口,我都跑了,結(jié)果不 盡如意。我的開價是8k/月,有的公司去后即石沉大海,有的公司希望我能降降價,有的公司想讓我合作作某某項目,我coding他們出工錢,相當于作短期外包,但coding量嚇死人,工錢才6k/月, 還有一家風險投資的老板想要我作一個新媒體傳銷的技術方案。我其實蠻喜歡去面試,有挑戰(zhàn)性,又能接觸很多面試的人,借機了解各家公司的要求和情況。每天晚上我都和新婚的妻子一起在 網(wǎng)上搜羅公司,發(fā)送簡歷。隨著時間推移,我開始感到生活的壓力越來越大;我每天都在考慮我的資歷、技術實力和今后的發(fā)展方向。
深圳
從三級B證書開始
在93年畢業(yè)后我選擇回到家鄉(xiāng)——內(nèi)地一個美麗的小城市里工作。非常幸運,我進入本地的一個政府機關,按照老一輩的說法,捧上了鐵飯碗甚至金飯碗。工資每月不足1K大洋,但經(jīng)常有人請客吃山珍海味,而且還顯得威風凜凜。我渾渾噩噩地過了7年,到最后仍是個小職員。我是學經(jīng)濟的,但偏好玩計算機,除了完成打字開票據(jù)作報表的一些瑣碎工作,大部分時間就是“不務正業(yè)”去研究計算機的原理以至最后辭職時除了考了個從來沒用過的非專業(yè)計算機三級B證書外一無所成。有時想想覺得很無奈,誰叫當年念大學時選錯了專業(yè)。好歹現(xiàn)在興趣和專業(yè)是一致了。興趣和毅力才是發(fā)展之本。
2000年底我滿懷憧憬地來到這個讓我向往已久的城市,IT的泡沫當時卻已經(jīng)沉到了水底。我終于在華強北找到了一家作安防產(chǎn)品的系統(tǒng)集成公司,同意試用期內(nèi)最高工資4.5k/月接收。
這家系統(tǒng)集成公司的面試很簡單,只是問了一些Delphi編程的簡單知識,面試的L經(jīng)理大概覺得我和他合得來,就同意我的要求,讓我進來了。進來后我才發(fā)現(xiàn),這個公司的R&D部門只有我和他兩個人,主要業(yè)務是作工程的,R&D是作后勤配合的。
在這公司我的工作很簡單,主要是用Delphi為引進的國外系統(tǒng)做點小的基于數(shù)據(jù)庫的定制,這對我來說相當輕松。我的興趣常在C++和Windows平臺技術,大多時候我都把一個Delphi小應用做得很花俏,看得L經(jīng)理眼花瞭亂。
與老板的首次暗戰(zhàn)
在2001年春節(jié),公司中了一個投標項目,為某某大公司作門禁系統(tǒng)二期,其中的軟件部分是關鍵。老板急得跳,因為不能再定制了,要基于該硬件協(xié)議開發(fā)一整套軟件并且要提供與該公司的Oracle數(shù)據(jù)庫應用程序的接口;L經(jīng)理暗地里跟我說不要管,因為老板一直不加他的工資,這事情如果我們接了累死累活也是白累,還不如找外面人來做。
于是老板找來一個臺灣人做統(tǒng)領,還找來兩個臨時的打工仔做配合。臺灣人帶來一套好多年前他編的寶貝,揚言小case,會很快搞定新的Requirement,老板聽了樂得嘴都合不攏。臺灣人的價錢是每月三萬,不給源碼。L經(jīng)理和我說,要是老板給3萬我們,什么東西都會做出來還白送源碼。
臺灣人一直不肯讓我們看到源碼,躲得遠遠的修改他的代碼。直到第一次現(xiàn)場集成測試,一大堆問題浮出了水面,有通訊上的, 有數(shù)據(jù)庫上的,事情變得很緊急很糟糕,我立即建議和老板一起開會討論下一步的解決方案,在會上我從容的談了我的看法,并提出了一些應急措施,我用VC來寫ODBC數(shù)據(jù)庫接口及通信部分的代碼,臺灣人要把源碼公開出來讓我們一起解決等等。最后我的意見被采納,第一次集成測試pass。我第一次看到臺灣人的寶貝源碼,亂七八糟得可以,到處是補丁硬編碼,非常難于維護。
這次和臺灣人的合作給我在2003年后在新加坡與香港人合作過程中的確有不少幫助。他們都和我一樣,有著這或那的缺點,但都非常自信。
到二月中旬,我的3個月試用期轉(zhuǎn)眼已過去一個月了, 但工資還是保持不動,老板老是推托事多沒空和我討論。我便和L經(jīng)理商量轉(zhuǎn)正工資的事,這是非常好的時機,我已經(jīng)在這個項目里取得了主動權,L經(jīng)理,臺灣人和兩個臨時打工仔都會聽我的,而軟件演示定在3月中旬。L經(jīng)理和我很快站在了一個立場上:立即加工資加配筆記本電腦。老板很惱火,但也不得不當夜從香港帶了兩臺筆記本回來,并且打電話給我,工資調(diào)到6k,轉(zhuǎn)正補差明天就辦。L經(jīng)理也加了一千每月,樂不可支。第一次和老板交手,我們贏了。
在我拿到的轉(zhuǎn)正工資及一分錢不少的差額(補1 - 2月轉(zhuǎn)正)時,工程部一個河北的小女孩正在傷心的哭泣,她進這個公司近6個月了才轉(zhuǎn)正,可三個月差額不再補給她,相當于變成了6個月的試用期。她干得很辛苦,經(jīng)常通宵達旦做標書,可連正眼都沒一個,無情的老板。
第一個失敗的項目
雖然我得到了我想要的位置,而3月份的項目演示還是失敗了。我一直沒有意識到這僅僅只是要作一個演示系統(tǒng),然而我卻過份沉溺于技術細節(jié)以至于最后根本連最基本的東西沒有做完調(diào)試好。演示時出了大量的問題,很令人沮喪的結(jié)果。L經(jīng)理和我一樣缺乏經(jīng)驗。我有點傷感但很快平衡了——我不比專業(yè)人員差。
在隨后的1年多,老板開始重視軟件開發(fā)這一塊,同意我和L經(jīng)理的建議,我成為了這家公司的軟件經(jīng)理,L經(jīng)理是硬件經(jīng)理,由我招兵買馬,一時我們的隊伍達到8人之多。
隨著我對MFC/ATL的逐漸熟悉,我開始在隊伍中推動使用VC加基于COM/DCOM/COM+的中間件與分布式技術,在工作分配上,我把接口用IDL寫好,按照聯(lián)系緊密程度進行劃分;而L經(jīng)理不熟悉這些東西,他就象他說的已經(jīng)沒有動力再學新的東西,一直沒有技術上的進一步發(fā)展,他感到會被逐漸淡化出局的壓力,我們之間不時出現(xiàn)爭吵,距離越來越大。
2001一年下來,我寫了不下4萬行的C++代碼,但卻始終離一個真正監(jiān)控平臺—老板的想法—很遠。這只是國內(nèi)一家很小的系統(tǒng)集成商,沒有任何軟件開發(fā)的經(jīng)驗和積累,我感覺到自已能力有限,有負老板重托,我再一次走到了發(fā)展的盡頭。做軟件不僅僅是寫代碼。我越來越想到一家真正的軟件公司去學習新的東西。
由深圳到香港
我從來沒想過會去一個新加坡軟件公司工作。當我2002年7月第一次來到這個公司面試時,在做完C++/VB/COM/IQ等一系列試題后,兩個穿得整整齊齊的小伙子面試我:你的得分很高,多謝夸獎,你介意加班嗎?我說不,相反我喜歡,你有什么缺點?我想了一下,哦,有,晚上加班后第二天會起不來。對不起,能問一下你們公司是哪的嗎?新加坡的一家上市企業(yè)的下屬軟件公司。同意我的8K試用期工資嗎?沒問題。就這樣我進來了。
新加坡上市公司
我初進這家公司的身份是開發(fā)人員,感覺很新鮮。首先項目都大得我從來沒見過,動則上億。其次所有的項目都是香港或國外的,所有的文檔包括Email都是英文的,后來我才知道,雖然新加坡人會講國語,但卻斗大的中文認不到半羅筐。我的英文不好,但很快也習慣了。多虧中國的英語教育體系,學了十多年,雖然半句英文都難出口,象聾子啞巴,但開著金山詞霸寫英文俺還是能湊合湊合。另外一個現(xiàn)象,幾乎所有的人都象是工作狂,每天到晚上20:00公司還是坐滿了人。難道新加坡公司都這么敬業(yè)?
這兒的階層劃分非常不明顯,人和人之間的關系比較平和,所謂的Team Leader都和我一樣要參與編碼測試,所有人都是直呼其名,對老板或董事長也不例外。老板是個新加坡人,其實也是個打工仔,相當于新加坡外派到深圳的經(jīng)理。他絕大部分時間和我們在一起,基本上只管項目進度和與新加坡或客戶聯(lián)絡,有時也會參與需求分析,他對軟件開發(fā)的了解顯然比原來公司的老板要高出很多個數(shù)量級。但是他卻很扣門兒,連一起和大家出去吃快餐也是AA制,每人10元不等,而他一個月差不多有3萬新幣,相當于15萬人民幣的收入,年底還有分紅。不過說實話,我還喜歡這樣的工作氛圍。覺得象是在做事,求發(fā)展吧。
聞所未聞的大項目
試用期里我還呆在深圳,我最初參與的是兩個基于J2EE的解決方案的演示項目,演示地點在香港,一個V項目,一個B項目。招標總金額都在幾個億以上。Demo項目周期剛好是3個月。開發(fā)的流程大體相同,每個項目差不多6個人,確定了總體框架后,把要交待的功能點列出來,分配到各個人手里,每隔幾天集成一次,即所謂的Iterative development。每個iteration結(jié)束都會完成一部分功能。
V項目中我只是參與了一個次要功能的定制,是一個基于Windows的中文字體制作和輸入法的擴展的解決方案,我通過配合一個COM+服務器,在客戶端用代碼插入技術把一個Windows上的已有的一個桌面應用變成了一個分布式程序,解決得很漂亮,大部分的功能都不用寫了。在做完V項目后項目組中3個人即去了新加坡。剩下三個包括我加上另外三個開發(fā)人員轉(zhuǎn)入B項目的開發(fā),由于V項目里我表現(xiàn)出色,B項目里我開始負責主要的應用服務器邏輯。
B項目和印度第二大的軟件公司合作,我們負責移動通信和調(diào)派部分,他們負責SAP的安裝和定制。我們還要負責開發(fā)和他們的接口。
我在這里首先學會的是如何快速開發(fā)一個Demo系統(tǒng)。在兩個月內(nèi)想作完一個價值數(shù)億的項目是不可能的,“沒關系,把數(shù)據(jù)庫當內(nèi)存使用,只要你能正確快速地實現(xiàn)功能”,我的Team Leader這樣告訴我。在這個指導下,雖然我?guī)缀鯖]有用過Java,也在幾個星期內(nèi)完成了要求的Demo應用服務器邏輯層設計。效率低點,500毫秒嗎?夠了,遠遠滿足Demo的需要了,千萬不要鉆到技術的牛角尖里,時時想著自已在為誰作,要作什么,記往我們賣的不是自已的技術而是用戶需要的功能。這的確是非常非常重要,如果再要我回到2001年重作當時那個標,我肯定能拿下。
我們在十月底到了香港做最后的與SAP的集成測試。印度公司出的是一幫10來個黑不溜秋的印度人,嘰哩咕嚕不知說的是什么英語,我基本一句聽不懂。情況十分糟糕,接口存在大量的差異,我們給他們的XML他們居然不懂如何處理,他們一大幫人居然沒一個會Coding!他們要求全部改成標準的文本文件來交換信息,但是又不知道如何控制多進程讀寫沖突,流程幾乎無法進行下去,我簡直無法相信這是SAP的水準。我們原來的工作必須要做很大的改變,我們必須去適應他們。這次的教訓為我在兩年后設計一個雷達系統(tǒng)的接口時積累了寶貴的經(jīng)驗。
能壓死人的壓力
剛進公司時,同事和我說,在香港工作壓力很大,不是人過的日子,我還很難想象,直到這時才真正體味到。印度人在不斷的報怨以顯示他們Ready了很久,聽著他們的嘟囔經(jīng)常會有種要跳過去扁他們一頓的沖動。我們的處境非常糟糕,天天有一大幫經(jīng)理們在耳邊催,好了沒好了沒;催得人腦袋一片空白。幸虧有老板在,他白天組織與SAP的集成測試,開會和印度人討論最后的接口,晚上參與我們的修改,負責逐一檢查每個邏輯的正確性。在最后演示的那一個星期里大家平均每天睡不到3小時。星期五Demo日晚通宵旦,好歹pass過了,在調(diào)試完畢后,一早7點鐘即到會場安排布置。演示開始時,我已經(jīng)處于半夢半醒狀態(tài),坐著坐著頭就會墜下,迷迷糊糊聽著老板在談笑風生向客戶介紹我們的Demo系統(tǒng),超人!
B項目結(jié)束,我轉(zhuǎn)正了,工資升到了10K。我的Team Leader對我的技術打了個很高的分,但對我參與的Leadership(領導精神)給分很低。我奇怪,我不是Leader為何要給我評Leadership? 老板告訴我,Leadership是說不要只表現(xiàn)你這一塊,系統(tǒng)是個整體,任何一部分好不等于全都好;不是每個Leader都是神,每個人都要挑起leader的責任。這話我一直牢記在心。在1年后我?guī)ш犠鲰椖繒r,我也會要求每個人不僅只是關心他的部分,也要關心整個項目;項目是每個人的,不是項目經(jīng)理或Team Leader一個人的;每個人都得負起這個責任來。這就是Leadership!
由香港到新加坡
2003年初,當我第一次踏入新加坡時,感覺非常好,干凈清爽的城市,人都那么彬彬有禮,巴士上一丁點不擁擠。我會在這里生活半年,太好了。
但是項目的內(nèi)容卻不象我想象那樣是全新的項目可任我發(fā)揮,那是一個已經(jīng)完成并投入使用了的項目M,客戶在香港。我過來的任務是熟悉別人做好的系統(tǒng),在新加坡人的領導下做一次半年一期的維護工作,然后再將維護工作再帶回深圳做。
印度同事
我被安排在一個大約30個平方的房間里,房間名字就是項目名字M。沒有窗戶,看上去更象個倉庫。放了十來臺電腦,都是三年前的古董,跑著NT4/Win98這樣的操作系統(tǒng),M項目的全部軟件也裝在上面。
和我搭擋的新同事是一個叫賓杜的印度婦女,大約30出頭,黑黑的,總穿著印度人的長外套,有時還會在脖上掛一條長長的圍巾,我很少看到她。她在這個項目里已經(jīng)3年了,主要作coding。她只和我同事了兩個月不到便辭職而去,我后來也能體會到為什么她會辭職—這個項目要么搞掂它,要么被耗死在里面,她不能作到第一點,也不甘心最后一點,只好走中間道路。她是這個項目里最后一個Developer(開發(fā)人員),她的情形其實和我類似—都不是新加坡本地人,薪資也和我差不多,連補貼加起來不足3k新幣。我從她那里接過了整個M項目,大約幾十萬行VB代碼的維護工作。
接交工作基本上等于把代碼從一臺機拷貝到另一臺機上,我在初到新加坡的兩個月里除了Setup了一個M系統(tǒng)在我的Notebook上,幾乎什么事也沒做。即使時不時香港那方發(fā)來一些要Fix的Bugs,也大多推到6月的Release包里一起解決。賓杜大多時候也沒事兒,經(jīng)常看她在學習C++與Java或和她的小女兒褒電話粥。
新加坡生活
新加坡的工作非常輕松,完全不象深圳和香港的風格。按要求是早上8:30上班,8:30到9:00是早餐時間,實際上很多人10點還沒見蹤影。沒有打卡,全靠自覺。中午12:00到下午1點是午餐時間,有錢的新加坡人喜歡一幫人開車出去,在很遠的餐館里吃,吃完后坐著喝冷飲聊天,經(jīng)常聊到兩點才回來。下午4:00到4:30是下午茶時間,有的人趁這個時間換上運動裝,出去跑一圈步鍛煉身體。6:00準時下班。周末假日雷都打不掉,一定會在家休息。我這才理解去年做香港的演示項目時新加坡人的工作態(tài)度。當時都已經(jīng)到火燒眉毛了,星期五下午5:30,新加坡這邊的領導還在叫叫嚷嚷,但一過6:00就找不到人了;第二天我們?nèi)栽诩影啵尚录悠逻@邊一個人也看不到。我終于有個結(jié)論,新加坡的工作狂全派深圳和香港去了。
這里吃的很雜,馬來,印度,香港,福建風味或西餐,但變化很少,好象總共只有幾個模子,而幾乎每家店鋪的菜都是從其中一個里造出來。新加坡管大排檔叫巴沙(馬來語)。每個巴沙結(jié)構(gòu)都差不多:每種風味各有一個私人鋪檔,吃飯的地方是公共的,有專門的人,一般是馬來人收拾餐桌。巴沙比較便宜,一個人一頓在2-5個新元內(nèi)就可以吃飽了。而餐館點菜比較貴,一般一個菜也要10個新元(50元人民幣)左右。相比起來,麥當勞、肯得基這樣的店在新加坡算貴的了,一頓至少要6元(30人民幣左右),而在香港,MacDonald與KFC是最平的快餐,和大陸是一樣的價。新加坡人不喜歡在家做飯,大概是怕油煙,都會跑出來吃;去新加坡人的家里,經(jīng)常看到房子買了好多年,廚房和廚具還是嶄新的。所以在這里巴沙是最普遍的。雖然是島國,新加坡本地大部分食品來自進口,新鮮的海味都非常貴,難怪老板在深圳那么愛吃海鮮。在新加坡呆久了,讓我最想念的便是吃一頓四川麻辣火鍋。
我開始有這樣的感覺:什么叫發(fā)達國家?就是發(fā)達到已經(jīng)沒有什么發(fā)展了的國家。就象新加坡很多的建筑都是十幾年前都建好,每年新建改建的相當少。樓價在下跌,下跌了好幾倍,經(jīng)濟不景氣,很多人從公寓搬出來搬到政府組屋里住。一些新加坡人則很想到中國來工作,我問他們中國哪里好?他們告訴我上海。2003年上半年正值SARS其間,節(jié)假日商店里都很少人,連往日很熱鬧的體育館游泳池都空蕩蕩的,除了在門口量體溫的幾個工作人員外,幾乎沒什么人。
會“死”在里面的項目
在賓杜辭職之后,只剩下我一個人在這個大房間里,偶爾才會有個新加坡人進來這個房間和我討論將要做或正在做的事情。他們顯然對我不在意—一個Developer而已。無論是和香港客戶的會議還是內(nèi)部的會議,都沒有讓我參與。我只知道在6月份會去香港客戶那里做Release前的調(diào)試工作,平常自已安排時間對付那些發(fā)過來的bug。到最后我甚至不知道究竟目前M項目組中有多少人。可能只有一點是肯定的,只有我一個Developer。每次香港發(fā)過來新的問題,那幫新加坡M項目組的人就會開一次會議,想必除了聊天的主題外,估計就是七嘴八舌猜測癥結(jié)可能出在什么地方。也許他們太高層了,以至于沒人愿意看代碼。
事實上,那一大堆VB代碼上很讓人頭疼。它是一大批人做過的結(jié)果。一個函數(shù)能長達上千行,打滿了補丁,到處是交叉引用莫明其妙的全局變量,面對這么混亂的代碼笨蛋都想得到根本是沒什么設計文檔可言。M項目組中有人認為我對整個項目的需求非常不清楚,還專門給我上過近一個鐘很嚴厲的課,我還在想他們是不是在暗示我懂需求就會看懂那代碼吧?!直到今天我都還沒法讀懂那些代碼,沒完全搞懂M項目中每一個詳細的需求。我只是見招拆招,針對每個要修補的問題來做事—醫(yī)治一只手指上的傷,犯得著把整個人體研究個遍?兩個月差不多解決了30-40個bug后,6月份我飛到香港呆了兩個星期,和香港子公司同事一起作回歸測試,按計劃,輕松地交出了第一次Release。
我還不能回深圳,在香港子公司的測試安裝人員把應用程序deploy到客戶的幾百臺移動客戶端上之前,我還得在新加坡作最后1個月的技術支持。從香港再次回到新加坡后,我開始直接和香港測試人員聯(lián)系而不再需要M項目組作傳話筒。
補丁加補丁還是其他
7月的前三個星期一點問題都沒有,在最后的一個星期4卻突然發(fā)過來一個特殊的需求,是一個傳真的中文支持問題。非常關鍵的問題,如果不解決的話,整個的Release就不會得到客戶的認可。我花一天時間測試,發(fā)現(xiàn)牽涉的地方相當多;要做大手術才能根本解決問題。而香港的執(zhí)行經(jīng)理Tim不同意動大手術,堅持用補丁上加補丁的方法解決—那樣會比較保險,但會出現(xiàn)拆東墻補西墻的問題。按日程我每天都得不斷提交測試版本,要在下星期三前讓東墻西墻都得到照顧。
我估計了一下時間后,認為補丁上加補丁風險更大,于是在沒有通知香港方面的情況下,在周末作了較大范圍的修改。星期一,我按要求提交了測試版本,香港那邊發(fā)現(xiàn)了很多新問題,比原來發(fā)過來的要多一倍—這是在我看來是很正常的,動大手術的結(jié)果,但仍很有信心。Tim開始叫嚷起來,我只是跟他說“Trust me”。星期二早上我又例行提交了一個版本,返回還是一大堆問題,Tim坐不住了,打電話到了新加坡M項目組的陳老板大罵我不聽話。將近中午時間,我發(fā)出了來新加坡這半年來最后一個修補版本。吃完午飯回來,收到香港Test Bed那邊發(fā)回的結(jié)果,所有問題都Ok。我隨即向陳老板和Tim轉(zhuǎn)發(fā)了這份Email。哈,我贏了。星期四,Tim發(fā)回信件再次確認我的所有工作都完成。陳老板親自請我吃臨別飯,稱贊我Creative。那個周末我終于返回了告別已久的深圳。
這最后的一次和Tim的較量讓我開始在這家公司得到了真正的重視。8月底老板交給我一個Demo項目,由我為首帶了兩個新人作。客戶是新加坡民防部門。時間非常短,只有不足3個星期時間。發(fā)揮的機會來了。我選用了MSMQ為中間件,我作通信和COM接口部分,由兩位同事分別作客端和服務器端邏輯部分。開發(fā)工具主要用VB,GIS部分復用了我在M項目里作的一個組件。此時我對這種分布系統(tǒng)的快速開發(fā)的過程已非常熟悉。曾經(jīng)被我瞧不起的VB現(xiàn)在看來實在是個快速建原型的好工具,兩個星期我們就推出了兩個版本。9月中旬,我?guī)е鴥蓚同事再次回到新加坡,非常輕松的完成了一次成功的Demo。一個月后,新加坡同事告訴我,這個項目已經(jīng)接下來了,Demo效果非常好。
此時的新加坡對我除了沉悶無聊外已經(jīng)沒有其它感覺,在接下一個游戲引擎項目里呆不到三個月,我就堅決要求返回深圳。12月底,我被安排到香港的一個6個億的T項目里作System Testing(系統(tǒng)測試)。
新加坡到香港
香港這個T項目是由深圳公司從2001年就開始開發(fā)的。開發(fā)人員多達30多人,連設計測試管理人員一起加起來不下100多人。曲曲折折已經(jīng)開發(fā)3年多了,現(xiàn)在進入最后的測試階段。我被安排常駐香港,任務是對系統(tǒng)的效率,穩(wěn)定性進行測試并給出解決方案。
Team Leader
我初進便是Team Leader的身份,帶的幾個T項目里的老資格的開發(fā)人員一起作System Testing。這對我非常不利。因為我對整個系統(tǒng)的需求非常不熟,我也不能再用見招拆招的策略,因為Testing的第一要事便是熟悉需求。現(xiàn)在的需求文檔堆起來可以有幾米高,我光去讀它就要讀上半年,還能作什么事呢!?
從新加坡回到香港,大都會覺得香港破舊和臟亂。但香港人的敬業(yè)精神卻遠遠超過了新加坡人。項目作了三年,很多新加坡人或深圳人都覺得如嚼干蠟,唯有香港這邊的員工仍是樂此不疲,每人每天都處于高度運轉(zhuǎn)狀態(tài)。我雖初進此項目,卻沒有新鮮感;好幾天都沒有任何的進展,也不知道從何干起。香港的項目經(jīng)理每天都會要求Update Status(匯報工作進度),壓力很大。
測試工具
這里有個北歐人,是Technical Consultant身份,他將要被安排到其它的項目里去。我的一項任務便是要接替他的工作。我?guī)缀趸藘蓚星期研究他現(xiàn)在的System Testing的方案后才把焦點集中到自動測試的工具上。
我的目標要在帶有500臺客戶端,200個并發(fā)連接的情形中連續(xù)測試,以證明我們的軟件可以穩(wěn)定快速的運行X天,達到預期的目標。自動測試工具是必不可少的。WinRunner 和Rational 公司的Robot是常見的大型軟件測試工具,但卻在這個項目里使不上勁來。首先是兩樣工具都龐大緩慢,測試里經(jīng)常發(fā)現(xiàn)連測試工具和測試對象一起死掉。其次,這么大的一個項目在設計時居然沒有考慮為測試專門留接口,很多情況下要玩技巧來判斷應用程序當前的狀態(tài)和下一步鼠標鍵盤的動作。第三是這兩種軟件都比較貴,而公司目前只為WinRunner買了4套License,對近五百臺要測試的機器來說無異于杯水車薪。
北歐人推薦了一款小共享軟件,Automate4.5,一瘸一拐可以走一兩個流程自動化。我仔細的分析了一下它的風險,除了是現(xiàn)成的軟件外,其它沒一點好。一是太邪門兒,自動記錄的腳本是一堆看不懂的亂碼,沒法修改編輯,只能重新記錄。(在5.0以后它已改用XML。)二是功能雖廣泛但界面處理這塊太弱,10%的要求都達不到。三是數(shù)據(jù)和流程混在一起,沒法應用大量不同數(shù)據(jù)進行測試。更糟的是(1)和(3)結(jié)合在一起,哪怕只要我們的應用界面上有一個控件的Tab順序調(diào)換一下,我都得重寫整個流程的腳本代碼。如果用這個軟件作System Testing, 我以后都別想出來了——死定了。
我還是要試一試
我對Windows平臺技術相當熟悉,很有信心在一個月內(nèi)完成一個比Automate 4.5更好更適合于現(xiàn)在的系統(tǒng)測試要求的自動化工具。于是我把想法發(fā)到項目經(jīng)理那里。他很擔心,北歐人是個權威,我說的也有道理。我讓他給我一個星期時間來測證我的想法,他同意了。
一星期后,我的原型出來了,其實是一套COM組件服務外加一個腳本容器。首先使用的是那個北歐人,在我的配合下,他試了兩個鐘頭,用VBScript重寫了原來他用Automate 4.5作的兩個流程,是一模一樣的效果。他非常滿意,數(shù)據(jù)流程分開了,腳本語言是常用的VBScript, 功能擴展很容易,掛入動態(tài)庫就可以。于是我從項目經(jīng)理那得到了一個月的開發(fā)時間。
經(jīng)過一個月艱苦的開發(fā)工作,好歹自動化工具終于完成。我?guī)Я艘粋熟悉需求的開發(fā)人員一起又花了兩天,作了第一套System Testing的自動化測試流程的腳本。當天,我們作了一次簡單的Demo, 所有人評價都是: So Impressive! 這是他們?nèi)陙淼谝淮慰凑麄復雜的流程被自動化運轉(zhuǎn)起來了。
2004年5月份職位變動,老板宣布了最新公司最高領導層人員名單,其中一個就是我。
對程序員職業(yè)的思考
很多人認為程序員是一種吃青春飯的職業(yè),其實這只是一種誤解,或者說他們根本沒有深入程序員的生活和工作,只是膚淺的接觸了軟件開發(fā)領域的表象,渴望迅速成功,卻不愿意付出艱辛的努力,這種努力不是熬幾個夜就可以的,而是應該是持之以恒的。回想起在新加坡孤獨的日子,在香港挑燈奮戰(zhàn)的日子,我始終沒有放棄,我相信自己能夠闖出一片天地,我想給年輕的朋友們一點忠告,也可以說是我個人對實現(xiàn)職業(yè)規(guī)劃的幾點看法:
1. 工作要主動。你的領導和你其實一樣,經(jīng)常不能確定下一步將要做什么才是對的,你要積極主動地考慮你應當如何開展下一步的工作。
2. 把自已放在更高的位置上去考慮工作,如果你是Developer, 就要至少站在Designer的立場上。不但要想到自已的工作,也要想到別人的工作,想到對整個工作組與項目的影響,想到今后的變化如何應付。
3. 了解,相信和展示自已。相信自已要落在實處,而不是象阿Q式的精神勝利法。了解自已是前提,想方設法把自已的擅長與能力充分地應用和體現(xiàn)到每個工作中去。
4. 認真負責做好每一件事,否則就不要做,切忌用混日子,消極的方式處理。
5. 多和你的領導與周圍同事溝通,了解他們的情況,盡可能的幫助他們。
6. 要不斷學習新的技術,開闊自已的眼界,提高自已的內(nèi)在素質(zhì)。這是個基礎條件。沒有內(nèi)在的提高就沒有能壓倒的優(yōu)勢和正確的判斷力。
也許你會說這些都是老生常談,這些我都知道,但知易行難,貴在持之以恒。