我看敏捷

我是一个写了十几年代码的老程序员了,至少在2010年5月之前,我从未间断过coding。下面谈谈我自己这十几年的程序员生涯对于敏捷的一点浅薄的理解。

1.敏捷我不认为是什么思想,CMMI叫软件成熟度模型,那敏捷也就是一种轻量级的软件开发模型或者叫开发方法,冯 诺依曼的二级制是一种思想,但是敏捷不是。

2.敏捷为什么会出现,个人认为敏捷是为了应对需求的多样性及产品的快速更新的一种手段和方法,这也是我一直认为互联网公司可能更适合借鉴和使用敏捷,但是同样就是在互联网公司内,也不是所有的产品都适用,至少像很多互联网公司都有庞大的后台服务和底层技术支持,这部分我认为并不适宜。

3.其实我们已经在敏捷了,不管知道敏捷还是不知道敏捷,我们很多时候都已经在使用敏捷里经常提到的快速迭代,我自己至少就经历过,在曾经服务过的一家互联网公司,我们每周都会有一次上线,因为互联网产品是永远Beta的,因为我们不可能花三个月甚至更长的时间就能拿出一个让用户满意的产品,因为你根本做不到,所以我们需要试错,我们需要快速的拿出我们的产品,让用户告诉你,你哪儿做对了,哪儿做错了,所以我们需要以更快的产品周期来开发(现在很多移动应用的产品周期可能就是2,3天或者更短),我们让产品人员,测试人员,开发人员形成了一个战斗队伍,我们会让测试人员第一时间介入到产品中来,我们也会让产品人员随时跟踪产品进度,我们也会采用一些自动化的方式来保障开发质量,提高测试效率,保证一次性部署成功。

4.敏捷不可能提高研发能力和研发质量,至少我看了半天,也没看到从哪儿能看出敏捷可以提供研发能力和研发质量,研发能力是取决于研发团队的个人能力的,而这种个人能力,不是简单的能够通过一种方法可以提高的,并且很多研发技能,就我自己的了解,就是需要一些高手来引导的,而且还得看每个人的悟性,有人真的能提高,有的人可能真就不行,我自己带过的人就有这样的例子,我相信那些高手很多都不知道敏捷吧,而且敏捷也不可能让你在网络编程方面有提高吧,至于说研发质量,我的理解,研发质量可能是代码质量+测试质量,这两部分有很多手段来提高,比如codereview,比如各种检查工具,单元测试工具,自动化测试工具,但是应该不是敏捷能做到的。

5.敏捷好吗,好,但是敏捷和CMMI一样都是因为某种开发场景而诞生的,他们都有自己适用的场景,就像我们做开发的经常会听到这样的论调“XXX语言就是好”,“XXX架构就是强”,其实最适合的语言和架构就是最好的开发语言和最好的架构,同样再采用一种新的语言和架构来改造你目前的系统时候,你也必须对于新语言和新架构非常的了解,否则它不断不会带来好处反而是致命的后果,敏捷也同样,如果认为敏捷适合,那也需要真正理解敏捷,能够正确使用它。那种把敏捷当红宝书,当放之四海而皆准的真理,我真的不能苟同。

不管敏捷还是非敏捷,能够满足你需要的就是好方法。