您的位置:軟件測試 > 軟件項目管理 > 項目人 >
一地雞毛??軟件項目中的人際困局
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/7/15 15:33:01 ] 推薦標簽:

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

4.2版本更倉促地做出來了。又又有,經(jīng)理通知大家:4.2版本過于激進,工期又短,從設(shè)計到實現(xiàn)毛病多多,公司也不看好,決定立刻開始5.0版本計劃。這一次倒是沒有太荒唐的事情發(fā)生。5.0版本實際上沒有什么全新的特性,而是將4.1、4.2這兩個版本的特性做一折中,從這個意義上講,叫它4.1.5版本更合適,當然這個話不能對客戶說。這樣,幾個月以來第一次,大家終于能夠做點兒靠譜的事情。然后,出事了。

風(fēng)起

第一波的事故,我是直接責任人之一:因為我的失誤,我負責的FM模塊沒有通過編譯。

我還記得前幾個版本交付時和H一起工作的情景。她會敦促我們盡量提前完成開發(fā)和測試工作,提交代碼,打上標簽,撰寫交付文檔。她會親自檢查我們的交付文檔,連一個細節(jié)也不放過。比如有一次,她發(fā)現(xiàn)我無意中開啟了Microsoft Word的中文自動糾錯功能,把“…”(在版本配置中具有特殊含義)自動替換成了半個中文省略號“…”,讓我臉上無光。大大小小的問題被她連續(xù)抓住幾次之后,我開始小心謹慎,此后幾個版本都順利過關(guān)。印象深的還是編譯時的一次次待命。由于時差的關(guān)系,法國同事依據(jù)標簽提出代碼開始編譯的時間是在北京的晚上,每一次,H都會帶領(lǐng)我們幾個少數(shù)技術(shù)骨干在辦公室待到夜里,直到我們團隊負責的所有模塊都成功編譯之后才離開。這可真是一件苦差事,而且在我當時看來毫無必要—我們的模塊從來都是一次編譯成功,錯誤(如果有的話)從來都屬于其他團隊。有一次,法國同事連續(xù)犯錯,導(dǎo)致編譯遲遲不能開始。當時我還保留著自校園帶出來的早睡的習(xí)慣,時間一長,上下眼皮開始打架。H跑到我的座位,談人生,談理想,談八卦,反正是不讓我睡著。一直堅持到凌晨兩點,編譯開始之后照例一次成功,H才領(lǐng)著饑腸轆轆的我們離開辦公室,請我們到樓下的小店吃宵夜。喝著溫暖的豆?jié){,我在心中嘀咕:“真是事兒媽啊。”

這一次,“事兒媽”不在了,新任經(jīng)理給予我們“完全的信任”,從頭至尾都放開手—這同一件事情我們都連續(xù)做了好幾遍了,還能出什么錯呢?

還真出事了。前幾次,我們至少能夠提前一周左右的時間完成全部工作,這搶下的一周時間足夠我們反復(fù)測試、排查問題,并為應(yīng)對突發(fā)事件留下時間—盡管突發(fā)事件從未發(fā)生。而這一次,大家經(jīng)過連續(xù)幾次折騰之后疲憊不堪,工作效率低下,更何況這次的工期本來偏緊,還被前面幾個環(huán)節(jié)擠占不少。我們FM小組勉強提前幾天完成工作,CM小組卻陷入苦戰(zhàn),加班加點,緊趕慢趕才在后完成。FM模塊依賴于CM模塊,這樣一來,我們也受到連累,不得不換上CM小組新的標簽,重新測試FM模塊、打標簽、修改交付文檔。等到我餓著肚子敲完后一個字符,又仔仔細細檢查了幾遍,已是周五晚上7~8點鐘的光景。我長吁一口氣,站起身來,搖搖晃晃地離開了辦公室。

等到我周一早晨回到辦公室,這才發(fā)現(xiàn)自己犯下低級錯誤:我忘記將修改后的交付文檔保存在指定目錄了!這樣一來,法國同事?lián)跃幾g的乃是先前保存的老版本的交付文檔,F(xiàn)M模塊編譯失!我趕緊寄出道歉信,連同新的交付文檔。然而,晚上的編譯仍然沒有成功。根據(jù)法國同事提供的編譯錯誤日志,我很快發(fā)現(xiàn)問題:FM模塊與其他依賴模塊之間使用了不一致的標簽。說起來還是怪我們兩邊當時掉以輕心,只是口頭約定了一下,也不知怎么聽岔了,關(guān)鍵時刻害人。又是一番折騰,F(xiàn)M模塊在第三次編譯中順利通過,我心中一塊石頭才算是落了地。

亂戰(zhàn)

我這邊沒事了,CM小組卻開始焦頭爛額。

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

CM小組嘗試向風(fēng)雨飄搖中的法國集成測試團隊請求幫助:“你們能否用單路進程編譯CM模塊的各個子目錄,將錯誤信息提供給
我們?”

法國人回答:“請中國團隊盡快修復(fù)編譯,你們堵住了整個項目!”

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

法國人回答:“請中國團隊盡快修復(fù)編譯,你們堵住了整個項目!”

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

法國人回答,并且抄送各路神仙:“請中國團隊盡快修復(fù)編譯,你們堵住了整個項目!”

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

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

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

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

尾聲

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

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

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd