敏捷的世界观

我在公司内部推广实施敏捷4年多了,我认同敏捷的根本原因是因为我认同敏捷的软件开发世界观。传统开发方式的拥护者和敏捷开发方式的拥护者看待软件开发的世界观是不同的。

在传统开发的眼里,软件开发过程是确定的、可测的,只要在一开始努力收集到需要的信息并制定好计划,然后忠实的执行计划就应该可以成功。如果不成功一定是你在一开始就没有做好,没收集到必要的信息,计划做的不好或者执行不到位。然后传统开发方式就试图引入更多的流程,文档,试图让每一步都做到万无一失。

而在敏捷的眼里世界可不是这样的,敏捷认为在软件开发中,世界是变化的,有很多不确定性的。一方面,从认知角度来说,我们是无法在一开始就收集到确保成功所需要的所有信息的,必然是随着开发的进行,我们对正在做的东西的认识才越来越深刻。因而做一段时间后常常有发现需求需要调整,或之前的设计不是最合适的情况发生。另一方面,世界本来就是在快速变化中,我们不得不随之做出调整。因此敏捷的很多实践主要针对如何应对变化。

这对这一目标,敏捷要回答两个问题:

第一,我们如何及时的知道要做变化和做什么样的变化?

第二,一旦要做变化,我们如何能以最小的代价完成这种变化?所以敏捷的实践大多在回答这两个问题。

那么到底那种想法更接近现实世界的情况呢?

在实际当中我所经历的项目介于这两者之间,即并非完全的可测或不可测,但通常随着项目复杂度的增加,项目的不可测因素就会大大增加,变得越来越的难以把控。而大多数项目都属于这种有着相当不确定性范畴的。完全可预测,确定的,在一开始就能完全把握的几乎没有。所以我认为实际情况更符合敏捷的世界观。如果这一前提成立,自然敏捷方法就更有效了。

我很喜欢把传统开发方式比喻成普通火炮,而把敏捷开发比喻成导弹。两种武器打击目标的过程很形象的说明了两种软件开发过程的区别。火炮打击目标时,要想打的准,则要寄希望于一开始瞄的够准,而且对目标运动轨迹估计的够准。一旦炮弹发射出去,就无法对速度、方向进行控制了。任何瞄准偏差,没有预料到的目标移动轨迹变化,甚至风向的变化都会导致炮弹打偏。而导弹就不一样了,只要设定好目标方位,并不需要一开始就精确瞄准。导弹发射出去后,会持续的收集自己的位置、方向、速度并根据目标的方位不断的调整,最终能够较精确的长距离命中目标。

其实这一切的根源都在于软件开发是一个复杂的过程,复杂到各种基于预测的软件开发方法和流程都不是太好使,因为这样的成功要依赖于你在一开始就什么都想到了、都做对了。更何况既定的流程很难应对好这种复杂带来的不确定性。反而基于经验式的方法,比如敏捷,不依赖于在一开始就什么都想对、做对,而是依靠团队紧密协作并不断地在向前摸索中根据实际情况做出调整,小步快跑,反而像导弹一样,更容易命中目标。我在这里并不是说流程不重要,而是在敏捷开发中,和流程相比,团队成员的自发协作更重要。

本文分享自微信公众号 - 物联俱乐部(wu_lian_club),作者:瓜哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 实施敏捷开发,看这一篇就够了

    敏捷非常注重节奏,当你有多个任务要交付,团队更需要注重节奏的把握。而身为项目经理,我们的职责是让整个团队通过协作最终交付产品。

    公众号php_pachong
  • 敏捷产品项目的开发经验

    敏捷开发越来越火热,但在实际应用当中很多时候都是只有敏捷的“形”,却缺少敏捷的“神”,还只是在摸索中。借鉴一种新的模式的时候,最好能够批判性的吸收其精华的部分,...

    公众号php_pachong
  • 敏捷开发(Agile development)

    敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,...

    公众号php_pachong
  • 敏捷开发学习分享

    敏捷不是快,而是拥抱变化(不断反馈的一个过程)。                                                       

    业余草
  • 业界大咖谈敏捷(下篇)

    《洞悉敏捷》一书客观全面地介绍了全球正在使用的各种敏捷方法的价值、原则、架构、过程和适用场景。除敏捷知识讲解外,书中还记录了13位享有盛名并且受人尊敬的敏捷大咖...

    博文视点Broadview
  • 爆肝全面分享什么是敏捷测试?

    本文摘取陈晓鹏(晨小菜公众号)敏捷/测试/DevOps专家 随着这几年敏捷概念和方法的流行,越来越多的组织和项目选择了敏捷开发模式。那么对于测试人员来说,究竟敏...

    测试小兵
  • [2013.9.4]一个入门级别的破解教程。。。

    来吾爱有一段时间了 一直想给大家做个教程 这次是个入门级的破解教程 大牛请绕。。 要破解的程序是苍海帖子搬运机。。 首先我们打开程序,点击登录。。。咦。。怎...

    ApacheCN_飞龙
  • 微服务架构:敏捷软件架构的实际体现

    正如敏捷开发能够解决工程技术瓶颈,微服务则能够解决架构层面的瓶颈。 2014年出现的“微服务”理念仿佛一道闪电,让技术人员意识到这一全新架构风格的重要意义。面向...

    李海彬
  • 微服务架构:敏捷软件架构的实际体现

    正如敏捷开发能够解决工程技术瓶颈,微服务则能够解决架构层面的瓶颈。 2014年出现的“微服务”理念仿佛一道闪电,让技术人员意识到这一全新架构风格的重要意义。面向...

    李海彬
  • CODING 敏捷开发:如何进行迭代管理

    CODING 承载了最先进的敏捷研发理论,能够帮助您和您的团队快速入门敏捷研发,并通过标准化的流程和完整的信息统计成为企业实践敏捷研发的好工具。在上一篇中我们通...

    CODING

扫码关注云+社区

领取腾讯云代金券