知识科普|企业数字化转型过程中的敏捷开发实践(上)

_原题为 企业数字化转型过程中的敏捷开发实践(上)

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
数字化浪潮正冲击着每一家企业 , 大数据、云计算、社交媒体和移动互联等技术日臻成熟 , 人工智能、物联网和大数据分析等技术也逐渐兴起 。 这些新兴技术正在深刻地改变各行各业的行业环境 , 进而影响到企业的方方面面 , 包括营销、研发、供应链和服务等诸多领域 。
敏捷开发是企业在数字化转型中的重要一环 , 我们将通过两篇文章与您分享安永针对企业数字化转型中敏捷开发的实践 。
在本篇文章中 , 我们将聚焦企业数字化转型的方向与路径以及企业数字化敏捷体系和能力建设两个话题 。 在下篇中 , 我们则将重点介绍敏捷开发的主流方法和工具软件 。
一)企业数字化转型的方向与路径 1. 企业数字化转型动因和方向
当前 , 三大要素正在驱动企业的数字化变革转型:

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
传统企业向数字化企业转型 , 必须从变革企业文化和更新企业发展战略的高度 , 去转变其原有的理念和经营策略 , 具体包括以下几个方面:

  • 树理念:企业的观念需要转变为“用户体验至上” , 以极致体验为目标 。
  • 变流程:企业的服务流程须转变为强调竞争差异化和个性化、“千人千面”的适应性流程 。
  • 建生态:企业必须着重考虑如何吸引各种外部资源 , 共同打造围绕本企业核心产品或服务的生态系统 。
  • 挺创新:企业需要充分激发其内部和外部(即生态圈)的创新机制 , 提升其自身对新技术的敏感度 , 勇于尝试和采用新技术 , 以创新引领市场需求的变化趋势 , 以创新获取更高的效益和市场竞争中的优势地位 。
  • 转敏捷:企业在其创新过程中 , 需要建立低成本快速试错的机制 , 以保障企业的创新活动始终沿着正确的方向探索前行 。 这一机制 , 就是敏捷开发 。
2. 数字化系统研发的敏捷化是企业数字化转型的必由之路
在上述五个方向中 , 敏捷化——特别是数字化系统研发的敏捷化 , 是赋能企业研发创新、生态建设和流程再造的重要抓手 。
不过一般而言 , 即使是在今天 , 由于其自身固有的特点 , 传统企业中还是有大量的业务或职能部门并不需要转变为“敏态” 。 此类业务或职能所需的数字化系统可称之为“稳态”系统 。 对大部分传统企业而言 , “敏态”和“稳态”两种数字化系统和对应开发模式的长期并存 , 是一种现实的理性的选择 。 在本文中 , 我们重点探讨“敏态”部分 。

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
对于敏态数字化系统的研发 , 采用敏捷开发的方式能带来如下好处:
  • 价值先行:敏捷化的开发模式 , 以在最短时间内交付具备实用价值的(软件)产品为第一目标 , 然后通过快速迭代上线 , 实现快节奏的、持续的功能优化和增强 。
  • 快速响应:敏捷化的开发模式采用小版本快速迭代的方式 , 其响应变化的速度远远超过传统的瀑布式开发方式 。
  • 降低风险:通过少数几个迭代 , 敏捷开发模式即可产出最小化可用功能包来投放市场 , 可获取真实的市场反馈 , 低成本快速试错 。
二)企业数字化敏捷体系和能力建设 企业数字化研发敏捷化 , 是涉及到企业内部多方面改造的系统工程 , 这是因为大多数传统企业在IT治理方面 , 都多少存在以下这些方面的问题:
  • IT架构一致性管理不足 , 缺乏对标准规范的统一管理
  • 业务应用需求缺乏公司级管控与评估标准 , IT投资决策不科学
  • IT建设多头管理 , 与各相关业务单元分工边界不清晰
  • 开发人员分散在不同的部门与团队 , 开发资源分散
  • 在规划与架构管理、需求管理、应用运维管理、安全与灾备管理等能力上存在不足
要解决上述这些问题以建立起企业的数字化敏捷体系 , 需要从治理体系与管理方法、组织架构、岗位职责、人员能力、技术支撑平台等多个方面着手 , 下面将分别展开论述 。
1. 治理体系变革
需求和预算管理流程的变革
基于传统管控模式的预算管理过程 , 一般在上一年度结束前 , 根据历史数据以及各部门的资金申请情况并结合对业务部门需求的预估 , 对新的一年进行资源需求的预测 。 再根据所获得的资源总量进行资源分配 , 并按照分配结果管控预算的执行进程 。 对计划的执行和管理以半年或年为单位 , 敏态建设难以很好地得到支撑 。
为支持敏态业务的开展和敏捷化开发模式的推行 , 与之对应的预算管理体系需要建立起来 , 以应对需求和预算的平衡 , 加快和加大被验证需求的数量和范围 。 下图是一种敏捷的需求与资金管理方式的例子 。 当企业需要在某个全新领域创新时 , 可以通过设计思维、头脑风暴等方式涌现出大量创意(数量为100+) , 其中部分比较有前景的创意(15至20个)被选中 , 再经过一段时间的孵化变成原型 。 各方对原型评审后 , 决定对其中少数(2至4个)创意进行进一步的验证与融合(1+个) , 以形成最小价值产品(MVP) 。 MVP就是一个可投放市场的、新的产品的起点 。分页标题
这种方法对传统管理方式的主要改进点如下:
  • 建立预算准备金备用池制度:每年年末抽取固定比例的预算进入预算池 , 以支持敏态业务的概念验证和最小价值产品的研发 。
  • 区分敏态业务的不同阶段:通过划分阶段 , 为不同阶段设置不同的预算使用目标侧重点和支持活动 , 通过需求漏斗以适当的成本甄选和验证需求 , 实现需求的商业价值最大化 。

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
敏捷项目管理流程的变革
企业对敏态开发的项目管理 , 应当在传统的项目管理体系基础上 , 根据当前项目团队所选择的敏捷开发方法体系和团队的敏捷成熟度等因素 , 对项目管理的管控范围、管控方法等 , 进行一定的裁剪 。
下图罗列了往往需要进行裁剪的几个项目管理领域:

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
  • 项目目标:传统项目的目标针对了明确和固定的项目实施范围 , 即在项目开始前就设定了的一个需求组合 。 而敏捷项目管理主张“价值胜过约束” , 其项目的目标是产品愿景、商业目标和能力 , 具体的需求条目和目标随时可能根据市场情况和业务需求的变化而调整 。
  • 变更管理:传统项目的变更管理重点是控制需求变更 , 以减少需求变更给项目所带来的不确定性 。 而敏捷项目欢迎因响应市场和业务变化而产生的需求变更 , 敏捷开发的机制保证了对变更的快速低成本支持 。
  • 计划管理:传统项目的计划管理要求在项目开始之初 , 就制订出详尽和明确的项目计划 。 而敏捷项目管理主张“适应胜过遵循” , 及“响应变化高于遵循计划” , 认为只要适度计划即可 。
  • 沟通管理:传统项目的沟通管理中涉及项目团队内部沟通的 , 基本上可以被相应的敏捷活动(如每日站会、迭代计划、迭代验收、迭代回顾等)所代替 , 不同开发团队之间的协调 , 往往也可以被SAFe框架下的对应活动所取代 。 这些都需要被裁剪 。
敏捷实施管理流程的建立与持续优化
企业的敏捷化转型不能一蹴而就 。 企业应先尝试团队级(10人以内)的敏捷开发实践 , 可以考虑选择几个相互独立的开发团队同时进行尝试 。 具体流程和方法首推Srcum的敏捷体系 , 也可以考虑Scrum和极限编程(XP)的组合 。
团队敏捷实施一段时间(半年以上) , 并积累了一定的成功经验后 , 就可以考虑将敏捷实践的规模扩展到项目集——即需要至少3至4个开发团队紧密协作才能顺利推进的项目集群 。 此时须引入规模化敏捷的实践框架(如SAFe) , 并配备等规模化敏捷所需要的关键角色 。
一般而言 , 只有当企业实施项目集的敏捷开发一年以上 , 并获取足够的成功经验后 , 才可以考虑逐步将敏捷实践的规模进一步扩大 。
各个级别的敏捷实践所包含的具体敏捷活动因企业而异 , 下图是某大型企业定义的各个级别敏捷具体活动:
【知识科普|企业数字化转型过程中的敏捷开发实践(上)】
知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
2. 组织架构和岗位职责调整
团队级的敏捷开发实践(如Scrum敏捷开发模式) , 要求在开发团队内部 , 新增如下岗位(角色):
  • 敏捷教练(Scrum Master) , 其职责包括:向开发团队宣讲敏捷理念 , 引领、支持团队开展敏捷实践活动 , 帮助团队建设自组织的全功能团队 , 帮助产品负责人将每个迭代的开发目标、范围等准确传达给团队的每个成员 , 帮助团队移除开发过程中遇到的任何内外部障碍 , 代表团队与管理层和其他团队沟通等等 。 对于规模较小的项目(只有一个开发团队的) , 敏捷教练往往可以取代传统开发模式下的项目经理 。
  • 产品负责人 , 其职责包括:创建清晰的产品需求条目;为需求条目项编排优先级 , 以确保目标和价值的实现;优化工作任务的价值;确保需求条目的清晰透明 , 让团队成员都清楚接下来需要完成的工作项 , 等等 。
对于敏捷开发 , 传统项目经理所需承担的计划编制、计划执行管控等方面的职能被大大弱化了 。 敏捷的理念不主张制定过于详尽的计划 , 反对用计划的约束限制团队响应变化的能力 。
按照敏捷方式组织的项目开发团队 , 相对于传统项目组织结构的变化大致如下图所示:

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
对于规模化敏捷 , 除了上述新增角色外 , 还需要在项目集的层面设置新的岗位 。 以SAFe框架为例 , 新设置的岗位包括:
  • 产品经理:其职责类似于敏捷团队层面的产品负责人 , 只是其管理的需求条目颗粒度更大 , 只需要将条目拆分到能够由单个团队在一次迭代开发周期内完成即可 。
  • 发布列车工程师:这个角色为整个项目集提供共同的架构指引和技术框架 , 从技术角度协调各个敏捷团队的开发进度 , 确保各个团队所开发的特性之间的相互依赖关系被识别并关注 , 通过安排集成测试等手段确保跨团队的集成顺利进行 。 分页标题
下图是安永为某航企设计的、适用于规模化敏捷开发的组织架构:

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
3. 人员技能的变革
敏捷化开发要求敏捷开发团队的全体成员都要深入理解并认同敏捷的相关理念 , 掌握敏捷相关的方法和技术 , 并熟练使用相关的支持性工具 。 下图是根据通用的敏捷能力模型对某敏捷项目团队的敏捷能力水平进行的现状分析和短期提升目标设定:

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
可以看出 , 敏捷开发团队是全功能的团队 , 它要求团队中的每个成员最好都成为能够掌握多种开发、测试和部署配置技术的复合型人才 , 以更加灵活地应对需求的变化 , 并充分利用团队成员的时间 。
下图大致罗列了敏捷开发团队应当掌握的各种敏捷开发相关技能 。 其中 , 实施难度越高的技能 , 对团队的敏捷成熟度要求越高 。

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
4. 敏捷化开发所需的技术支撑平台——DevOps工具链
敏捷实践涉及的活动类型较多 , 串联这些活动的流程比较复杂 , 仅仅依靠手工操作很难让这些流程高效地运转起来 。 因此 , 我们需要借助工具软件的力量 , 搭建一个敏捷支撑平台 , 以此来实现敏捷开发流程的固化和高效运转 。
为此 , 我们所选择的工具集 , 要能够实现以下关键环节的覆盖与流程的贯通:
  • 需求收集、需求创意
  • 需求筛选、需求合并、需求分解
  • 需求条目转化为用户故事和设计任务
  • 需求条目和用户故事转化为测试用例
  • 架构设计/详细设计 , 设计文档提交
  • 用户界面/用户体验设计
  • 开发任务的分派、追踪
  • 代码编写、单元测试、代码提交
  • 开发完成的功能项提交测试
  • 测试用例的执行 , 结果分析与报告
  • 缺陷分析 , 缺陷修正
  • 版本管理 , 版本发布等
实现上述目标所需的工具软件 , 完全可以借助DevOps工具链 , 并结合企业自身敏捷实践的具体方法和流程 , 对既有工具进行一定程度的配置或定制化开发 , 即可实现对从预算编制开始的整个软件开发生命周期的全面支持 。
下图是对DevOps生命周期的一个概要性的介绍 , 具体的工具软件介绍参见下篇文章:

知识科普|企业数字化转型过程中的敏捷开发实践(上)
文章图片
在下篇文章中 , 我们将为您继续介绍敏捷开发的主流方法和工具软件 。
本文是为提供一般信息的用途所撰写 , 并非旨在成为可依赖的会计、税务或其他专业意见 。 请向您的顾问获取具体意见 。