敏捷开发

“敏捷开发”已经广泛地日渐渗透进具高度认知的开发者中。现在,我们将围绕敏捷开发状况以及其方法手段,从本公司工程师的角度出发,进行考察。

关于敏捷方法的情况

在软件开发现场,各种各样的问题堆积成山。例如,尽管发展了短期交货,但是系统的复杂化在增加,通过离岸开发来运用廉价的海外技术人员也渐渐成为定论,于是成本的竞争也越来越激烈。此外,技术变得多样化,顾客的要求也更加严格了。在这样严峻的开发现场,技术人员被迫长时间加班,工作动力下降等状况也是不少见的。

“敏捷开发”这个词汇,承载着解决上述堆积成山的问题这样的期待,作为关键词越来越被广泛使用。通过网络以及文献等,可以轻易获得关于下面的“敏捷开发宣言”、敏捷开发程序的代表XP(极限编程)等内容的详细信息。

【敏捷开发宣言】

  • 个体和交互 胜过 过程和工具
  • 可以工作的软件 胜过 面面俱到的文档
  • 客户合作 胜过 合同谈判
  • 响应变化 胜过 遵循计划

另外,在XP实践中,不少已经广泛渗透于世界范围,且为大家所深知。使用了xUnit的测试驱动开发、基于Subversion的代码共享,运用了Eclipse的重构等都是被广泛了解并熟悉的XP实践。(对这些技术有兴趣的各位,欢迎浏览本公司培训页面。)

但是,如果要问“对于敏捷开发,是不是谁都能够理解能够实践了呢?”,只能说实际情况是还没发展到达那样的地步吧。

对敏捷开发的期待和误解

然而敏捷开发并不是“撒手锏”。正如2007年JavaWorld Day,Scott W.Ambler氏的演讲中所阐述的那样,人们对于敏捷开发存在着很多误解。运用敏捷开发程序就可以进行很多低成本高品质的制作、应用XP实践就可以恢复技术人员的动力、还可以遵守交货期限,或是使用JUnit以及Ruby on Rails等进行轻松编程,不用写文档、无需进行手动测试、不用加班就可以下班回家……

虽说这些是应用敏捷开发程序可能带来的效果,但是,没有很好地理解程序就进行应用的话,这些效果也只能是臆想。而即使这些都实现了,结果也可能是实现的系统成为无用的残次品。

什么是敏捷开发?

那么,被誉为高效无敌,真实面目却云雾缭绕的“敏捷开发”到底是什么呢?那就如同“敏捷开发” 的根本思想“拥抱变化”所示,是“让每个人能够应对瞬息万变的实际情况,在工作、编程时,时刻思索课题,判断并决定自己该做什么”这样的想法。

“坚决追求高品质易使用的软件制作,以获得顾客的满意为目标,并且为达成目标灵活地改变方法从而响应变化”,这样的想法极其重要。

如果要达成软件开发的成功这样的高难度目标,就不要受限于至今的常识以及开发方法,而是需要最大程度地运用每个人的想法以及技术,并且大胆地应用实践。以这样的思想为基础而进行的项目开发,定能提高速度,成为真正的“敏捷开发”。

敏捷开发的实践 - 脱离旧有的金字塔型队伍

想要实践敏捷开发;需要:

  1. 高动力
  2. 一定程度的技术能力
  3. 能够与其他开发人员合作的性格
  4. 可以展望项目整体状况的感受能力

具备这些素质的成员是不可或缺的。

如同敏捷开发宣言所示,敏捷开发的思考方式是不拘泥于程序和工具,重视构成项目的人员。集合具备上述素质的成员而组成的项目组,不会像以往的金字塔型队伍一样固定划分职位以及责任,然后进行开发,而是通过扁平式队伍来应对需求,通过转交权限来更好地发挥能力。

敏捷开发的实践 - 理想的新领导

可以在扁平式的组织构成中指导以及培养组织成员,并且在适当地转交权限的同时使项目整体敏捷化,我们需要这样的新领导。

于是,近年来“项目简易化”的技术是备受注目的。敏捷型的领导不同于以往的领导,不再是单纯地进行日程管理、发出指示,而是能够最大限度地激发成员的动力,让成员决定自己的工作方式,懂得在活化沟通的同时调整细节的人物。项目简易化的技术不仅在敏捷程序中倍受注目,正在更广泛的领域中受到关注。