传统模式VS敏捷开发:回不去的瀑布流,逃不出的迭代
说到软件开发,模式有很多,敏捷开发算是比较新颖的一种,经过近些年不断地发展,在国内逐步吸引了越来越多的企业及软件公司进入这一领域,虽说控制性上来说不如传统模式,但是较高的灵活性成为其主要优势。
敏捷开发最早是在90年代才获得人们广泛关注的新型软件开发方式,它具有快速应对需求变化的软件开发能力。相对于传统开发模式,它比较注重以用户需求为核心,采用持续迭代,循序渐进的开发方式,严格的来说,敏捷开发并不是一种特定的开发方法,它只是应对需求快速变化的一种软件开发能力,所以敏捷开发在需求的变更上并不在意,因为项目从始至终都处于不断地调整中,这一点在客户满意度上来说,无疑是非常具有竞争力的。
作为一个开发人员,相信喜欢敏捷开发这种模式的人并不多。
企业之所以喜欢,无外乎其听起来高大上的理念,实际操作过程中问题太多,开发人员选择这种模式,通常是不得不选,因为至少它能更好的让我们的口袋鼓起来,这就像我们上班,谁愿意每天早起,但是为了那微博的薪水却不得不这么做。
以传统的瀑布是开发为例,发展时间得有半个世纪了吧,目前依然是主流开发方式之一,因为这种开发方式只需要拿到一份完整详尽的需求文档,逐个功能Coding,测试部署上线。不需要再次确认需求,不会有人打断思路。没有需求更改,只要自己不犯错,不存在推倒重来的情况。可能这才是大部分开发人员最舒服的工作方式吧,听起来很完美。但是,如果一个公司每个项目都这么做,那么客户就都跑到别人家去了。
客户做一个东西如果不要求具有前瞻性,但也必须不要落后,从互联网公司的业务方向多变性上看,传统开发具有一定的局限性,敏捷开发却正中要点。
第一,敏捷开发周期更短。相对于其他几种开发模式(瀑布式开发,迭代式开发,螺旋开发),敏捷开发的开发周期无疑更短。它能更快的满足客户的需求,当客户需求有变更时,它也能更快的做出相应的改变。正如它的名字一样,敏捷代表的是最快的速度。
第二,敏捷开发更好地适应快速变化的需求。任何时候,需求都绝不会是一成不变的。无论前期考虑得多么周到,为了适应快速变化得市场,为了让软件系统更加完善,需求永远都是在不停变化的。毫不夸张地说,我们正在开发的功能,或许在它还没上线的时候,用户已经不需要了。敏捷开发能够驾驭需求的变化,它主张接受变更,对变更更快的做出响应。
第三,采用迭代方式,可频繁交付可使用的软件。在敏捷开发中,可能一个星期就要更新一个版本,交付一个可使用的软件。然后根据市场需求的变化,快速的交付另一个迭代产品。在这样频繁交付过程中,更好的满足用户的需求,适应需求的变化。
在一般的公司里,采用敏捷开发和迭代开发的方式较多,如果企业无法单独采用敏捷方式完成软件开发,也可以采用专业公司开发出的敏捷开发框架,成本及后期开发都处于可控范围,
记得曾经在知乎上看到一位大神对于敏捷开发的看法,这里分享给大家:
“敏捷”在互联网和软件开发领域从涓涓细流逐渐演变为行业潮流,往小了说是改进了开发方法,往大了说是革了瀑布流式的命——把产品开发引向了快速迭代、小步快跑的路线上。
敏捷开发意味着让我们全面的拥抱需求的变化,但是对于熟悉万变的市场反馈还远远不足以应对。因此为了更快的发现问题和反馈市场的变化,在敏捷开发过程中又引入了继续集成,持续交付和持续部署来更高效的进行敏捷开发。
我们永远无法找到真理,我们的每一次努力只是想离它更近一些。所以,不管你喜不喜欢,敏捷开发依然在走近你。