又適應變化的設計,是對軟件設計高手們的一大考驗。
質量投資
“質量第一”是很多軟件公司的口號,而且僅僅是口號而已,你們的項目有這樣的一些問題嗎?
代碼沒有經過簡單的冒煙測試,甚至不進行是否通過編譯的測試,就直接提交。
為了趕時間不寫設計或者寫了不能指導編碼的設計文檔。
開發(fā)進度推遲,測試時間被壓縮,為了保證軟件發(fā)布的時間,在不充分測試情況下交付軟件,更甚者不測試軟件,直接讓客戶測試。
開發(fā)過程中發(fā)現的問題,只要能不解決的就不解決,進度優(yōu)先!
測試中發(fā)現的易用性方面的缺陷,因不會嚴重影響使用,一律不解決!
質量投資要求我們有零缺陷的意識,零缺陷意識要貫穿在全部的工作中,包括:
零缺陷文檔
計劃、需求、設計等開發(fā)過程中產生的文檔,要用一次寫好的決心來編寫,所有文檔都應該發(fā)揮它的價值,而不是為了寫文檔而寫文檔。要讓相關的小組成員對該文檔發(fā)表意見,重視他們的意見并修改文檔。
零缺陷代碼
要用一次把代碼寫好,不讓測試發(fā)現缺陷的態(tài)度來寫好代碼,寫出垃圾代碼是不負責任的行為。
零缺陷發(fā)布
用質量投資的態(tài)度對待所有缺陷,包括自己代碼產生的缺陷,對用戶負責,不滿足質量要求的軟件堅決不發(fā)布。
全體小組成員都應該同步達到零缺陷里程碑,本著一步一個腳印、不斷追求高質量的態(tài)度來完成全部工作。
學習所有的經驗
象Windows這樣的一些偉大的軟件,都是經過很多人通過很長的時間做出來的,工作量之大、難度之大不亞于一些偉大的建筑工程。軟件工程與建筑工程最大的優(yōu)勢就是,如果軟件做得不好,可以推倒重來,但建筑工程就不能這樣做了。
我拿軟件工程與建筑工程比較,目的就是想強調做軟件是很強調學習的,很強調不斷改進的(當然建筑工程也重視學習)。我們應該慶幸,我們這些做軟件的要比做建筑工程的要幸福的多了,我們不太可能犯一些不可以彌補的錯誤。
我們要讓大家從自己或者別人的失敗和成功中學習,要幫助小組成員再次獲得成功,捕捉和共享技術的或者非技術的最佳實踐,并想辦法讓學習制度化。
學習制度化的辦法很多,如項目總結、例會等,但要注意的是學習應該是隨時進行的,抱著學習一切可以學習的態(tài)度來工作。
微軟的項目團隊結構
談了微軟MSF的八大基本原理,我們來看看,微軟的團隊是怎樣組成的?
很多軟件公司的開發(fā)團隊,大部分是由一名項目經理,若干項目成員組成,項目成員包括需求分析、架構設計、編碼、測試等角色。
而微軟的團隊非常特別是沒有項目經理的,由6類角色組成,分別是產品經理(Product Management)、程序經理(Program Management)、開發(fā)(Development)、測試(Test)、發(fā)布管理(Release Management)、用戶體驗(User Experience)。
各類角色負責的職責如表1所示。
微軟的團隊模型中的6種角色,不代表團隊最少要6個人組成,一個人可以兼任多種角色,也不代表每一種角色只有一個人,可以多個人公擔一個角色。
微軟這種團隊結構與我們常見的團隊結構相比,有這樣的特點:
扁平對等的團隊結構,強調每個人的價值。這種團隊結構,是“賦予小組成員權力”、“清晰的責任和共同的職責”、“推動開放式溝通”這三個原理的表現。這樣的結構,讓每位小組成員都感受得到自己的重要性,項目的成敗與每位成員直接相關。這樣的結構更容易調動每位成員的工作積極性,更容易讓團隊激發(fā)工作熱情,產生更多的創(chuàng)造性成果。
微軟很重