估算項目週期,軟件行業作項目必備節目,也是每一個開發人員在職業生涯中無限循環的痛。編程
沒有經驗的開發人員對估算任務這件事來講都帶有深深的恐懼,估多了顯得本身無能,估少了deadline作不完臉上無光。怎麼辦?微信
其實項目的全部干係人,都想獲得一個靠譜的估算:
1. 老闆須要須要一個估算衡量根據公司現有資源值不值得作這個項目。
2. 市場人員須要根據估算來計算招標成本。
3. 項目經理但願更準確的估算來規劃工期。
4. 開發人員但願本身準確的估算來告別無休止的在「最後期限」前的加班。工具
如何精確的估算項目,這在之前是個玄學,由於有大量因素影響估算結果:
1. 老闆說這個項目對公司很重要,必定要在XX月前完成!
2. 銷售說競爭對手功能比咱們多,報價比咱們低,咱們也要遇上!
3. 項目經理被老闆搞得壓力很大,也要求開發估算「時間扣的緊點,不行咱就加班」。
4. 開發被要求1,2天內給個大體結果,沒有足夠的時間分析需求。
5. 此處省略若干編碼
如今仍有大量公司的項目或多或少存在以上問題(拍腦殼定日期),那麼做爲工程鼻祖的基建工程是怎麼作的呢?設計
先看下傳統工程領域的方式。工程領域對基建項目的概預算計算已經有很成熟的一套作法,而且有國標手冊能夠查。如我要建設一個通訊基站,裏面要安裝幾套設備,設計院如何估算開支?對象
分2個步驟:
1.估工做量
這些東西均可以根據手冊先查出這些東西的工做量(如大到某個工程機械的工時,小到安裝一個設備須要技工多少工時)。根據工做性質還能查出作這個須要幾個工人,獲得總工時。這些最後都能根據一個價格表對應上查出最終預算價格。遞歸
2.估材料損耗
作這些活,要用多少材料,材料的價格,也能夠根據手冊來查,查完了計算器一算,填表計算便可。資源
量和價是分開的,不管什麼年代,人乾的量基本是不變的,變的就是每若干年調整一下的人工材料價格,充分體現了面向對象封裝變化的思想。開發
工程上能這麼作是由於大部分項目脫不出這些看得見的工做,前期報價能根據以往經驗大體估出一個差很少的造價成本。計算機科學
軟件領域因爲沒有實體易修改的特殊性,估算則不肯定性比較多,如:
1. 客戶開始也不知道本身要什麼
2. 客戶知道本身要什麼,但作着作着想法就變了
3. 開發組織自身的狀況制約(人力資源,硬件資源,內部支持)
4. 開發人員水平良莠不齊(多出現於臨時拼湊的團隊)
5. 組織對於質量的看重程度,越重視則流程越重,速度越慢
6. 雙方企業文化的契合度(直接影響合做)
7. 不熟悉的項目領域
8. 不熟悉的技術領域
9. 新的編程工具
10. 團隊成員可否不受打擾全神貫注
若是還不知道本身在談論什麼,那麼指望談
論的事達到精確是沒有意義的。
— 約翰·馮·諾依曼
作估算首先要要知道估算的目的,估算的首要目標並非預算項目的結果,而是肯定項目目標是否能實現,而且在實施中經過項目控制來可控的達到目的。
業內經常使用的估算方法有:專家估算,功能點估算,story point估算等。整體的思路都是同樣,將粗粒度的需求拆成細粒度的技術功能點,反覆遞歸直到任務爲一天到半天的量,再彙總, 標準的分而治之策略。這裏就不討論具體的方法,能夠直接看下《軟件估算:黑匣子揭祕》這本書,不少疑問能夠在這本書裏獲得解答。
計算機科學是一門實踐科學,先有理論支持,再經過實踐進行論證及研究。如今一線開發人員都在忙於業務系統的開發,乾的是「編碼工人」的活,甚至將一樣的代碼從一個項目挪到另外一個項目,認爲知足工做須要就行;其實遇到問題適當進行一些理論的研究,就像練內功,內功紮實了,才能無招勝有招。
文章來自微信平臺「麥芽麪包」。轉載請註明。