从零开始理解敏捷开发——一个理解概念的思维方式

从零开始理解敏捷开发

  • 认识敏捷开发
    • 1. 问题:是什么
    • 2. 想要什么特点
    • 3. 为了实现特点
    • 4. 回到定义

很久没有写博客了,前面一直有接触敏捷开发的项目,也算是有些理解和感悟,这篇也是我在工作生活中有感而写的入门解释,作为理解一些相对抽象概念的通用思维方法,也借敏捷开发为例做下知识总结。后面可能还会对敏捷开发和其他的软件开发模式进行介绍,还有其他的一些分类等。

认识敏捷开发

在软件行业实际项目中,敏捷开发经常被提及。然而,对于刚刚开始从事软件开发行业的新人,可能对于敏捷开发只是听说过这样的状态。本文中博主将从最容易理解的方式,解释敏捷开发的概念理解和思考。

1. 问题:是什么

既然要理解一个新概念,首先要知道这个概念是属于什么,和它平行的概念都有什么。这个过程对概念的宏观理解是非常重要的。
举例说明,现在需要解释什么是猫,就需要先搞明白猫是一种生物的类别,猫的概念是和狗、兔子、大象是平级的,猫属于动物,而不是植物,猫本身还有很多子品种,每一只具体的猫都属于猫的一个实例。
回到敏捷开发,同理我们定位敏捷开发是一种开发模式,或者叫做软件开发方法。软件开发方法是因为软件行业在上世纪后半叶为了更加高效高质发展的产物,有点接近于从手工业到自动化工厂车间生产的转变,软件开发方法为这种软件的标准化生产提供技术和流程支撑。
开发模式随着软件工程的不断发展、完善,已经经历了很多个阶段,在历史上也有这不同时期的流行开发模式,这些开发模式都是为了解决当时的软件开发问题而在老模式的基础上优化提出的。
敏捷开发作为开发模式的一种,同样也是为了解决已有问题而被提出的,只不过是当前软件的规模、内容、产业、历史背景下的最新理念方式,相信敏捷开发也不会是软件行业的最后一个开发模式。
当然,敏捷开发目前也发展出了一些具体的子类型,这里先不展开。一个软件可以参照敏捷开发的方法来进行软件产品生产,那么这个软件就是使用敏捷开发进行的。

2. 想要什么特点

现在我们对敏捷开发就已经形成了一个非常宏观的概念定义,那么下一步就是对概念进行描述了。按照我的学习习惯,与其去看官方概念,不如先看特征,因为这比较符合我们观察世界的方式。同样拿猫来举例,我们对猫的概念首先是基于它是由四条腿、一根尾巴、哺乳动物常见的头型、身体不大、肉食,灵活等等这类的特点来形成的。首先不管分类和学术的表达,我们先谈特点。
敏捷开发从名字可知,这种开发模式的第一个特点就是快,高效,灵活、容易进行调整。其实却是如此,敏捷开发最重要的目的就是缩短开发周期,让软件更快的进入可以使用的阶段,并且软件能够应对更多变的需求场景,让开发能够根据外部情况的变化对软件最快地进行调整。
我查阅了不少资料,对于敏捷开发的特点描述各不相同,有些还很专业很详细。但是我认为从学习的角度,敏捷高效就是敏捷开发最大的,也是真正的特点,因为其他所有的特点我认为都是为了实现这个目标的,而不是其他的目标。所以,在这里我们认为敏捷就是敏捷开发的最终特征。

3. 为了实现特点

描述完敏捷开发的效果和特点,就要解释这种开发模式是怎样实现敏捷的特点的。通俗地举例,如果我们现要以最快的速度做一件具体的事情,当然在软件开发就是做出一个可用的软件,我们就以做饭为例子,做饭的最终目标是提供吃饭的内容。开发模式作为具体的方法,怎样才能最快的完成这个目标呢?

  1. 为了以最快的效率给食客做成一顿饭,最简单最重要的是马上开始!开始拿起现有的原料开始准备,不要先考虑每一道菜的具体细节,先把握好主菜的内容,马上开始动手洗菜、切肉、下锅。敏捷开发的方式其实也是这样,所谓的避免不必要的开销正是这样,尽一切可能减少在计划和文档上面花费的时间,在基本明确了开发内容后就开始动手实现。
  2. 有了做第一道大菜的开始,然后还可以做什么呢?当然是尽快开始做第二道菜啊!在有可能的情况下最好第二道能够和第一道菜一样用最快的速度开始做,而不要等上一道菜完成。这就是敏捷开发的第二个方法,递增而不是连续的,不断地增加新的功能,在可以进行开发新功能模块的时候尽快同步开展,加快了项目总体的速度。
  3. 现在我们已经有多道菜在同时准备了,每一道菜都由一个厨师(团队)负责,那么为了不出混乱,比如两个师傅重复做了某个菜、漏了某个菜等问题,协作必不可少且极其重要。在敏捷开发中,所有的子项目组需要随时与其他项目组沟通情况,并且与利益相关者沟通。就算是不是自己负责的任务,也要和其他团队的人员保持沟通,因为这样其实能够避免没有意识到的问题发生。
  4. 有些菜式比较复杂,或者食客对于菜式呈上的次序要求,这时如果大家都忙于自己的事情,虽然存在相互的沟通,但是可能还是会因为信息的不对等问题出现,所以这时说真话就非常重要。要真实及时地告诉其他师傅,我这个菜做不完了,做完自己菜的人赶紧过来帮忙!对于敏捷软件项目的效率和质量,需要所有的信息都是真实可信的。例如一个常见的情况,一项复杂的项目组无法在某时间内完成任务,这时就需要成员第一时间真实地反馈进度信息,以便调整开发的策略,协调更多的资源来解决问题。
    以上其实就是敏捷开发的四条原则,是不是很符合我们在日常生活中思考问题解决问题的思路呢~

4. 回到定义

在以上内容的铺垫后,我们再看敏捷开发的定义,就能更容易够理解正式严谨的定义到底在说什么了:

敏捷软件开发(Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。
——来自百度百科

待续

你可能感兴趣的:(总结,小程序)