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