項目周期指一個投資項目從提出項目設想、立項、決策、開發(fā)、建設、施工,直到竣工投產(chǎn),進行生產(chǎn)活動和總結評價的全過程。軟件開發(fā)的項目周期大體分為3個階段:獲取需求和定義產(chǎn)品、開發(fā)和測試、部署和運維。在獲取需求和定義產(chǎn)品階段,需要防止 的不是進度太慢而是過快、過草率。特別是對于創(chuàng)業(yè)公司的產(chǎn)品經(jīng)理來說,很可能因為看到開發(fā)人員無事可做而感到壓力,所以盡快完成產(chǎn)品定義,而沒有充分了解 市場和競爭對手信息,沒有與合作伙伴充分溝通,沒有做深入的思考。
這些因倉促而隱藏的問題,發(fā)現(xiàn)得早則導致開發(fā)階段大量返工,發(fā)現(xiàn)得晚則導致產(chǎn)品上線后不 受歡迎。常聽一些人說現(xiàn)在互聯(lián)網(wǎng)開發(fā),講究快速迭代和敏捷,邊做邊想,返工也正常。這是一個誤解??焖俚傅氖菍⒉煌姹局g的周期縮短,小步快跑,而 不是在一個版本的周期內(nèi)來回折騰。
在開發(fā)和測試階段,項目管理重在跟蹤進度和保持溝通—用集成和演示跟蹤進度,基于Bug溝通問題。
要做到各個模塊外部接口相對清晰穩(wěn)定,并盡早完成各個模塊間的集成,最晚不超過開發(fā)周期的1/4時間。第一次集成之后,就應該開始每日集成和每周演示。每日 集成使得測試團隊每天能同步測試最新的代碼,幫助開發(fā)團隊盡早發(fā)現(xiàn)問題并及時了解技術細節(jié)上的進度;每周演示使產(chǎn)品經(jīng)理、項目經(jīng)理和管理層能從用戶的角度 感受產(chǎn)品,使他們對產(chǎn)品有信心。集成和演示是項目管理的心跳,合理利用它們,有助于及時把握項目的健康程度。
無論開發(fā)流程多敏捷,工程師能 力多強,記錄和跟蹤Bug都是必不可少的。開發(fā)團隊和測試團隊的溝通都應該基于Bug,才能言之有物。開發(fā)工程師每次提交代碼都應該記錄是針對哪個Bug 的,每日工作簡報都應該寫今天關/開了哪些Bug。要在每日晨會(站著開,一般15分鐘內(nèi))時說好,今天打算解決哪些Bug,其中有哪些點不清楚,需要和 誰溝通。
在后期部署和維護階段,要快速響應??简灥氖菆F隊成員的責任心和抗壓能力。系統(tǒng)運維工程師要深夜工作,因為部署可能要在流量低的時 候進行;項目經(jīng)理要保持能隨時溝通,做出快速而準確的決定,鼓勵團隊并做出表率;一旦出現(xiàn)高危害Bug,開發(fā)團隊要在24小時內(nèi)準備好補丁。這樣不僅能保證快速響應,還能讓工程師意識到:前期代碼不好好寫,后期就別指望能好好睡覺了。
Amazon 的做法比較有趣:在產(chǎn)品剛上線一段時間內(nèi),開發(fā)工程師要保持24小時開機。如果自己負責的模塊中出現(xiàn)高危害Bug,那么很可能會在深夜被系統(tǒng)運維工程師叫醒。