项目管理和软件开发的边界
引言
程序員的人生就是和一個個的軟件項目打交道的人生。
不能管理好項目過程的程序員不是好的開發(fā)人員。
項目管理是對成功地完成一整個軟件項目過程中地一系列目標相關(guān)地活動(譬如任務(wù))的整體監(jiān)測和管控,軟件開發(fā)是軟件項目過程中最重要的一個組成部分之一。
在互聯(lián)網(wǎng)公司做項目,一邊強調(diào)要敏捷開發(fā),一邊要交付成果。所以如何區(qū)分好項目管理和軟件開發(fā)的邊界,統(tǒng)籌好二者才是一個好的互聯(lián)網(wǎng)項目管理和軟件開發(fā)過程。
最簡單的項目管理
每周都要寫周報
周報里面應(yīng)該寫點什么?最簡單地要寫當前我要關(guān)注哪幾個項目,各個項目是處在什么開發(fā)模式中,對應(yīng)的開發(fā)進度分別進入到了哪個層面,進度和進展分別是怎樣的。有哪些風險。難于解決的問題在哪里。
每天都要寫日報
那怎樣來監(jiān)控和衡量項目的進度的問題呢,項目管理和項目開發(fā)的邊界在哪里?
很大程度上取決于所選擇的軟件開發(fā)模式。
對于瀑布型的軟件開發(fā)模式,進度比較好衡量。需求分析、設(shè)計、編碼、集成、測試、維護每個階段都有對應(yīng)的產(chǎn)出。
迭代型開發(fā):主體框架穩(wěn)定的情況下,加功能就是迭代型開發(fā)。每一個迭代周期里面,就是一個小的項目開發(fā),這個時候的項目開發(fā)進度應(yīng)該也比較好衡量,對于項目開發(fā)的進度管控有些孰能生巧了,有時候就會忽略掉一些步驟,比如設(shè)計文檔、測試case、單元測試相關(guān)的交付。
螺旋開發(fā):如果面對未知的風險,每次項目都要評估風險,每次結(jié)束后都需要重新提出修正建議,制定下一步計劃,更像是再搞研究。每一次迭代對應(yīng)效果的衡量其實是不那么確定的,以成果認英雄式的進度略微不好衡量。
敏捷開發(fā):頻繁交付新的軟件版本,這個邊界比較模糊,適合于需求非常不確定型,經(jīng)常需要調(diào)整的項目,強調(diào)大家齊心協(xié)力把事情做好,需求經(jīng)常可能調(diào)整,進度相對不大好衡量,敏捷管理對項目管理和軟件開發(fā)人員的要求最高。
不同軟件開發(fā)模式
瀑布型開發(fā):
需求分析、設(shè)計、編碼、集成、測試、維護,強調(diào)每一個階段都需要有相應(yīng)的產(chǎn)出。
迭代型開發(fā):
整個開發(fā)工作被組織成為一系列短小地、固定長度(如3周)地小項目,被稱為一系列地迭代。每一次迭代都包括了需求分析、設(shè)計、實現(xiàn)語測試。
迭代式開發(fā)的優(yōu)點:
1、降低風險
2、得到早期用戶反饋
3、持續(xù)的測試和集成
4、使用變更
5、提高復用性
螺旋開發(fā):
快速原型
1、制定計劃:確定軟件目標、選定實施方案,弄清項目開發(fā)的限制條件;
2、風險分析:分析評估所選方案,考慮如何識別和消除風險;
3、實施工程:實施軟件開發(fā)和驗證
4、客戶評估:評價開發(fā)工作,提出修正建議,制定下一步計劃。
螺旋模型由風險驅(qū)動,強調(diào)可選方案和約束條件從而支持軟件的重用,有助將軟件質(zhì)量作為特殊目標融入產(chǎn)品開發(fā)之中。但是,螺旋模型也有一定的限制條件,具體如下:
1、 螺旋模型強調(diào)風險分析,但要求許多客戶接受和相信這種分析,并做出相關(guān)反應(yīng)是不容易的,因此,這種模型往往適應(yīng)于內(nèi)部的大規(guī)模軟件開發(fā)。
2、如果執(zhí)行風險分析將大大影響項目的利潤,那么進行風險分析毫無意義,因此,螺旋模型只適合于大規(guī)模軟件項目。
3、軟件開發(fā)人員應(yīng)該擅長尋找可能的風險,準確地分析風險,否則將會帶來更大的風險
4、一個階段首先是確定該階段的目標,完成這些目標的選擇方案及其約束條件,然后從風險角度分析方案的開發(fā)策略,努力排除各種潛在的風險,有時需要通過建造原型來完成。如果某些風險不能排除,該方案立即終止,否則啟動下一個開發(fā)步驟。最后,評價該階段的結(jié)果,并設(shè)計下一個階段
敏捷開發(fā):
測試驅(qū)動開發(fā)
scrum
強調(diào)程序員團隊與業(yè)務(wù)專家之間的緊密協(xié)作、面對面的溝通(認為比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團隊、能夠很好地適應(yīng)需求變化的代碼編寫和團隊組織方法,也更注重軟件開發(fā)中人的作用。
1、人和交互?重于過程和工具。
2、可以工作的軟件?重于求全而完備的文檔。
3、客戶協(xié)作重于合同談判。
4、隨時應(yīng)對變化重于循規(guī)蹈矩
實際工作中,除了瀑布型開發(fā)流程很好區(qū)分,另外幾種開發(fā)模型比如迭代型和螺旋型和敏捷開發(fā)都不是很好區(qū)分。于是發(fā)現(xiàn)了下面這個對比文章,其中明確地把敏捷開發(fā)和其它開發(fā)流程區(qū)分開來,說敏捷開發(fā)就是用來做互聯(lián)網(wǎng)項目的管理的,迭代模型是敏捷開發(fā)的一個組成部分??雌饋硪孔V得多。
不同軟件開發(fā)模式的對比
其中有一段如下: 迭代開發(fā)是一種軟件開發(fā)的生命周期模型,與其對應(yīng)的還有瀑布模型、螺旋模型等等 敏捷開發(fā)是多種軟件開發(fā)項目管理方法的集合,其中包括了XP、Scrum等十幾種開發(fā)模式,這些開發(fā)方法有些共同點,比如重視響應(yīng)變更,重視實現(xiàn)客戶的價值,重視開發(fā)人員的自身發(fā)展等等,其核心體現(xiàn)在他們著名的四句原則中.這些開發(fā)方法基本都傾向于采用迭代的軟件開發(fā)生命周期模型. 簡單來說,迭代模型是敏捷開發(fā)普遍使用的軟件生命周期模型,敏捷開發(fā)所包含的內(nèi)容比迭代模型寬泛的多.
明白自己所處的開發(fā)模式下面,可以更好地知曉項目管理和軟件開發(fā)的邊界,以及預(yù)期自己的產(chǎn)出對于管理者會是什么。
所以,有的時候軟件開發(fā)人員覺得自己做了很多事情,但是個人的成果不那么被認可,不一定是個人沒做好,也可能是因為個人落在了敏捷開發(fā)這個區(qū)間,而且關(guān)注點在軟件項目的實現(xiàn)上。這個時候可以選擇放慢進度,適度補充一些相對穩(wěn)定的流程產(chǎn)出和文檔產(chǎn)出。這個時候的開發(fā)成果和瀑布型開發(fā)的成果也是不大一樣的,這個也需要知曉
回想過去兩個月的工作,最后要交付的時候有點狼狽:
原因當然有很多:
比如:中間插進來的項目打斷了原有計劃,快速原型的追求的同時,失去了更詳細的需求分析。
另外就是因為沒有清楚地明確自己手頭上有哪幾個任務(wù)、每個任務(wù)的時間點和優(yōu)先級是怎樣的。這個永遠是top piority。
當然時間的預(yù)算也不夠準,最近一直在調(diào)整自己的狀態(tài)、沒加班,這下預(yù)算時間人天數(shù)偏少,以及中間的其它意外。
越往敏捷上靠,管理越不那么精確可控,越容易在交付成果上容易被人詬病,也是正常情況,所以也不用太自責。
軟件開發(fā)路漫漫其修遠,項目管理顯階段性成果。
總結(jié)
以上是生活随笔為你收集整理的项目管理和软件开发的边界的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity学习笔记------用Unit
- 下一篇: 5G学习笔记之RRC_IDLE/RRC_