敏捷宣言包括四种核心价值和十二条原则,可以有效指导通过敏捷迭代的模式,形成以人为中心的软件开发方法。具体而言:
敏捷宣言强调的敏捷软件开发的四个核心价值如下所述,是通过比较的形式展示出来,在工作当中,我们认可左右两边的表述,但相较而言,左边更为重要。
1)个体和互动高于流程和工具
这主要强调要积极借助流程和工具,但更要以人为中心尊重个体的特殊性,并强调团队互动合作的价值。软件开发使用的流程和工具都是基于前期经验积累以及客观可获得性而定。但实际的开发是有人来进行,同时一般来说是团队的形式。不同的个体对于工具的理解掌握和对流程的认知,以及团队合作和互补的情况会有不同的组合。最终是开发者交付的产品,团队合作交付的产品。
2)工作的软件高于详尽的文档
这主要强调聚焦最终的目的,不要纸上谈兵,而要致力于完成软件交付,创造实际效果。详尽的文档固然重要,展示了代码开发的情况但并不是实际交付的产品并能够发挥效果,开发的最终目的是为了交付实际的软件,并且确保软件能够工作。
3)客户合作高于合同谈判
这里强调了合作心态的重要性。客户和开发部门之间可以通过多轮的讨论、详尽的条款来明确双方的需求和责任,但实际开发过程当中总是会出现意想不到的问题。如果只是采取相互提防、自我保护、撇清责任的心态,开发过程就会陷入争吵和指责,而不是通过合作来解决问题。
4)响应变化高于遵循计划
这里强调了敏捷的核心,就是适应变化及时调整和迭代。计划有助于有效分工和合作,跟踪进度以及控制预算。但实际当中总会出现偏离,明确软件开发的最终目标,从而及时进行调整就能避免刻舟求剑。
敏捷宣言提出的12条原则已经广泛应用于项目管理以及与IT开发中。12原则包括:
1. 最高优先级的是:通过尽早和持续交付有高价值的软件,满足客户。
敏捷开发的目的是为了交付软件、满足需求并产生价值。在这个过程当中通过MVP等迭代的形式。尽早、持续地让客户对产品有直观的了解并获取反馈,有助于产品的进一步完善,并形成良性循环。
2. 欣然面对需求变化,即使是在开发阶段的后期,敏捷流程就是用变化来为客户获得竞争优势
敏捷是一个持续的过程,不断通过循环进行完善。其特点使其即便在开发阶段的后期,也能基于客户的需求、市场的演变和竞争者的情况,对软件进行迭代、完善,从而提升客户的比较竞争力。
3. 频繁交付可工作的软件,从数周到数月,交付周期越短越好
敏捷工作的特点就要求在较短的周期内,及时获得客户对产品的反馈。从而进行快速、有效的调整和迭代。相应的,在越短的周期内能够提供更新的MVP,使得这个反馈和迭代成为可能。
4. 在项目过程中,业务人员、开发人员必须每天在一起工作
敏捷交付是一个团队合作迭代的过程。不仅要求开发人员及时获得业务人员的输入,同时在敏捷团队构成过程当中。也需要大家既要有独立的分工,又要协同合作。晨会、夕会和日常的沟通也必不可少。这些就要求业务人员和开发人员每天合署办公。
5. 以受到激励的个体为核心构造项目,为他们提供所需的环境和支持,信任他们可以把工作做好
敏捷的核心工作是通过敏捷教练的服务和引导,激发个人和团队的工作热情、创造力以及效率。这个过程当中,教练不是越俎代庖,而是赋能。通过协助明确个人和团队的目标,提供高效的工作环境、推动有效的组织和沟通,并提供相应支持。团队可以创造超过预期的成绩。
6. 最有效的、最高效的沟通方法是面对面的交谈
实际沟通过程当中,一般三成是通过语言,而七成是肢体语言。同时,我们的经验告诉我们,就效果而言,当面沟通优于视频沟通,视频沟通优于电话沟通,电话沟通优于文字沟通。这也是为什么在敏捷管理当中,无论是计划会、站会、评审会、回顾会,都强调面对面沟通。
7. 可工作的软件是衡量进度的首要标准
敏捷开发的最终目标是交付可工作的软件。其他对于进度的说明,都只能作为工作量,而不是交付的成果。
8. 敏捷流程倡导可持续开发。客户、开发人员、用户要能够共同、长期维持步调(节奏)、稳定向前
敏捷流程本身适应的就是环境的变化、客户需求的变化和竟争对手的变化等等。这也就要求无论客户,开发人员和用户都会持续对交付的产品提供反馈,作为进一步迭代优化的基础,从而不断改善。
9. 持续地追求技术卓越和良好的设计,以此增强敏捷的能力
敏捷的实现基于个人的能力(包括技术等硬技能也包括合作沟通等软技能),也基于组织的工作方式和团队配合的形式和效率。在每一次站会特别是项目完成后的回顾会,我们可以检讨下一次改进的机会,其中就包括技术和设计等方面的内容。通过处理技术负债可以为下一次Sprint冲刺及敏捷项目的开展奠定更扎实的基础。
10. 简单 -- 尽最大可能减少不必要的工作,简单是敏捷流程的根本
敏捷就是要实现快速迭代,有效推动个人和团队的协作和交付效率。这个过程当中,遵循简单的原则,无论是沟通、计划、设计、开发、测试哪个事项或环节,都可以帮助我们更聚焦于价值最重要的工作。突出的例子如Scrum团队的构成和分工、站会的安排、面对面沟通、DOD以及DOR的定义等。
11. 最佳架构、需求和设计,来自自组织型的团队
敏捷团队的特点就是由目标一致的、多职能的、充分授权的复合团队构成,通过协作完成冲刺和项目。其中产品经理对产品的定义、待办事项和优先级确认、监督进度、验收、项目管理起关键的作用,但具体的需求、架构和设计由专人完成。产品经理并不需要、也不可能越俎代庖。整个团队通过自组织的形式有效运转。
12. 团队定期反思如何提升效率,并调节和调整自己的工作方式
敏捷的过程不是一蹴而就的。在每一个冲刺或项目完成后,通过定期反思可以有助于提升项目的透明度,帮助大家相互学习和提升。特别是明确上一个工作周期内遇到的问题挑战,对下一次迭代中,在流程、工具、方法、合作等方面可改进的机会形成共识。从而更高效、更愉快地迎接下一次冲刺或项目。