亂戰(zhàn)

  我這邊沒(méi)事了,CM小組卻開(kāi)始焦頭爛額。

  CM模塊幾次編譯均告失敗,而法國(guó)同事提供的編譯錯(cuò)誤日志亂七八糟,毫無(wú)幫助。原來(lái),我們項(xiàng)目當(dāng)時(shí)尚未采用分布式編譯技術(shù),為了縮短編譯時(shí)間(僅僅某一個(gè)子模塊單機(jī)重新編譯需要18小時(shí)),法國(guó)的集成測(cè)試團(tuán)隊(duì)自行編寫(xiě)了一個(gè)腳本,開(kāi)啟幾路進(jìn)程并行編譯各個(gè)子目錄。這個(gè)腳本寫(xiě)得過(guò)于簡(jiǎn)單,幾路進(jìn)程的輸出信息全都雜七雜八攪到了一塊兒,以至于CM小組研究了幾天,連到底哪個(gè)子目錄編譯不過(guò)都沒(méi)鬧明白!

  CM小組嘗試向風(fēng)雨飄搖中的法國(guó)集成測(cè)試團(tuán)隊(duì)請(qǐng)求幫助:“你們能否用單路進(jìn)程編譯CM模塊的各個(gè)子目錄,將錯(cuò)誤信息提供給

  我們?”

  法國(guó)人回答:“請(qǐng)中國(guó)團(tuán)隊(duì)盡快修復(fù)編譯,你們堵住了整個(gè)項(xiàng)目!”

  CM小組解釋說(shuō):“我們正在努力,你們能不能幫忙……”

  法國(guó)人回答:“請(qǐng)中國(guó)團(tuán)隊(duì)盡快修復(fù)編譯,你們堵住了整個(gè)項(xiàng)目!”

  CM小組再次嘗試:“這一錯(cuò)誤本地不能復(fù)現(xiàn),而編譯日志……”

  法國(guó)人回答,并且抄送各路神仙:“請(qǐng)中國(guó)團(tuán)隊(duì)盡快修復(fù)編譯,你們堵住了整個(gè)項(xiàng)目!”

  外事不靖,內(nèi)部也不安寧:CM小組的小組長(zhǎng)B和技術(shù)骨干S此刻正在斗氣!從一開(kāi)始,B將編譯錯(cuò)誤的排查工作分配給自己和另一位同事,沒(méi)有邀請(qǐng)S介入,而S也不主動(dòng)過(guò)問(wèn)。沒(méi)想到這么一個(gè)乍看上去再簡(jiǎn)單不過(guò)的錯(cuò)誤一拖是好幾天,這樣一來(lái),雙方陷入僵局。站在B的角度,如果連個(gè)編譯問(wèn)題自己都解決不了,還得請(qǐng)S來(lái)當(dāng)救兵,這不是坐實(shí)了自己不懂技術(shù)的指控嗎,這張臉以后還怎么擱?再說(shuō)S一直面無(wú)表情地坐在自己的電腦前做自己那一攤事情,一句問(wèn)話(huà)沒(méi)有,這不擺明了是要袖手旁觀(guān)嗎?而S也有自己的苦衷:自己要是一開(kāi)始主動(dòng)介入倒也罷了,如果拖到現(xiàn)在才出手,那怎么解釋自己前幾天不聞不問(wèn)的態(tài)度?算自己辯解說(shuō)確實(shí)沒(méi)有端架子、看領(lǐng)導(dǎo)笑話(huà)的意思,完完全全是在服從領(lǐng)導(dǎo)安排,也得有人信!雙方有一點(diǎn)想法倒是共同的:這個(gè)編譯錯(cuò)誤趕緊消失了吧……

  既然CM小組遲遲不能修復(fù)編譯,順理成章地,項(xiàng)目經(jīng)理(一個(gè)不偏不倚的法籍華人)開(kāi)始找他們的上級(jí),也是我們共同的經(jīng)理T。然而?她找不到T!事情是這么湊巧,雖然T平時(shí)神龍見(jiàn)首不見(jiàn)尾,可像這次這樣整個(gè)禮拜辦公室都不怎么見(jiàn)人影、寫(xiě)信也不太回的情況還真不多。連續(xù)幾天,項(xiàng)目經(jīng)理從法國(guó)給T的座機(jī)打電話(huà),按說(shuō)這是法國(guó)的休息時(shí)間,中國(guó)的上班時(shí)間,可是法國(guó)那邊有人打,中國(guó)這邊沒(méi)人接。電話(huà)留言、電子郵件都不好使。項(xiàng)目經(jīng)理急了,電子郵件寫(xiě)得越來(lái)越不客氣,每封信的結(jié)尾都是同一句話(huà)?“T在哪里!”……

  事情終于驚動(dòng)了上面,領(lǐng)導(dǎo)出來(lái)問(wèn)話(huà)了:“發(fā)生了什么事?為什么會(huì)耽誤到現(xiàn)在?”法國(guó)團(tuán)隊(duì)再次暗示中國(guó)團(tuán)隊(duì)無(wú)能,中國(guó)團(tuán)隊(duì)則強(qiáng)調(diào)本地?zé)o法復(fù)現(xiàn),必須法國(guó)團(tuán)隊(duì)配合,項(xiàng)目經(jīng)理在居中調(diào)解的同時(shí)狠狠地告了T一狀……領(lǐng)導(dǎo)不愧是領(lǐng)導(dǎo),跳過(guò)T的事情不提,和藹可親地建議法國(guó)團(tuán)隊(duì)考慮中國(guó)團(tuán)隊(duì)的合理要求……事情終于走上正軌。法國(guó)團(tuán)隊(duì)終于按照CM小組的建議嘗試單路編譯;與此同時(shí),B主動(dòng)去征求S的意見(jiàn),問(wèn)他是否愿意參與排查,而S也立刻答應(yīng)下來(lái);T又神秘地出現(xiàn)在辦公室里,如果這有關(guān)系的話(huà)……經(jīng)過(guò)整整一周的紛擾,周五,編譯終于成功。

  那么,這一編譯錯(cuò)誤到底是如何產(chǎn)生的呢?說(shuō)起來(lái),這居然還與前述混亂的版本計(jì)劃有關(guān)。在4.0版本中,出于兼容舊有設(shè)備的需要,CM模塊中有些文件按照f(shuō)oo_V4.h的格式命名,后來(lái)升級(jí)到4.1、4.2版本后文件內(nèi)容相應(yīng)修改,文件名保持不變。可是5.0版本實(shí)際上是4.1、4.2版本的綜合,CM小組被迫把4.1、4.2這兩個(gè)版本的foo_V4.h文件都引入5.0版本,文件名分別命名為foo_V41.h和foo_V42.h以示區(qū)別。換言之,文件名變長(zhǎng)了一個(gè)字符,而這導(dǎo)致法國(guó)集成測(cè)試團(tuán)隊(duì)的編譯腳本中的命令行超過(guò)了大長(zhǎng)度的限制……

  尾聲

  軟件工程應(yīng)該怎樣做?我本來(lái)以為CMM、TL 9000等是王道,經(jīng)歷這一風(fēng)波我才深切地體會(huì)到,再好的流程與制度也經(jīng)不住扯淡啊。人和重要。

  無(wú)論版本號(hào)如何,我們的產(chǎn)品終究還是銷(xiāo)路不暢。新任CEO上臺(tái)后,大刀闊斧厲行改革,將整條產(chǎn)品線(xiàn)出售。畢竟,對(duì)于IT業(yè)來(lái)說(shuō),創(chuàng)新才是利潤(rùn)之源,單純的削減成本沒(méi)有出路;谶@一認(rèn)識(shí),我轉(zhuǎn)投互聯(lián)網(wǎng)公司,從此踏上新的征程……