软件敏捷面面谈

到今天才来写敏捷,从时间角度看是有点晚了,整个行业中对于敏捷的热度已经过去,对于敏捷讨论也不像前几年那么火热。
或者换个角度看,整个行业对于敏捷是否都已经有了一些自己的体会和心得,已经不需要通过社区的讨论和分享。这也是一个很值得玩味的问题,通过敏捷解决了我们的问题吗?

这篇文章主要是想整理下自己对于敏捷的一些思考和实践。主要会从三个方面来看敏捷:敏捷的前世今生,敏捷的受众对象,敏捷的实践

敏捷的前世今生

一个新事物的出现,必然是为了解决现实中的某个问题,或者说解决某种场景下出现的困惑,不然这个新事物必然埋没在滚滚历史长河中,翻不起一点水花。
敏捷是什么?软件项目管理的一种实践方式,一种迭代式开发的方法论。那么在没有敏捷之前呢,这个位置是由谁把控着:瀑布式开发。

瀑布式开发是一种预见性的方法论,从哲学的角度看是一种先验主义的实践。这种开发模式觉得设计人员可以考虑到整个软件过程中的任何问题,并对其中出现的问题都提出了相应的解决方案。因此瀑布式将整个开发流程分为了:需求、分析、设计、编码、测试几个阶段。阶段成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅。

这种严格的分级,带来的就是自由度的降低,越是在后期发生的需求变动,导致的陈本就会越高,因为需要将前面所有的流程都必须走一遍。更抽象的看瀑布式可以认作是唯心主义哲学的一种落地。

既然一个开发项目在后期变动需求后,带来的陈本非常高,那么敏捷的的做法就是把整个项目分为了很多件事情,每件事情再按照简化版的瀑布式来进行开发。
敏捷认为自己在项目早期的时候无法将所有事情都想的面面俱到,那么就把一个事情分为很多小事情,一段时间内处理一部分小事情,这样在变动来临时候,变动的陈本就相对降低。这种方式在哲学上看是后验主义的体验,强调通过一些实践和探索来达到目的,也可以认为是一种辩证唯物主义的思考方式。

更具象的看敏捷:在计划会议上,将需求进行分解,并通过多个迭代开发,每个迭代处理一部分需求,同时每个迭代都只做简单的设计,分析。在实现一个功能点后立刻提交给测试进行验收,缩短反馈回路,及早发现问题。

什么是敏捷?这个就是敏捷。前行者们在其上还加了很多润色:四大敏捷宣言,12敏捷原则,来帮助大家更好的去实践敏捷。
总结的说,瀑布式是将一件事分为多个阶段,敏捷是将一件事情分为了多个事情,再对每个小事分阶段处理。

敏捷的受众对象

所有人都应该去拥抱敏捷吗?回答当然是不尽然,国内软件的发展相对于西方来说,是有点晚的。而且不同地区,不同组织在吸收借鉴西方软件方法论上还有阶段性的不同。大体上可以分为三类:

  • 外企,软件提供商
  • 形成有效软件开发流程的组织
  • 未形成有效软件开发流程的组织

外企和软件提供商对于西方的软件知识接受较早,吸收的也较好,例如CMMI这套东西在外企和软件提供商落地的较好,因此对于瀑布式开发的痛也感触最深,所以对于敏捷,这类人是最愿意去改变,去接受敏捷,也是最有必要接受敏捷的群体。有个简单现象,国内大部分的敏捷教练都是这类企业出身。

第二类组织是不知道敏捷是何物,也没有时间和精力去折腾CMMI,但是在工作中形成了一套自己的开发流程,并且这套实践还非常有效。因此对于这波人,真有必要去接受敏捷吗?我个人的看法是不需要,虽然敏捷这种东西能够形成一套标准化的流程,但是这种流程对于新人快速融入带来的收益并不值得原来团队去改变自己原有的流程。

第三类组织是没有系统的接受过西方的软件知识,一般都是些小公司,小团队。只是盲人摸象的去推动事情的前进,可能还处在一种非常低效的工作流程中,这类组织其实是最有必要去接受敏捷的.因为公司规模的原因,无法接受CMMI的繁琐(也没必要去接受),那么敏捷就是他们最好的选择。

敏捷的实践
无论是否敏捷,对于任何新事物的接受,大体脱不了三个阶段:守,破,离。

  • 守:全盘,无思考的接受整个方法论及其价值观体系,按部就班的去执行流程
  • 破:有一定实践后,针对自己团队的实际情况,将整个流程做稍微的修改,更好的适应自己团队的特殊性
  • 离:完整掌握整个方法论的精髓后,自由的去改造或是创造新的方法论来运作整个团队。

事物都是分为:术和道。在守和破阶段,掌握术,理解道之后迈入离阶段,先以术养道,后以道御术,万万不可坏了顺序!

这些过程无关敏捷中的XP或是SCRUM,AUP。

其他:
敏捷是方法论吗?在前期是,后期敏捷就是人,而不是流程,事情都还是落到人身上去执行。
敏捷容易掌握吗?不容易,很多组织走敏捷走的不三不四,还丢了自己原本较为适合的方式(例如自己的前东家),正确的掌握敏捷绝对是门技术活,所以出现了很多敏捷教练来帮助大家学习敏捷,虽然这部分专家在我看来都是神棍。
进入软件行业以来最大的感触就是:概念就是产业,概念就是利益。一个新概念的出现就会随之带来一个新的产业,最早进入的这波人会成为这个产业最大的拥护者。
分享技术,分享概念有些时候就是建立壁垒,建立门槛。

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>