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

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

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

風(fēng)起

第一波的事故,我是直接責(zé)任人之一:因?yàn)槲业氖д`,我負(fù)責(zé)的FM模塊沒(méi)有通過(guò)編譯。

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

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

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

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

亂戰(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)話沒(méi)有,這不擺明了是要袖手旁觀嗎?而S也有自己的苦衷:自己要是一開(kāi)始主動(dòng)介入倒也罷了,如果拖到現(xiàn)在才出手,那怎么解釋自己前幾天不聞不問(wèn)的態(tài)度?算自己辯解說(shuō)確實(shí)沒(méi)有端架子、看領(lǐng)導(dǎo)笑話的意思,完完全全是在服從領(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ī)打電話,按說(shuō)這是法國(guó)的休息時(shí)間,中國(guó)的上班時(shí)間,可是法國(guó)那邊有人打,中國(guó)這邊沒(méi)人接。電話留言、電子郵件都不好使。項(xiàng)目經(jīng)理急了,電子郵件寫(xiě)得越來(lái)越不客氣,每封信的結(jié)尾都是同一句話—“T在哪里!”……

事情終于驚動(dòng)了上面,領(lǐng)導(dǎo)出來(lái)問(wèn)話了:“發(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)系的話……經(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)品終究還是銷路不暢。新任CEO上臺(tái)后,大刀闊斧厲行改革,將整條產(chǎn)品線出售。畢竟,對(duì)于IT業(yè)來(lái)說(shuō),創(chuàng)新才是利潤(rùn)之源,單純的削減成本沒(méi)有出路;谶@一認(rèn)識(shí),我轉(zhuǎn)投互聯(lián)網(wǎng)公司,從此踏上新的征程……

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