項(xiàng)目經(jīng)理如何打造高效的技術(shù)團(tuán)隊(duì)?
1:使用分布式的版本管理系統(tǒng)
如果你覺(jué)得不需要使用版本管理系統(tǒng),那我們溝通會(huì)有代溝,如果你是CVS、SVN的粉絲,或者由于某種原因沒(méi)有使用過(guò)分布式版本管理系統(tǒng),比如git,那強(qiáng)烈建議你去看一下“why git is better than x”。
2:一鍵式發(fā)布
這里發(fā)布的目標(biāo)位置,既可以是開(kāi)發(fā)機(jī),做本地測(cè)試;也可以是測(cè)試機(jī),為QA準(zhǔn)備好捉蟲(chóng)游戲的森林;還可以是生產(chǎn)環(huán)境(或者beta環(huán)境),供用戶直接訪問(wèn)。
如深度xp一鍵恢復(fù)系統(tǒng)一樣,一鍵式發(fā)布需要自動(dòng)完成很多工作:代碼自動(dòng)化測(cè)試(開(kāi)發(fā)階段),打包壓縮,編譯(測(cè)試階段),數(shù)據(jù)同步(外網(wǎng))。也許還有很多工作要加入進(jìn)來(lái),但核心是是否能通過(guò)一個(gè)腳本的執(zhí)行就全部完成所有流程,這點(diǎn)至關(guān)重要。如果中間多出幾個(gè)環(huán)境,那將來(lái)一定會(huì)引入發(fā)布的災(zāi)難。
3:TDD / BDD 請(qǐng)對(duì)你自己寫的代碼負(fù)責(zé)
不要為了TDD/BDD而TDD/BDD,只要能及時(shí)獲得自己寫的代碼運(yùn)行情況的反饋就行,也無(wú)需一次把test case都覆蓋全。對(duì)于沒(méi)有任何單元測(cè)試的代碼,將來(lái)想引入單位測(cè)試,將舉步維艱!如果,你認(rèn)為測(cè)試完全是QA的事情,那你就花大筆的錢去招聘一個(gè)規(guī)模龐大的QA集團(tuán)吧,期望他們能讓你偷懶。
4:使用靠譜的bug記錄工具
人腦的潛力雖然無(wú)限,但大腦皮層只會(huì)對(duì)進(jìn)入緩存區(qū)的數(shù)據(jù)做高效的反應(yīng)。記憶再好的開(kāi)發(fā),也可能被各種牛魔鬼怪折磨的忘記了昨日的痛(曾經(jīng)產(chǎn)生的bug)。所以,從團(tuán)隊(duì)第一次提測(cè),就應(yīng)該使用靠譜的bug記錄工作。所謂好記性不如爛筆頭就是這個(gè)道理。
那一個(gè)靠譜的bug記錄工具應(yīng)該要記錄這些數(shù)據(jù):
bug復(fù)現(xiàn)的整個(gè)操作流程
產(chǎn)品需求中的正常情況
出現(xiàn)bug后,變成為什么情況
誰(shuí)將負(fù)責(zé)修復(fù)這個(gè)bug
bug最后修復(fù)沒(méi)有
至于怎么修復(fù)的bug,是重新設(shè)計(jì)還是漏提交了代碼,我覺(jué)得無(wú)關(guān)緊要。如果一個(gè)bug修復(fù)的經(jīng)驗(yàn)值得分享,可以單獨(dú)做一次團(tuán)隊(duì)的技術(shù)分享,而這往往是由于對(duì)現(xiàn)有產(chǎn)品的(技術(shù)或者其他的)信息獲取不夠?qū)е碌摹?/p>
5:盡快修復(fù)bug
我的開(kāi)發(fā)經(jīng)驗(yàn)告訴我,一個(gè)bug越晚修復(fù),被修復(fù)的可能性越小,將來(lái)產(chǎn)生危害的可能性越大。試想,你剛提測(cè)或者發(fā)布的代碼,出現(xiàn)的bug,往往你能最快得到解決它需求的時(shí)間,而時(shí)間在項(xiàng)目管理上是非常重要的。反之,如果積累了很多bug,且有一定時(shí)間了,那修復(fù)它就需要對(duì)所有相關(guān)的系統(tǒng)進(jìn)行了解,這將花費(fèi)大量你可以用來(lái)度假,娛樂(lè)的美好時(shí)光。所以,從團(tuán)隊(duì)一開(kāi)始就貫徹這點(diǎn),可以釋放成員修復(fù)bug的壓力。
6:給團(tuán)隊(duì)成員一個(gè)安靜的環(huán)境
最近很多同學(xué)告訴我,白天基本上沒(méi)有什么效率,總是受到各種騷擾。我們做一個(gè)假設(shè):假如A同學(xué)進(jìn)入最佳狀態(tài)需要30分鐘,那么如果他比較慘,在30分鐘間隔內(nèi),他總是被打斷,那么他一天都無(wú)法最高效的工作。又或者同學(xué)B google查詢一個(gè)技術(shù)問(wèn),花費(fèi)2分鐘可以解決,但問(wèn)同學(xué)A只要20秒鐘(好吧,同學(xué)A表達(dá)很清晰)。這樣同學(xué)B節(jié)省了100秒鐘,而同學(xué)A至少損失了30分鐘。
從這個(gè)假設(shè),我們不難發(fā)現(xiàn),如果能避免團(tuán)隊(duì)成員受到外來(lái)信息的騷擾,他就有可能更加高效的工作,從而寫出更好的產(chǎn)品。而常識(shí)告訴我們,人不可能一直高效的工作,所以,我們應(yīng)該利用好無(wú)法集中精力的時(shí)間去進(jìn)行一些溝通。但分出這個(gè)界限顯然十分困難,所以我覺(jué)得不妨這樣:規(guī)定每天的安靜時(shí)間段,在這個(gè)時(shí)間段,其他人都不能來(lái)打擾這位同學(xué),而在非安靜時(shí)間段,可以隨意訪問(wèn),從而讓這位同學(xué)形成一個(gè)新的生物鐘(人體的自我調(diào)節(jié)能力是非常強(qiáng)悍的)。
7:給員工最好的工具
做同樣一件事情,如果使用工具A,消耗的時(shí)間為5分鐘,而使用工具B,消耗的時(shí)間為1分鐘,那我一定給員工提供B工具,即使B工具的價(jià)格是A工具的5倍。因?yàn)?,假如人在連續(xù)高效工作中的抵抗干擾時(shí)間為1分鐘,那么意味著B(niǎo)工具能保證高效工作的時(shí)間連續(xù),而A將可能分散了用戶精力,導(dǎo)致需要更多的時(shí)間才進(jìn)入最佳狀態(tài)。事實(shí)上,之所以要更好的cpu,更大的內(nèi)存,更好的編譯器,更好的編輯器,多顯示器,都是讓程序員盡快能回到核心業(yè)務(wù)上來(lái),而在等待上花費(fèi)更少的時(shí)間。
同時(shí),別忘了,一把好的椅子也是維持更長(zhǎng)高效工作時(shí)間的保證,所以,別吝嗇,給員工更好的椅子吧,他們會(huì)感到你的溫懷。
原文鏈接:http://jinpu.wordpress.com/2011/06/07/seven-points-for-building-efficiently-tech-team/
【編輯推薦】