据网络资料定义,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
而我自己的对这句话以及所看过的其他文章的理解,我是这样认为的:敏捷开发其实借鉴了大量软件工程中的方法。是传统软件开发意义上的改善,而非创新。例如在传统的软件开发中,把设计和构建这两个过程分开进行,设计完成之后,再按照设计构建。
敏捷开发方法是“适应性”而非“预设性” 。
这里说的预设性,可以通过一般性工程项目的做法理解,比如土木工程,在这类工程实践中,有比较稳定的需求,同时建设项目的要求也相对固定,所以此类项 目通常非常强调施工前的设计规划。只要图纸设计得合理并考虑充分,施工队伍可以完全遵照图纸顺利建造,并且可以很方便地把图纸划分为许多更小的部分交给不 同的施工人员分别完成。
然而,在软件开发的项目中,这些稳定的因素却很难寻求。软件的设计难处在于软件需求的不稳定,从而导致软件过程的不可预测。但是传统的控制项目模式都 是试图对一个软件开发项目在很长的时间跨度内做出详细的计划,然后依计划进行开发。所以,这类方法在不可预测的环境下,很难适应变化,甚至是拒绝变化。
与之相反的敏捷方法则是欢迎变化,目的就是成为适应变化的过程,甚至能允许改变自身来适应变化。所以称之为适应性方法。
但给我印象最深刻的一句话是,敏捷开发实际上是面向人的,而不是面向过程的。
有人说“在敏捷开发过程中,人是第一位的,过程是第二位的。所以就个人来说,应该可以从各种不同的过程中找到真正适合自己的过程。”这与软件工程理论提倡的先过程后人正好相反。
在传统的软件开发工作中,项目团队分配工作的重点是明确角色的定义,以个人的能力去适应角色,而角色的定义就是为了保证过程的实施,即个人以资源的方式被分配给角色,同时,资源是可以替代的,而角色不可以替代。
然而,传统软件开发的这些方法在敏捷开发方式中被完全颠覆。敏捷开发试图使软件开发工作能够利用人的特点,充分发挥人的创造能力。
任何理论只有落到实处,才能为企业为社会创造财富。这是永恒不变的道理。敏捷开发模式需要经验丰富、配合良好而又异常稳定的项目组、积极而富有成效的沟通、良好的管理手段和流程、有效的工具与平台,只有满足这些条件我们才能实现敏捷开发模式带给我们的益处。
所以,在实际开发过程中,需要根据实际项目的需要选择合适的开发方法,并尽最大可能发挥人的创造性和潜能,利用不同人的不同特点,充分沟通,这才是在敏捷方法中真正需要学习的。
这里就需要说到团队这个关键要素,良好的团队分工可以使团队运转的更加高效,产出的效率也会有明显的提升,这都取决于分工的合理。产品经理要将工作分成若干个部分,分别合理的派发给不同的对象去执行,使团队成员都清楚明确的知道自己的工作任务和目标,以及完成工作的方式和方法,这样才能完美的达到分工协作的目的。这里的难点就在于将不同的任务派发给合理的对象,这就需要掌握团队成员各自的特点,分析其所能承担的工作任务种类。
在这里要考虑一个很实在的事情,那就是让团队目标与个人目标保持一致,并设定出一个恰到好处的目标,既不是很容易执行,又还是有很大希望可以完成的那种,这是有一点难度的。再就是在任务分配的过程当中,要考虑一下团队当前的工作氛围,特别是团队处在磨合期或者团队成员经历了大范围的工作变动、工作交接之类的变故时,要做好团队成员之间的磨合、协调、熟悉的工作,尽量使团队达成统一认识。
敏捷开发通过把一个项目拆分,成为一个个能够单独运行的小项目,但是拆分的关键在于小项目之间又是相互联系的,本着这个原则,在完成最初的分配之后,让组员们各自选择自己的任务,做到个人和团队兼顾,敏捷并且优质。