华为敏捷项目管理实践分享

算法极昼
• 阅读 2008

当前,企业面对的商业环境瞬息万变,移动、社交、物联网、云计算、大数据、AI等蓬勃发展。新技术突飞猛进的同时,新业务形态越来越复杂、需求变化越来越快、软件规模越来越大、交付周期越来越短、开发和维护成本越来越高,产品交付的风险急剧增加,传统研发模式无法适应快速变化的市场需求。

为了应对这些挑战,业界软件开发模式经历了持续的改进和变迁,从20世纪60年代作坊式开发,到80年代过程控制模型,到2001年敏捷、DevOps模式探索。

华为敏捷项目管理实践分享

近30年来,华为的研发模式也在不断变迁、优化,从90年代初游击队式开发,到2000年引入IPD-CMMI,转变为集团军作战模式,到2008年经过敏捷思潮的洗礼,开启了“班长的战争”这一全新模式,形成了 “敏捷+ DevOps”相融合的、独特的华为敏捷研发模式。

通过这种独特的敏捷模式,拥有8万华为研发人员的研发体系,像大象一样翩然起舞,行走在时代的前沿,在电信运营商、企业、终端和云计算等领域构筑了行业领先的解决方案优势。研发的产品,被销售、部署到全球170多个国家和地区,服务于全世界1/3以上的人口,支撑了2016年同比增长30+%、达5000多亿元的销售额。

一、敏捷、 DevOps方法论介绍

敏捷开发模式,遵循万物生长的客观规律,通过不断迭代的增量式开发,确保可运行的软件逐步生长壮大,并尽早获得客户的反馈,及时开展优化。

DevOps理念是在开发流程和组织结构上,打破部门墙。通过端到端全自动化的持续交付流水线工具链,将市场、开发、运维等环节高度协同起来,并不断提升Ops环节的自动化能力,解放人力,聚焦于业务开发实现上。

附带说明下微服务理念是将庞大的、紧密的系统,解构为松散的、可独立开发、构建、部署、运行的众多微服务,各个微服务之间充分解耦,各个微服务也可自行选择技术栈。这将更有利于促成敏捷实践的落地和成功。

二、华为敏捷项目管理实践

华为敏捷项目管理,融合了敏捷、DevOps思想,不仅仅是开发阶段的敏捷,而是打通市场、交付、运维、运营的端到端敏捷。在实践中通过运维自动化,将Scrum敏捷团队开发的产品快速上线,并通过及时的运营,反馈给敏捷团队进行方向调整。

华为敏捷项目管理流程如下:敏捷开发流程可划分为准备、计划、开发、反馈四个阶段。

1、准备阶段

➤按照模块/服务组建全功能团队,团队包括PD(产品经理)、Scrum Master、UE(UCD工程师、美工/视觉)、SE(系统工程师)、开发、测试、运维、运营。每一个团队人数控制在6-12人。这需要配合系统解耦,模块足够小,或者采用微服务架构。

➤选择合适的敏捷项目管理工具。软件开发云团队采用DevCloud on DevCloud的开发自用模式,可创建Scrum流程项目或精简流程项目(精简流程项目是比敏捷模式更简洁的模式,适合小、微团队和个体开发者)。

2、计划阶段

PD是本阶段的核心角色。需求从线上反馈、线下访谈、友商分析、头脑风暴等渠道进入产品Backlog后,需求优先级由PD实时刷新、定期评审,确保“做正确的事”:
➤ PD对产品Backlog中Epic和Feature进行优先级分层排序,选择优先级高的特性确定发布计划。

➤ 在每个Spring启动前,按照优先级排序的Story制定迭代计划。

3、开发阶段

Scrum Master是本阶段的核心角色,需保证整个团队高质高效“正确的做事”:

➤基于迭代故事墙(看板),各个全功能团队开展每日站立会议,将进展和求助录入Story讨论区,早会讨论内容通过站内消息和邮件等实时通知责任人。

➤开发人员提交代码时,发起同行评审。之后由Scrum Master进行代码审核,确认没有问题后合入版本主干。

➤ 每天定时执行自动化静态代码检查任务,检查编码安全(如未授信访问)、编码问题(如空指针引用)、圈复杂度、重复率、编程风格,问题清零才允许构建出包。

➤通过云端自动化的持续交付流水线,实现持续构建、持续部署(包括脚本自动下发、比对)、持续测试(功能、接口、性能、可靠性等实现100%自动化)、持续发布、持续监控,可将Ops端手工操作的时间缩短到20%内,全功能团队可以聚焦于业务交付上,显著提升效率和产品质量。

代码提交时按照规范备注Story ID,即可将代码关联到对应需求上。创建测试用例和缺陷时,也需关联需求,这样就实现了“需求-代码-用例-缺陷”的双向追溯。

4、反馈阶段

反馈阶段主要开展验收和回顾活动。

➤召开ShowCase会议,由PD进行验收,确保产品功能与需求一致。

➤转测试回归不通过问题,需由Scrum Master辅导问题责任人进行回溯,并召开整个团队的质量回溯会议。会议重点在于分析问题根因,并识别出管理、流程、技术、工具上可落地的改进点。这些改进点每一个都必须符合Smart原则,是可落地、可执行的,不能出现大话空话套话。而且这些问题都要求最晚在下一个迭代中,执行落地,以避免问题再次出现。

➤通过迭代需求统计报表和燃尽图,查看需求交付进展。

➤迭代遗留缺陷报告呈现每个模块/服务质量情况,并设置质量门禁。单服务遗留严重及以上级别问题,或者总遗留DI值(遗留缺陷密度)>x分,则服务质量不达标,不允许发布。

重点提一下质量回溯会议,对应于敏捷迭代回顾会议,是华为持续改进的实践瑰宝。其要义是塑造整个团队对事不对人、勇于直面问题、只要有方法有措施下次改进不再重犯错的“从泥坑里爬起来就是圣人”的文化氛围。

总结:

华为一贯坚持以客户为中心,交付“刚刚好”的系统。

刚刚好的系统,不是“满足于及格标准”,而是根据需求优先级,开展资源分配、组织变革和需求交付,去交付当前阶段用户最紧急的需求,而绝不浪费一枪一弹去做用户实际不需要的多余特性,这样可以确保所有资源都用在满足客户真实的需求上,最大程度保障产品质量和效率。

敏捷是一种文化,华为的敏捷实践,融入了华为独特的文化基因。每一个团队都有自己的特质,可以根据实际情况选择适合自己的敏捷流程和实践,就能够达到高质高效开发的光明彼岸。

华为软件开发云(DevCloud)是集华为研发实践、前沿研发理念、先进研发工具为一体的研发云平台,为开发者提供研发工具云服务,让软件开发简单高效。(来源:华为云城市产业云解决方案)

合理并且有效地运用项目管理工具,不仅可以让我们工作井然有序地进行,还能最大程度保证项目目标的达成。CORNERSTONE
提供了包括任务/需求/测试管理、迭代规划、缺陷追踪、报表统计、团队协作、WIKI、共享文件和日历等功能模块,现在申请20人以下团队即可免费使用。

华为敏捷项目管理实践分享

点赞
收藏
评论区
推荐文章
待兔 待兔
4年前
理解软件设计的基本原则
任何软件唯一不变的真理是变化,毕竟软件是"软"的。软件研发需要快速响应市场、需求的变化。为了快速响应,我们可以通过增加人手来达到部分目的,但软件开发属于知识密集型工作,当人数增加到一定数量后,不仅不能够提升研发效能。反而增加管理成本,沟通成本及由于人与人沟通、理解上产生的歧义而最终造成软件实现的混乱和复杂度。所以软件本身需要能够轻易的扩展,适应各种需
Stella981 Stella981
3年前
ElasticSearch + Canal 开发千万级的实时搜索系统
公司是做社交相关产品的,社交类产品对搜索功能需求要求就比较高,需要根据用户城市、用户ID昵称等进行搜索。项目原先的搜索接口采用SQL查询的方式实现,数据库表采用了按城市分表的方式。但随着业务的发展,搜索接口调用频次越来越高,搜索接口压力越来越大,搜索数据库经常崩溃,从而导致搜索功能经常不能使用。!(https://oscimg.oschina.n
Stella981 Stella981
3年前
Scrum 实操流程
Scrum是用于开发、交付和持续支持复杂产品的一个框架,是一个增量的、迭代的开发过程。敏捷的原则和方法必须在每天的实践中落地,对人和管理要求高。所以有scrummaster为了适应变化,敏捷的迭代周期短特征1.迭代开发:这意味着你应该重复开发过程。2.增量交付:意味着你应该一步一步地创建产品的“可用”子集
Stella981 Stella981
3年前
Atom 服务架构演变
Atom是什么?Atom是集结业内各色资深电商行业设计师,提供一站式专业智能页面和小程序设计服务的平台。经过2年紧凑迭代,项目越来越庞大,需求不断变更优化,内部逻辑错综复杂,维护成本急剧拉升。同时,Atom将要承载的业务越来越多,要向更多的内部用户和商家提供服务,为了适应这些变化,架构升级成为当时紧迫的事项,我们将解构服务端模块,让服务轻量化、
Stella981 Stella981
3年前
DevOps研发模式下「产品质量度量」方案实践
点击上方“测试开发技术”,选择“加为星标”优质文章,第一时间送达!!(https://oscimg.oschina.net/oscnet/0632949843ba0ae7b811657d415618df413.jpg)在当今互联网环境下,需求变更越来越快,交付周期却越来越短,怎么判断一个系统是否测试充分?产品质量满
敏捷开发 敏捷开发
1年前
敏捷开发:想要快速交付就必须舍弃产品质量?
在创新驱动的市场环境中,敏捷开发已成为许多组织的首选软件开发方法。其关键优势在于能够快速适应市场变化,并频繁地交付靠谱的产品。然而,快速交付的同时,团队要如何确保产品质量,确保交付的产品都是高质量的、可靠的且附加价值的,一直以来都是大家挑战以及争论的焦点。
玩转云端 | 提升边缘应用交付效率,天翼云Serverless边缘容器有妙招
随着5G、物联网时代的到来,智能终端设备数量急剧增加,云计算能力不断向边缘侧、设备侧下沉,与此同时,针对边缘计算应用的高效、敏捷交付需求也随之产生。Serverless作为一种构建和管理基于微服务架构的技术,可实现部署应用无需涉及基础设施建设,自动
我在京东做研发 | 揭秘支撑京东万人规模技术人员协作的行云DevOps平台
随着业务变化的速度越来越快各类IT系统的建设也越来越复杂大规模研发团队的管理问题日益突出如何提升研发效能成为时下各类技术团队面临的重要挑战京东云DevOps专家将带您深入研发一线揭秘支撑京东集团万人级研发管理的行云DevOps平台分享企业应该如何规划Dev
浅谈常态化压测 | 京东物流技术团队
随着业务的不断增长,支撑业务系统的压力也逐渐增加,会面临如系统越来越厚重、逻辑越来复杂、迭代节奏越来越快等繁杂的情况。我们当前并没有做到在每次变化时快速识别出性能风险,检测产品或系统的稳定性、可靠性,而且我们还在不断的投入人力成本在压测这件事情上也是不合理的,所以我们要将性能验证融入到我们日常的工作中,把压测做到常态化,做成平常的一件事。
liam liam
1年前
提高测试效率的秘诀:精通 API 自动化测试的最佳方法
我们的研发团队最需要应对的就是各种新需求。软件越来越快的更新速度也让整个系统也变得越来越复杂,这让工作面临着巨大的挑战。测试人员必须与开发人员沟通,确定测试范围,并及时获取最新的接口用例数据来验证功能。但是,由于需求变化太频繁,测试范围不能及时跟上接口的更
算法极昼
算法极昼
Lv1
重到故乡交旧少,凄凉。却恐它乡胜故乡。
文章
5
粉丝
0
获赞
0