为什么软件开发周期总是预估的2~3倍?
因为理想是丰满的,而现实是骨感的。
在预估的时候,我们容易斗志昂扬,以最好的情况预估出一个最好的结果,而结果往往不尽如人意,即使一开始计划的时候考虑了最坏的可能性,也往往会被开发过程中出现的、事先未预估到的因素影响到。
比如做了一场关于说走就走的旅行的计划,从桂林开始,先从桂林观看桂林山水,而后到广州去看广州塔,接着去杭州看西湖和雷峰塔,下一站到苏州看园林风景,然后到天安门看升旗仪式,最后到山东淄博吃烧烤。
计划里理想状态就是这样子,一路完成
然而,现实却有可能是这样的:
桂林的山水刚好到了枯水期,山水没能看成,顺利到了广州塔,但因为游玩的人太多,你进不去,从广州到杭州的路线,因天气原因,你所预定的列车停运,你又耽搁了一天;
好不容易到了杭州,却因为雷峰塔正处于维修维护期间,暂不开放,但你非要看,因此你又在这等了一个星期,终于等到雷峰塔开放之后,你如愿看完雷峰塔,按计划到达苏州去看苏州园林,这一次,你很顺利。
但从目前已花的时间来看,已经用完了预估的时间,然而你还有两个两个景点没有去。
但你不愿就此放弃,一定要看完所有景点,于是延长旅行时间。好不容易到了北京,却发现天安门距离较近的酒店价格太贵,预算不够,你住不起,只能你只能选择离天安门较远的酒店居住,你决定去看升旗仪式,但因为早上起不来,错过了一次,因此又耽误了一天,第二天你勉强起来了,却因为距离太远,等赶到天安门的时候,升旗仪式已经结束,你不甘心决定再留一天,一定要看到,天安门升旗仪式,在你为这一次做足了充足准备之后,你终于在早上看到了天安门的升旗仪式。
这个站点你又耽误了三天,最后一站到达山东淄博吃烧烤,这时你的队友,又临时想要去爬泰山,你拗不过他,只好和他一起选择爬泰山,但当你们俩爬上了半山腰的时候,发现才到售票处。爬完泰山后已经很累,只能休息一天在外出吃烧烤。
但由于政府的大力支持,淄博烧烤已经吸引了太多人,在看不尽的人流里,最终才艰难地吃上一顿烧烤。
如此一来,整个周期花费的时间远超预估时间。
软件开发也一样,且不说计划永远赶不上变化,就算是一开始就要考虑的问题也很可能考虑不周全,比如资金问题,旅行会因为预算考虑不足而不得不选择花费更多时间,软件开发也一样,资金不够就只能选择更便宜的工具而花费更多的时间,诸如此类,开发的周期只能一直延长,最后往往需要开始预估的2~3倍。
什么是分而治之?
分别治理的意思。
把不同模块的分开管理。就如同上面提到的旅行,在杭州站点则只考虑在杭州的游玩攻略,而不考虑在北京的游玩。但值得注意的是,不同模块却会涉及同一个资金问题,这就需要做好预算。
了解WBS
工作分解结构
工作分解结构(简称 WBS )跟因数分解是一个原理,就是把一个项目,按一定的原则分解,项目分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的日常活动中,直到分解不下去为止。即:项目→任务→工作→日常活动。工作分解结构以可交付成果为导向,对项目要素进行的分组,它归纳和定义了项目的整个工作范围,每下降一层代表对项目工作的更详细定义。 WBS 总是处于计划过程的中心,也是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。