主要从以下两方面说起
1、已定义的工作和不确定工作
在软件开发过程中,即使在开发前期需求分析花的时间足够长,也很难真正地分析和挖掘出客户所有的需求,有些需求会在项目开展过程中逐渐显露,这就是软件开发过程中不确定性。在此成为不确定工作。
瀑布模型将这种识别延迟到最后的测试或者用户体验阶段才发现,极大的增加了返工和变更成本,同时也不利于客户抢占市场先机。
而敏捷恰恰相反,通过短期的增量或迭代尽可能早地交付有价值需求,并拥抱和适应变化,从而减少需求的不确定性,为客户带来市场先机和价值。
也因此将传统的瀑布开发成为已定义好的开发方法(预测性),而敏捷称为经验型开发方法(适应性)。
2、复杂的时代
我们现在正身处在一个复杂的时代,传统IT>互联网时代>大数据>人工智能 每个阶段对软件和行业的要求越来越高,同时需求也更加多变,市场的响应周期也在缩短。为了适应时代的脚步也需要我们变革。
达尔文的生态论“生物之间存在着生存争斗,适应者生存下来,不适者则被淘汰,这就是自然的选择。生物正是通过遗传、变异和自然选择,从低级到高级,从简单到复杂,种类由少到多地进化着、发展着”。
软件开发方法也要适合复杂时代,来应对技术和需求的高度不确定性和快速响应并抢占市场。敏捷开发方法恰好适合。
任何事物都有两面性,敏捷并不是全能。要根据项目特性选择适合开发方法。
如下2个示例:
(1)银行的核心功能开发适合瀑布方式,因为敏捷要求适应变化、快速交付、并不断试错。试想一下如果在银行办理业务时出现错误,给客户讲我们会尽快完善并修复,这样也会造成客户满意度降低。
(2)大家还记得微信小程序推出的“头脑王者”的知识游戏,刚推出时目的就先让大家用起来,看下喜欢玩的人和市场接纳情况,然后在根据市场反馈进行不断优化。这就是敏捷。
不同类型的项目需要不同对待。
领取专属 10元无门槛券
私享最新 技术干货