團(tuán)隊(duì)廣義上講是一個(gè)集體的描述。狹義上講是開(kāi)發(fā)人員的集體,我們這里只討論廣義的概念。團(tuán)隊(duì)里面的主要成員是人,但也包括所使用的工具,設(shè)備等等資源,。這個(gè)概念任何書(shū)本上都沒(méi)有澄清,但在我描述壓力下的團(tuán)隊(duì)建設(shè)之前必須先要談?wù)勥@個(gè)概念,以及這個(gè)概念所引發(fā)的一些經(jīng)驗(yàn)。
一、團(tuán)隊(duì)的概念
團(tuán)隊(duì)是為達(dá)到統(tǒng)一目的集體的總和。它由集體中的人、工具、設(shè)備、以及一些輔助資源,比如說(shuō)某些特定信息等等來(lái)構(gòu)成。因此團(tuán)隊(duì)是具有獨(dú)立工作能力的,有獨(dú)立思維環(huán)境的一個(gè)團(tuán)體。如果有人告訴我,他和朋友組成了一個(gè)開(kāi)發(fā)office的團(tuán)隊(duì),沒(méi)有固定的工作環(huán)境,在互聯(lián)網(wǎng)進(jìn)行信息交流。我當(dāng)然不會(huì)相信,因?yàn)樗麄儾痪邆洵h(huán)境,是個(gè)不完整的,沒(méi)有開(kāi)發(fā)能力的協(xié)助而已。他們只能做一個(gè)完整團(tuán)隊(duì)的一部分。這里大家不要把團(tuán)隊(duì)局限在軟件行業(yè),一臺(tái)計(jì)算機(jī)幾套盜版的開(kāi)發(fā)環(huán)境就可以了。因此為了使團(tuán)隊(duì)正常運(yùn)作起來(lái),關(guān)鍵部分就是環(huán)境的構(gòu)建,人在團(tuán)隊(duì)的角色只是創(chuàng)造性勞動(dòng)者。因此團(tuán)隊(duì)建設(shè)中針對(duì)人的部分可以描述為:為創(chuàng)造性勞動(dòng)構(gòu)建環(huán)境的過(guò)程;針對(duì)環(huán)境的部分可以描述為:為重復(fù)性勞動(dòng)構(gòu)建環(huán)境的過(guò)程。所以前者需要靈活,自由與嚴(yán)謹(jǐn),后者需要穩(wěn)定、快速與準(zhǔn)確。簡(jiǎn)單的實(shí)例:比如軟件開(kāi)發(fā)中人員是相對(duì)自由的,他們可以自由交談,可以自由調(diào)節(jié)休息時(shí)間等等,使用的計(jì)算機(jī)應(yīng)該是快速的穩(wěn)定的,雖然滿足工作就好,但誰(shuí)又討厭更快的速度呢?信息也是團(tuán)隊(duì)的一部分,比如是面對(duì)某個(gè)項(xiàng)目要作的前期培訓(xùn),應(yīng)該具備準(zhǔn)確的概念與快速入門(mén)的性質(zhì)。這些都是團(tuán)隊(duì)的一部分。而且是缺一不可。至于團(tuán)隊(duì)人員的選擇屬于主觀問(wèn)題,一言不可盡其極,這里就不再論述了。
二、團(tuán)隊(duì)中的軟件工程
上面我故意回避了一個(gè)問(wèn)題,就是團(tuán)隊(duì)內(nèi)部的項(xiàng)目管理。要說(shuō)明這個(gè)問(wèn)題,必須先要了解軟件工程。軟件工程包括兩方面的內(nèi)容:第一、軟件的開(kāi)發(fā)技術(shù)。第二、軟件項(xiàng)目管理。軟件開(kāi)發(fā)技術(shù)包括了所有現(xiàn)在的開(kāi)發(fā)細(xì)節(jié),這個(gè)我沒(méi)有能力來(lái)說(shuō)明,在這里我只談?wù)勡浖_(kāi)發(fā)的項(xiàng)目管理部分,但一定要明白項(xiàng)目管理只是軟件工程的一部分,而不是全部。軟件工程論述部分可以參照我在
www.csdn.com上的專(zhuān)欄文章《軟件設(shè)計(jì)深度挖掘一》,時(shí)間有點(diǎn)久遠(yuǎn),但里面我需要修正的東西不是很多。用
www.google.com可直接搜索到。
下面我談?wù)剤F(tuán)隊(duì)的軟件工程。
團(tuán)隊(duì)的規(guī)模和軟件工程匹配成正比,比如10人以下的團(tuán)隊(duì),軟件工程中很多問(wèn)題都可以解釋為人員的交流。而10-25人的團(tuán)隊(duì)則需要很少的中間信息交換的管理,比如使用郵件來(lái)發(fā)送任務(wù)書(shū)等等,25-50人團(tuán)隊(duì)則需要使用更多的中間質(zhì)量保證,比如使用ClearCase來(lái)進(jìn)行配置管理,vss顯然不適應(yīng)大規(guī)模軟件開(kāi)發(fā)。從小團(tuán)隊(duì)到大團(tuán)隊(duì)的過(guò)程中增長(zhǎng)的不是軟件工程的應(yīng)用程度的變化,而是對(duì)軟件工程的應(yīng)用方式的改變。團(tuán)隊(duì)的大小和使用軟件工程沒(méi)有任何沖突,不同團(tuán)隊(duì)都要確保最終的軟件質(zhì)量,這個(gè)很顯然,我們會(huì)在小團(tuán)隊(duì)?wèi)?yīng)用靈活的,直接的交流方式,比如口頭糾正一些膚淺的錯(cuò)誤,直接互看代碼,直接指出相互在開(kāi)發(fā)中存在的問(wèn)題,這樣做因?yàn)槲覀冏非笮剩|(zhì)量在遞增的完善中顯的十分完美。大團(tuán)隊(duì)為了避免信息交流的爆炸,必須采用一些中間管理步驟來(lái)確保各種團(tuán)隊(duì)信息流的負(fù)載平衡。項(xiàng)目管理也就在這樣的需求下很自然的產(chǎn)生了。因此團(tuán)隊(duì)的軟件工程就是完善的軟件工程體現(xiàn)。只是很多情況下不知不覺(jué)的錯(cuò)過(guò)了總結(jié)的機(jī)會(huì),當(dāng)過(guò)程結(jié)束就很難再完善的歸納了,畢竟回憶是片段的。我會(huì)經(jīng)常聽(tīng)到有人說(shuō)自己參加的都是小項(xiàng)目,沒(méi)有軟件工程的經(jīng)驗(yàn),其實(shí)你所擁有的是軟件工程的不同表現(xiàn)而已,沒(méi)有參加過(guò)小項(xiàng)目的人對(duì)軟件工程的認(rèn)識(shí)當(dāng)然也是不完全的。
三、壓力下的團(tuán)隊(duì)建設(shè)
我們不可能總是在開(kāi)發(fā)大型項(xiàng)目,因此開(kāi)發(fā)模式中適合小團(tuán)隊(duì)的模式比較多,大團(tuán)隊(duì)的管理模式其實(shí)是很成熟的,幾乎所有軟件工程著作都非常適合大型軟件工程。因此我們討論小團(tuán)隊(duì)的團(tuán)隊(duì)建設(shè)以適應(yīng)大部分的情況。
壓力下改變的只有團(tuán)隊(duì)中的人。那么,壓力下的團(tuán)隊(duì)是怎樣的呢?
最嚴(yán)重的問(wèn)題是他們會(huì)感到絕望。由于方方面面的原因都有可能造成團(tuán)隊(duì)成員的情緒變化,而且絕大部分情況都是不可逆的。當(dāng)時(shí)間太短與項(xiàng)目太大之間的情況發(fā)生,團(tuán)隊(duì)必然會(huì)發(fā)生對(duì)項(xiàng)目能否完成的討論,討論帶來(lái)情緒波動(dòng),之后是浮躁,心慌,工作效率低下也隨之而來(lái),其實(shí)產(chǎn)生這個(gè)的原因是因?yàn)樗麄儏⑴c了項(xiàng)目管理的討論。在很多情況下團(tuán)隊(duì)所有成員是應(yīng)該避免參與項(xiàng)目規(guī)劃部分的談?wù)?,而更大部分討論?yīng)限制在項(xiàng)目本身,比如設(shè)計(jì)上。我不得不重點(diǎn)強(qiáng)調(diào)項(xiàng)目經(jīng)理的作用,因?yàn)樗獡?dān)負(fù)起不可思議的一對(duì)悖論問(wèn)題的解決,一個(gè)根本不可能完美解決的問(wèn)題的解決方案的設(shè)計(jì)。但團(tuán)隊(duì)人員很聰明,他們知道團(tuán)隊(duì)面臨的問(wèn)題,當(dāng)然就有自己的想法,這個(gè)應(yīng)該由項(xiàng)目經(jīng)理來(lái)解答所有團(tuán)隊(duì)成員的問(wèn)題。需要解釋的問(wèn)題重點(diǎn)應(yīng)該是項(xiàng)目中的技術(shù)問(wèn)題如何解決,使用怎樣的質(zhì)量控制及軟件工程方法,項(xiàng)目資金問(wèn)題,加班問(wèn)題,完成項(xiàng)目的意義,如果沒(méi)有按時(shí)提交項(xiàng)目的后果等等。
壓力下的項(xiàng)目管理過(guò)程就是人的管理過(guò)程。軟件工程這個(gè)時(shí)候變的尤其的脆弱,我曾經(jīng)經(jīng)歷過(guò)一個(gè)程序員因?yàn)橐巫硬缓线m而拒絕加班的情況,當(dāng)然他很憤怒。執(zhí)行項(xiàng)目管理的時(shí)候應(yīng)該小心翼翼,甚至可以根據(jù)每個(gè)不同的人執(zhí)行不同的軟件管理方法。讓團(tuán)隊(duì)感到前所未有正面情緒。在這個(gè)期間項(xiàng)目經(jīng)理的責(zé)任就是一個(gè)關(guān)鍵問(wèn)題了,不同人的管理模式會(huì)讓工作量成幾何級(jí)數(shù)的增長(zhǎng),協(xié)作方式的管理復(fù)雜化,優(yōu)化了團(tuán)隊(duì)生產(chǎn)效率,增加了大量的管理負(fù)擔(dān)。有壓力的項(xiàng)目應(yīng)該有很大的利潤(rùn)空間,因此增加項(xiàng)目管理資源應(yīng)該也不是問(wèn)題。比如每周出去一起出去吃飯,喝茶,打球等等項(xiàng)目活動(dòng)都會(huì)讓團(tuán)隊(duì)忘記壓力,輕松的心態(tài)是取勝的關(guān)鍵保證。這種活動(dòng)是必須的,從心理健康學(xué)上講這個(gè)是一種必須要保持的平衡關(guān)系。還可以增加管理人員,來(lái)跟蹤團(tuán)隊(duì)每個(gè)開(kāi)發(fā)人員的開(kāi)發(fā)細(xì)節(jié)來(lái)及時(shí)反饋。開(kāi)發(fā)人員則不必受一些項(xiàng)目管理中產(chǎn)生的中間過(guò)程而耽誤過(guò)多的時(shí)間,幾年前,我曾有過(guò)這樣的經(jīng)歷,我給我的團(tuán)隊(duì)骨干(2個(gè)人)配備了專(zhuān)門(mén)的技術(shù)秘書(shū),他們負(fù)責(zé)一切的文檔編寫(xiě),單元測(cè)試的編寫(xiě),以及完成這兩個(gè)人的代碼測(cè)試。工作中骨干們甚至是邊開(kāi)發(fā)邊口述,秘書(shū)就及時(shí)的記錄下來(lái)相應(yīng)的細(xì)節(jié),從而整理成文然后再給骨干們審查。一個(gè)原本要開(kāi)發(fā)半年的項(xiàng)目,三個(gè)月就全部完成,相應(yīng)的開(kāi)發(fā)成本只增加了10%。最重要的是保證了產(chǎn)品質(zhì)量。之后他們會(huì)風(fēng)趣的告訴我,“這樣開(kāi)發(fā)真的很刺激,希望下次不要再經(jīng)歷了。。?!彼晕蚁胩嵝汛蠹遥瑝毫芾硎嵌虝旱囊环N畸形管理,不可能適合大部分的開(kāi)發(fā)。如果團(tuán)隊(duì)連續(xù)3次進(jìn)行這樣的管理過(guò)程,我想他們會(huì)瘋掉的。
到現(xiàn)在我還是沒(méi)有提到加班問(wèn)題。其實(shí)在壓力下,加班是難免的,但我確實(shí)不能說(shuō)提倡加班,因?yàn)樵斐蓤F(tuán)隊(duì)在高壓下工作應(yīng)該是公司領(lǐng)導(dǎo)們的事情,強(qiáng)加到團(tuán)隊(duì)身上是侵犯人權(quán)的表現(xiàn)。每個(gè)人都有一定的工作能力,最重要的是我們不能把團(tuán)隊(duì)的理想強(qiáng)加到團(tuán)隊(duì)成員的身上,因?yàn)樗麄兪亲杂傻?。加班?wèn)題這個(gè)矛盾我們還是回避了吧!
下面是一些壓力下團(tuán)隊(duì)建設(shè)的原則:
1、給團(tuán)隊(duì)最大的自由度:這個(gè)指管理上的自由。不必受公司內(nèi)部制度的限制,因?yàn)閴毫ο碌膱F(tuán)隊(duì)管理本身就是畸形的。
2、給團(tuán)隊(duì)配備最穩(wěn)定的設(shè)備:這個(gè)我就不解釋了,最穩(wěn)定在這個(gè)情況下比最快速更重要。
3、給團(tuán)隊(duì)更多的可支配資金:應(yīng)變很多資源和人員需求上的變化,比如需要購(gòu)買(mǎi)書(shū)籍,配備外協(xié)人員等等,這些都需要快速以減少團(tuán)隊(duì)額外的時(shí)間上的浪費(fèi)。普通項(xiàng)目則允許資金申報(bào)過(guò)程。
4、項(xiàng)目經(jīng)理要有一定經(jīng)驗(yàn):這中情況下的團(tuán)隊(duì)讓新手進(jìn)行管理會(huì)是災(zāi)難性的。而且項(xiàng)目經(jīng)理經(jīng)驗(yàn)要非常豐富才可以勝任。普通項(xiàng)目中此條款也可以不遵循。
5、團(tuán)隊(duì)成員共同設(shè)計(jì):項(xiàng)目應(yīng)該由所有成員一起進(jìn)行設(shè)計(jì)工作,以便盡快確定可行的設(shè)計(jì)方案,所有成員對(duì)設(shè)計(jì)也應(yīng)該有很深的了解,方便以后的交流。此條款在普通項(xiàng)目中根據(jù)實(shí)際情況實(shí)施。
6、針對(duì)不同成員設(shè)計(jì)有針對(duì)性的優(yōu)化開(kāi)發(fā)方案:這種方法只是針對(duì)這個(gè)項(xiàng)目進(jìn)行,可以按照個(gè)人愛(ài)好,能力,資源調(diào)配等等方面制定。這種方式是不適合公司發(fā)展的,人員變動(dòng)后對(duì)項(xiàng)目影像比較大,因此普通項(xiàng)目不得按照此管理方式。
7、解決團(tuán)隊(duì)成員生活問(wèn)題:在團(tuán)隊(duì)解決能力范圍內(nèi)的問(wèn)題,要在項(xiàng)目開(kāi)始之前首要解決。原因很明白。在普通項(xiàng)目中里面包含了冗余時(shí)間,項(xiàng)目進(jìn)度可以承受成員處理生活上和其它方面的問(wèn)題,這里最關(guān)心的是效率,因此此條款也不適合普通項(xiàng)目開(kāi)發(fā)。
8、采用敏捷開(kāi)發(fā)模式。這是輕量級(jí)程序的開(kāi)發(fā)模式,項(xiàng)目經(jīng)理的都應(yīng)該具備這些知識(shí)了吧。
9、項(xiàng)目培訓(xùn)應(yīng)提早進(jìn)行:在合同簽署之后的第一件事就是項(xiàng)目中的技能培訓(xùn),比如行業(yè)、前沿技術(shù)等等。這個(gè)直接關(guān)系到項(xiàng)目進(jìn)度、用戶需求與穩(wěn)定性的指標(biāo)。
10、讓管理層遠(yuǎn)離團(tuán)隊(duì):如果是有經(jīng)驗(yàn)的團(tuán)隊(duì)都有這樣的經(jīng)歷,管理層的很多意見(jiàn)不適合壓力下的技術(shù)開(kāi)發(fā),讓他們離開(kāi)團(tuán)隊(duì)才是團(tuán)隊(duì)正常運(yùn)轉(zhuǎn)的保證。很多情況下他們都愿意做你潛在的客戶,他們會(huì)這么說(shuō),然后來(lái)參與到你的團(tuán)隊(duì)中,然后他們有很多意見(jiàn),然后他們會(huì)以領(lǐng)導(dǎo)的身份告訴團(tuán)隊(duì)?wèi)?yīng)該如何改進(jìn),而不是客戶的身份。相信我,讓他們離開(kāi)你的團(tuán)隊(duì),他們一般不會(huì)做好這樣的角色互換,因?yàn)樗麄儾恢揽蛻粢墒裁矗皇撬?,是大部分?br />
上面所述只針對(duì)純軟件公司的小團(tuán)隊(duì)開(kāi)發(fā)。如果要論述各種情況有點(diǎn)不切實(shí)際,這里我只論述了大部分公司存在的問(wèn)題。但大家一定要明白,如果盲目利用這種方式去開(kāi)發(fā)不可能完成的項(xiàng)目,結(jié)果還是失敗的,因?yàn)槟愕某霭l(fā)點(diǎn)就錯(cuò)了,這種方法只是糾錯(cuò),就象我們明天要提交軟件了,今天晚上通宵了一樣,是時(shí)間壓縮,而不是真的效率提升,一般這種開(kāi)發(fā)過(guò)后我都會(huì)給團(tuán)隊(duì)放一定的假期,因?yàn)樗麄優(yōu)楣咀龀隽诵б?,這是他們應(yīng)得的。