如何用正確的方法寫出高質(zhì)量軟件的75條體會(huì)
1. 你們的項(xiàng)目組使用源代碼管理工具了么? MVM:應(yīng)該用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的選擇是VSS。
2. 你們的項(xiàng)目組使用缺陷管理系統(tǒng)了么? MVM:應(yīng)該用。ClearQuest太復(fù)雜,我的推薦是BugZilla。
3. 你們的測試組還在用Word寫測試用例么? MVM:不要用Word寫測試用例(Test Case)。應(yīng)該用一個(gè)專門的系統(tǒng),可以是Test Manager,也可以是自己開發(fā)一個(gè)ASP.NET的小網(wǎng)站。主要目的是Track和Browse。
4. 你們的項(xiàng)目組有沒有建立一個(gè)門戶網(wǎng)站? MVM:要有一個(gè)門戶網(wǎng)站,用來放Contact Info、Baselined Schedule、News等等。推薦Sharepoint Portal Server 2003來實(shí)現(xiàn),15分鐘就搞定。買不起SPS 2003可以用WSS (Windows Sharepoint Service)。
5. 你們的項(xiàng)目組用了你能買到最好的工具么? MVM:應(yīng)該用盡量好的工具來工作。比如,應(yīng)該用VS.NET而不是Notepad來寫C#。用Notepad寫程序多半只是一種炫耀。但也要考慮到經(jīng)費(fèi),所以說是“你能買到最好的”。
6. 你們的程序員工作在安靜的環(huán)境里么? MVM:需要安靜環(huán)境。這點(diǎn)極端重要,而且要保證每個(gè)人的空間大于一定面積。
7. 你們的員工每個(gè)人都有一部電話么? MVM:需要每人一部電話。而且電話最好是帶留言功能的。當(dāng)然,上這么一套帶留言電話系統(tǒng)開銷不小。不過至少每人一部電話要有,千萬別搞得經(jīng)常有人站起來喊:“某某某電話”!度思防锩婢蛷(qiáng)烈譴責(zé)這種做法。
8. 你們每個(gè)人都知道出了問題應(yīng)該找誰么? MVM:應(yīng)該知道。任何一個(gè)Feature至少都應(yīng)該有一個(gè)Owner,當(dāng)然,Owner可以繼續(xù)Dispatch給其他人。
9. 你遇到過有人說“我以為…”么? MVM:要消滅“我以為”。Never assume anything。
10. 你們的項(xiàng)目組中所有的人都坐在一起么? MVM:需要。我反對Virtual Team,也反對Dev在美國、Test在中國這種開發(fā)方式。能坐在一起就最好坐在一起,好處多得不得了。
11. 你們的進(jìn)度表是否反映最新開發(fā)進(jìn)展情況? MVM:應(yīng)該反映。但是,應(yīng)該用Baseline的方法來管理進(jìn)度表:維護(hù)一份穩(wěn)定的Schedule,再維護(hù)一份最新更改。Baseline的方法也應(yīng)該用于其它的Spec。Baseline是變更管理里面的一個(gè)重要手段。
12. 你們的工作量是先由每個(gè)人自己估算的么? MVM:應(yīng)該讓每個(gè)人自己估算。要從下而上估算工作量,而不是從上往下分派。除非有其他原因,比如政治任務(wù)工期固定等。
13. 你們的開發(fā)人員從項(xiàng)目一開始就加班么? MVM:不要這樣。不要一開始就搞疲勞戰(zhàn)。從項(xiàng)目一開始就加班,只能說明項(xiàng)目進(jìn)度不合理。當(dāng)然,一些對日軟件外包必須天天加班,那屬于剝削的范疇。
14. 你們的項(xiàng)目計(jì)劃中Buffer Time是加在每個(gè)小任務(wù)后面的么? MVM:不要。Buffer Time加在每個(gè)小任務(wù)后面,很容易輕易的就被消耗掉。Buffer Time要整段的加在一個(gè)Milestone或者checkpoint前面。
15. 值得再多花一些時(shí)間,從95%做到100%好 MVM:值得,非常值得。尤其當(dāng)項(xiàng)目后期人困馬乏的時(shí)候,要堅(jiān)持。這會(huì)給產(chǎn)品帶來質(zhì)的區(qū)別。
16. 登記新缺陷時(shí),是否寫清了重現(xiàn)步驟? MVM:要。這屬于Dev和Test之間的溝通手段。面對面溝通需要,詳細(xì)填寫Repro Steps也需要。
17. 寫新代碼前會(huì)把已知缺陷解決么? MVM:要。每個(gè)人的缺陷不能超過10個(gè)或15個(gè),否則必須先解決老的bug才能繼續(xù)寫新代碼。
18. 你們對缺陷的輕重緩急有事先的約定么? MVM:必須有定義。Severity要分1、2、3,約定好:藍(lán)屏和Data Lost算Sev 1,F(xiàn)unction Error算Sev 2,界面上的算Sev 3。但這種約定可以根據(jù)產(chǎn)品質(zhì)量現(xiàn)狀適當(dāng)進(jìn)行調(diào)整。
19. 你們對意見不一的缺陷有三國會(huì)議么? MVM:必須要有。要有一個(gè)明確的決策過程。這類似于CCB (Change Control Board)的概念。
20. 所有的缺陷都是由登記的人最后關(guān)閉的么? MVM:Bug應(yīng)該由Opener關(guān)閉。Dev不能私自關(guān)閉Bug。
21. 你們的程序員厭惡修改老的代碼么? MVM:厭惡是正常的。解決方法是組織Code Review,單獨(dú)留出時(shí)間來。XP也是一個(gè)方法。
22. 你們項(xiàng)目組有Team Morale Activity么? MVM:每個(gè)月都要搞一次,吃飯、唱歌、Outing、打球、開卡丁車等等,一定要有。不要剩這些錢。
23. 你們項(xiàng)目組有自己的Logo么? MVM:要有自己的Logo。至少應(yīng)該有自己的Codename。
24. 你們的員工有印有公司Logo的T-Shirt么? MVM:要有。能增強(qiáng)歸屬感。當(dāng)然,T-Shirt要做的好看一些,最好用80支的棉來做。別沒穿幾次就破破爛爛的。
25. 總經(jīng)理至少每月參加次項(xiàng)目組會(huì)議 MVM:要的。要讓team member覺得高層關(guān)注這個(gè)項(xiàng)目。
26. 你們是給每個(gè)Dev開一個(gè)分支么? MVM:反對。Branch的管理以及Merge的工作量太大,而且容易出錯(cuò)。
27. 有人長期不Check-In代碼么? MVM:不可以。對大部分項(xiàng)目來說,最多兩三天就應(yīng)該Check-In。
28. 在Check-In代碼時(shí)都填寫注釋了么? MVM:要寫的,至少一兩句話,比如“解決了Bug No.225”。如果往高處拔,這也算做“配置審計(jì)”的一部分。
29. 有沒有設(shè)定每天Check-In的最后期限? MVM:要的,要明確Check-In Deadline。否則會(huì)Build Break。
30. 你們能把所有源碼一下子編譯成安裝文件嗎? MVM:要的。這是每日編譯(Daily Build)的基礎(chǔ)。而且必須要能夠做成自動(dòng)的。
31. 你們的項(xiàng)目組做每日編譯么? MVM:當(dāng)然要做。有三樣?xùn)|西是軟件項(xiàng)目/產(chǎn)品開發(fā)必備的:1. bug management; 2. source control; 3. daily build。
32. 你們公司有沒有積累一個(gè)項(xiàng)目風(fēng)險(xiǎn)列表? MVM:要。Risk Inventory。否則,下個(gè)項(xiàng)目開始的時(shí)候,又只能拍腦袋分析Risk了。
33. 設(shè)計(jì)越簡單越好 MVM:越簡單越好。設(shè)計(jì)時(shí)候多一句話,將來可能就帶來無窮無盡的煩惱。應(yīng)該從一開始就勇敢的砍。這叫scope management。
34. 盡量利用現(xiàn)有的產(chǎn)品、技術(shù)、代碼 MVM:千萬別什么東西都自己Coding。BizTalk和Sharepoint就是最好的例子,有這兩個(gè)作為基礎(chǔ),可以把起點(diǎn)提高很多。或者可以盡量多用現(xiàn)成的Control之類的;蛘弑M量用XML,而不是自己去Parse一個(gè)文本文件;盡量用RegExp,而不是自己從頭操作字符串,等等等等。這就是“軟件復(fù)用”的體現(xiàn)。
35. 你們會(huì)隔一段時(shí)間就停下來夯實(shí)代碼么? MVM:要。最好一個(gè)月左右一次。傳言去年年初Windows組在Stevb的命令下停過一個(gè)月增強(qiáng)安全。Btw,“夯”這個(gè)字念“hang”,第一聲。
36. 你們的項(xiàng)目組每個(gè)人都寫Daily Report么? MVM:要寫。五分鐘就夠了,寫10句話左右,告訴自己小組的人今天我干了什么。一則為了溝通,二則鞭策自己(要是游手好閑一天,自己都會(huì)不好意思寫的)。
37. 你們的項(xiàng)目經(jīng)理會(huì)發(fā)出Weekly Report么? MVM:要。也是為了溝通。內(nèi)容包括目前進(jìn)度,可能的風(fēng)險(xiǎn),質(zhì)量狀況,各種工作的進(jìn)展等。
38. 你們項(xiàng)目組是否至少每周全體開會(huì)一次? MVM:要。一定要開會(huì)。程序員討厭開會(huì),但每個(gè)禮拜開會(huì)時(shí)間加起來至少應(yīng)該有4小時(shí)。包括team meeting, spec review meeting, bug triage meeting。千萬別大家悶頭寫code。
出處:屋頂上的木帷幕
責(zé)任編輯:moby
上一頁 下一頁 寫出高質(zhì)量軟件的75條體會(huì) [2]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|