写点什么

如何高效地进行敏捷开发管理

  • 2020-04-27
  • 本文字数:2536 字

    阅读完需:约 8 分钟

如何高效地进行敏捷开发管理

敏捷开发其实是企业的一种管理文化。


目前软件行业敏捷开发管理最大的问题在于太看重具体的形式,而忽略了敏捷的初衷。


很多公司请几个敏捷教练建立流程,把会议室的椅子都搬走宣布从今以后大家站着开会了,使用敏捷管理工具建立迭代、建需求、分任务,可是这真的就意味着敏捷了吗?


因为敏捷,老板要求这个功能明天上线,怎么实现我不管,毕竟响应变化高于遵循计划。


因为敏捷,我们希望每天至少发布一个版本,没办法,敏捷要求我们快速地交付可工作的软件。


因为敏捷,虽然需求我们还没想好,但是这个版本要保证本周内上线,敏捷宣言说得好,要欣然面对需求变化。


因为敏捷,我们项目一篇文档也没有,毕竟工作的软件高于详尽的文档。


我们不禁要问,这真的是敏捷吗?敏捷的初衷是团队成员能够更加紧密地配合完成工作,敏捷开发强调拥抱变化,但并不意味着可以随心所欲地变更需求。敏捷开发的实质是通过迭代式增量软件开发的方式,防止出现长期闭门造车严重偏离客户需求,达到快速响应市场变化的目的。


下面我想分享下我们公司在近百人的开发团队,同时进行十几个项目开发的过程中,是如何使用 CORNERSTONE 管理平台进行敏捷项目管理的。


角色划分

杰夫·萨瑟兰将 Scrum 团队中的角色分为三种:


  • 开发团队成员,负责开展具体的开发工作;

  • Scrum Master,协助开发团队把事情做得更好;

  • 产品负责人,决定应该做什么工作,拟定待办事项清单的内容。


我们根据我们开发中的实际情况将系统中的角色分为以下四种:


  • 项目经理:相当于 Scrum Master,负责协调团队内部合作,召集站立会议,把控项目整体进度。需要明确的是,项目经理并不是一个传统意义上的团队领导。用更流行的话说,项目经理更像是一个仆人式领导。项目经理不应该对团队成员大吼小叫,也不会告诉研发人员该做什么以及如何开发一款产品,而是应该集中精力帮助研发人员清除前进道路上的障碍。

  • 产品经理:相当于产品负责人,负责决定应该做什么工作,拟定待办事项清单的内容,确定各个事项的优先顺序。事实上,和很多人理解的不同是,确定各个事项的优先级几乎是敏捷中最重要的工作。为什么?在软件开发领域有一条根据数十年研究工作总结出来的原则,即在任何一款软件中,80%的价值来自 20%的功能。人们总喜欢说每个需求都是重要的,但产品经理需要问一下自己,究竟哪些需求能够给整个项目带来最大的价值?而这些能够带来最大价值的需求就必须优先完成。

  • 开发人员:开发人员是项目开发任务具体的实施者。他们负责完成开发任务,及时反馈开发进度。

  • 测试人员:测试人员是项目测试任务具体的实施者。他们负责制定测试计划,编写测试用例,创建以及回归缺陷。


在 CORNERSTONE 中,我们可根据项目成员的具体职能设定不同的角色和权限。


收集需求(用户故事)

在项目开始前,产品经理应该基于用户或市场的需求,来编写用户故事,即 CORNERSTONE 中的需求。一个好的需求(用户故事)一般应该满足 INVEST 标准:



(一) 独立性(Independent)——尽可能地使一个需求独立于其他的需求。需求之间的依赖使得制订计划、确定优先级和工作量评估都变得很困难,通常我们可以通过组合需求和分解需求来减少依赖性。


(二)可协商性(Negotiable)——需求的内容要是可以协商的,需求不是合同。


(三)有价值(Valuable)——每个需求必须对客户具有价值。


(四)可评估(Estimable)——开发团队需要衡量需求,以便确定优先级和工作量,并便于安排工作计划。


(五)规模小(Small)——一个好的需求要尽量维持小规模,至少要确保在一个迭代周期中能够完成。需求越大,在安排计划、工作量评估等方面的风险就会越大。


(六)可测试(Testable)——一个需求要可以测试,以便确定它是可以完成的。如果一个需求不能够测试,那么你就无法知道它什么时候可以完成。


基于以上原则,CORNERSTONE 支持在创建需求时,关联其他需求(这样我们便可以做到组合需求来控制单个需求的粒度!),关联测试用例(确认需求是可以被测试的!),关联迭代(确保需求可以在一个迭代中完成!),设定优先级以及开始截止时间。


冲刺规划会议(Sprint Planning Meeting)

在每个迭代开发正式开始前,我们都会举行一次规划会议,由产品负责人讲解需求,由所有团队成员一起负责将需求拆解细化成具体的开发任务。开发任务的颗粒度最好足够细,以确保一名开发人员在一个迭代周期内可以开发完成。


一次冲刺规划会议中的产物一般为:


(一)具体分配到每个开发人员的任务列表;



(二)会议纪要,CORNERSTONE 提供了 WIKI 功能,可以在系统中保存每次会议的会议纪要;


每日站会

在迭代开始后,我们团队一般每天上午固定 15 分钟左右进行内部沟通。我们一般会打开 CORNERSTONE 任务的看板视图:



每个团队成员只需要用三到五句话说明以下三个问题:


  • 我昨天做了什么来完成我的任务;

  • 我今天打算做什么来完成我的任务;

  • 有没有什么可能的阻碍因素会导致我不能按时完成任务。


一般来说,项目负责人需要聚焦于帮助团队成员解决阻碍因素,以帮助所有任务按时完成。

随时关注团队进度

在迭代的开发过程中,项目经理需要随时关注项目的开发进度。我们的项目经理一般通过 CORNERSTONE 提供的项目仪表板来查看项目的整体完成情况;通过燃尽图了解任务的完成情况;通过缺陷分布、缺陷累计来了解迭代完成的质量。



系统自带的甘特图能随时查看迭代的具体进程以及每个项目成员的任务分工情况,做到分配合理。



除了以上统计外,还有一个“报表”功能属于管理员专用,报表功能包含迭代燃尽图、代码提交统计、状态分布统计、每日新增曲线,每日完成曲线、累计数量曲线以及成员工时列表等统计信息。

评估总结

在每一次迭代束之前,我们的研发团队成员还要聚在一起开个评估会,向产品负责人演示在这个阶段之内取得的成果,接受评估意见。研发团队成员会评估一下列表上的工作任务已经完成了多少,自己是在这个阶段的冲刺中认领了太多任务以至于没有做完,还是工作任务认领得太少了。CORNERSTONE 同样提供了汇总视图,用以在这类会议上展示说明。



最后总结一下,敏捷其实是一种管理方式,敏捷不会告诉我们具体每个项目应该怎么做,杰夫·萨瑟兰有句话说得好,不要猜测,要规划、执行、检查、行动。我认为这句话道出了敏捷的本质。


本文转载自技术琐话公众号。


原文链接:https://mp.weixin.qq.com/s/QZ77sMLjvYe8yD1Bxva8Xw


2020-04-27 17:351604

评论

发布
暂无评论
发现更多内容

AWS在线技术峰会2020探班回顾,四大看点不容错过

有只小耳朵

云计算 AI 云原生 金融 医疗

HTTP必知必会

陈靓-哲露

正则表达式

菜鸟小sailor 🐕

爬虫

2020年6月最新iOS面试题总结

iOSer

ios 2020 面试 经验总结

Java基础知识面试题(2020最新版)

Java架构师迁哥

Copy攻城狮辛酸史:含泪“一分钟”跑通MindSpore的LeNet模型

华为云开发者联盟

学习 程序员 mindspore

跨专业学习6个月,成功上岸阿里|滴滴,分享学习路线供大家参考

小Q

Java 学习 架构 面试 基础

实战案例丨GaussDB for DWS如何识别坏味道的SQL

华为云开发者联盟

数据库 sql 算子

学习笔记丨浮点数探究

Liuchengz.

C语言 基本数据类型

第一周作业,UML图

等燕归

当代开发者的好帮手,浅析.NET敏捷开发框架的优势与特点

Philips

敏捷开发 软件开发 .net core 开发工具

我擦~字符串转字节切片后,切片的容量竟然千奇百怪

Gopher指北

后端 Go 语言

分布式系统:数据一致性解决方案

马迪奥

分布式事务 一致性

面试官:哪些场景会产生OOM?怎么解决?

艾小仙

Java 架构 面试 编程语言 JVM

百度大脑事件图谱:洞察复杂世界中的事件知识

百度大脑

食堂就餐卡系统设计 UML 练习

escray

学习 极客大学架构师训练营 UML

OBS鉴权实现的宝典秘籍,速拿!

华为云开发者联盟

OBS 签名

卧槽!牛逼了!40K+Star!Mall电商实战项目开源回忆录!附源码、教程合集

学习 程序员 架构师 计算机

GrowingIO 智能运营产品微前端实践

GrowingIO技术专栏

大前端 智能运营

Apache Pulsar 社区周报|09-05 ~ 09-11

Apache Pulsar

开源 云原生 Apache Pulsar 消息中间件

餐卡系统设计文档

龙卷风

百度大脑助力旅游场景智能解决方案落地

百度大脑

同城快递订单系统架构设计方案

周冬辉

入行架构师之前,这7项技能你要先了解一下

华为云开发者联盟

架构 架构设计 架构师

Code Like Sync, Works Like Async

滴滴普惠出行

智能门禁的音视频技术应用

anyRTC开发者

音视频 WebRTC 直播 RTC

架构师训练营第一期-第一周课后 - 作业二

架构师训练营第一期-第一周课后-作业一

JDK15正式发布,划时代的ZGC同时宣布转正

YourBatman

ZGC JDK15

Rust闭包的虫洞穿梭

袁承兴

rust 函数式编程 闭包

git的几种实用操作(合并代码与暂存复原代码)

良知犹存

git

如何高效地进行敏捷开发管理_研发效能_技术琐话_InfoQ精选文章