浅谈云效中的开发任务拆分

本文涉及的产品
云效 DevOps 流水线,基础版人数 不受限
云效 DevOps 代码管理,基础版人数 不受限
云效 DevOps 项目协作,基础版人数 不受限
简介:

使用云效公有云版本三个多月,对于任务拆分的一点心得,现在这里分享一下。

任务的定义

任务是从产品到开发到测试一个可以贯穿的概念,在Jira、github 等项目管理软件中,叫做 Issue,Issue 在不同的项目、项目中不同的环节都不太一样。称之为任务的确也没啥太多问题。

开发中过的任务,简单的来说,要完成的一个定义明确的功能项,不依赖内部别的功能,需要的时间根据难易度在两小时到一天左右,且一个人可以独立完成。

我们看到有些项目组的任务会定义为一个人完成的一个大的功能点,可能需要 2-3 天完成,这也是可以的。任务的重要边界是完成本身不依赖其他任务 ( 和定义好的接口通讯不属于此 )。

在开发过程中的任务大部分就是从产品需求而来,

下面这些都可以是一个独立的任务:

  • 一个 40 行代码左右的函数
  • 一个有三个方法的独立的类的定义和实现
  • 一个 3 屏幕高的网页视觉设计
  • 5 个表,每个表大约 20 个字段的数据库设计
  • 增加一个接口函数
  • 为了测试一个接口准备 50 个 test case
  • 某种 SAAS 服务的一种功能的接口对接

开发任务的详细设计具体怎么进行,这里就不展开了,因事而异。

任务的基本属性

在云效中新建一个任务会看到下面这些属性,有很多。

issue0

建议下面这些属性是必须要输入的,如下图中蓝色框出的:

issue1

  • 标题
  • 描述
  • 指派给
  • 优先级
  • 迭代
  • 归属项目
  • 版本
  • 标签
  • 预计工时
  • 实际工时

任务标题和描述

任务的标题非常重要,我们建议任务标题按照如下规则来进行:

  • 颗粒度一致
  • 字数不要太多
  • 句式尽量一致
  • 不要有歧义

好的任务标题如下:

  • 机具底层,回写发卡行脚本
  • 刷卡收款,完成交易轮询
  • 外部调用,提供获取商户的收款方式接口
  • SDK 初始化,完成统一初始化入口

写的不太好的任务标题如下:

  • 创建 jsp
  • 用户信息查询(商户)
  • 控台功能修复-交易查询
  • 单笔交易查询接口返回状态优化

推荐使用在以一个项目中: AAA,BBBBB。这样的句式。其中AAA 是某个大模块的名称,一个项目中的模块划分可以由项目经理确认,一般也不会超过5个,如果每个标题中的 AAA 都不太相关,说明颗粒度太细了。这样的描述还有个好处就是视觉上比较整齐。在有的项目中我也会建议 AAA 这里试用新增、修改、删除这样的描述,特别是一些底层的支持类的项目,变化也比较频繁的,可以用这类描述方式。

任务描述是对这个任务的详细描述,可以对这个任务更好的理解。很多程序员不太愿意写文档,经常看到一些程序员详细设计写的简单,项目评审流于形式,有些程序员急于想编码。这样的风险很大,使用尽量标准的项目开发流程可以约束这样的行为。任务的描述并不能替代详细设计,但是也是不可缺少的,因为对任务的标题的字数等有一定要求,不能太啰嗦,所以在描述这里可以尽量将当前任务的内容描述清楚,解决什么问题,可能会碰到的技术问题,包括一些业务和程序流程,甚至是伪代码。

云效系统的描述是支持 Markdown 格式的,所以在表现形式上完全不用担心,可以节约很多排版时间。

任务标签

任务标签也是重要的,对比 jira 这样强大的自定义工作流来说,基于公有云的云效的项目体系相对比较简单,状态有限(私有云版本的云效也可以做比较复杂的定义),至少我们可以通过标签来区分任务的属性。另外目前也是在尝试从产品需求到开发测试的全流程管理,所以用标签可以来区分不同的种类。

任务标签会显示在:

  • 迭代管理的任务项

issue9

  • 任务管理的任务项

issue2

  • 任务明细页

issue3

我们建议在开发项目的时候用下面这些标签,标签在一个项目或者最好在一个公司的所有项目中,保持一致,标签不要颗粒度太小:

  • 数据库
  • 控台
  • server
  • api
  • h5
  • app

任务的完成时间

任务的属性中有一个任务时间,有如下建议:

  • 一般情况下,不要小于两小时,或者大于三天,这个和前面说的任务的分拆原则要一致
  • 一天按照六小时有效开发时间计算,如果是加班的话,可以增加三小时左右;时间不要排的太满,因为一天之中总会有些开会、电子邮件回复、各种局部讨论等,时间排得太满,会影响项目进度控制

issue4

拆分任务的颗粒度一致性

分拆任务时候并不是颗粒度越小越好,在一个项目中,注意颗粒度的一致性非常重要。

在一个纯开发的项目里,可以把任务分拆成都是需要 20-80 行代码实现,按照一个函数一个类为最小颗粒度,也可以是按照源文件,比如所有的基于一个源文件的增加修改代码,还可以按照产品功能点来拆分,或许一个功能点也会涉及到好几个源文件,这种拆法在有些项目中也会有好处。

相对来说,建议按照下面方式来拆分:

  • 按照技术的详细设计的功能划分,基本基于单个文件的修改,由一个人完成
  • 更细颗粒度的,可以按照一个函数的拆分
    issue8

任务颗粒度和合并代码的复杂度

对于目前大部分项目基于版本代码分支的管理来说,任务的颗粒度到一个源文件,在代码合并时候比较容易,相对冲突会比较少。

如果任务影响到几个文件,并且这几个文件同时也被别人编辑的话,我们是推荐使用 git ,并进行每日合并,这样包括代码评审的过程一并进行,这部分在 git flow 流程中进行详细解释。

任务的生命周期

任务从建立开始,有一个生命周期,并且任务在这个生命周期里面,内容是可以修改的,有些属性是可以变化的。这也是我们强烈推荐使用系统来进行任务管理的原因之一,要达到同样的效果,可以减少大量的人工工作量。

任务的生命周期分为:

  • 待处理
  • 处理中
  • 已完成
  • 已取消

在看板中,可以通过拖放来调整任务所处的生命周期,并且云效工具支持对看板进行配置。

issue5

看板

看板管理是一个从工业管理中移植过来的管理名词:

来自于维基百科的定义:看板管理,常作“Kanban管理”(来自日语“看板”,カンバン,日语罗马拼写:Kanban),是丰田生产模式中的重要概念,指为了达到及时生产(JIT)方式控制现场生产流程的工具。及时生产方式中的拉式生产系统可以使信息的流程缩短,并配合定量、固定装货容器等方式,而使生产过程中的物料流动顺畅。

在看板标示系统中常将塑料或纸制成薄板,将产品名称及数量写于其上,故此得名。及时生产方式的看板在生产线上分为两类:领取看板生产看板,旨在传达的信息是:“何物,何时,生产多少数量,以何方式生产、搬运”。

敏捷中的看板管理大家都熟悉了,现在已经不需要小贴纸在白板上了。非常建议使用本文中的看板模式,虽然看板模式从显示信息数量来说并不太有效率,但是对于产品经理、项目经理等来说,对于进度的控制的一目了然是最重要的。

图表

图表可以给团队和管理层提供一个可视化工具,有助于定义过程中的障碍,并且让每个人持续关注交付有价值的产品。

图表的作用:

  • 信息传递可视化
  • 真实反映(或者至少部分反映)团队正在进行的过程
  • 描述工作过程的情况
  • 用于控制工作过程
  • 任何人均可查看

issue10

issue11

issue12

任务的评论功能

我们觉得这是现代项目管理软件非常有特色一个地方,不管是 jira、github 以及云效,都可以很容易的进行对任务的评论。有时候我们在详细设计的时候,并不能真正的考虑周全,或者因为时间的关系,有些内容先简单的写一下。项目开发的组长、其他开发人员、在准备测试的测试同事以及产品经理,都可以在一个任务下面进行评论,提出自己的问题。开发人员可以在这个小小的讨论区进行针对性的讨论。我们称这样的过程可以看到一些变化的过程,对于项目后期评审以及其他新加入项目组的同事学习有很大的好处,你看到的不光是结果,还有所有相关人讨论的过程。

云效的任务评论功能可以像微信等,用@符号在评论中指定需要额外看到的人,除了任务的创建者以外。并且通过邮件来发送到和这个任务相关的同事。

issue6

任务拆分的注意事项

不要把任务拆分为:立项、详细设计、开发、测试等这样,这是项目的流程环节,而不是项目中的任务。

需求中的任务可以是任务的功能,有点像我们平时说的 feature list 中的项目。
开发中的任务就是技术的详细设计的拆分,有些比如时序图等文档可以以附件形式存放。

每个任务有一个 ID,就像是 Issue number,这是一个唯一的 ID。

issue7

需求池管理

在敏捷开发中,我们称之为 Backlog,我们观察到,大部分项目其实开发总是来不及在指定的版本完成的,而需求每天会因为各种情况层出不穷,所以需要一个需求池来存放这些不能马上开发的需求。

需求池中的需求的走向:

  • 因为紧急程度,成为目前版本中需要开发的需求;这样的话,需要重新评估需求影响、开发、测试等细节,这也是会造成项目延误的原因;
  • 需求池中的需求最好的走向是成为之后上线版本的需求,这样既不影响这个版本的开发,也可以让各方面同事对整个项目有更好的理解,比如为某些优化、某些分级在设计数据表、设计类结构等的时候留好足够的余地;
  • 需求取消;
  • 需求合并,不管是产品需求、功能优化等都可以在需求池中先列出来,然后产品经理、项目经理等经常检查审视的话,就可以进行一些合并,抽象出一些共通的内容等,所以这也是我们一直觉得要有一个需求池的好处;

既然是需求池,所以其中的任务可以是比较简单的,前面说过,在任务的标题这里需要说明清楚,但是具体的详细设计、关联影响等可以暂且省略。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
目录
相关文章
|
3月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之怎么批量导出任务
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
敏捷开发 缓存 安全
阿里云云效产品使用问题之如何对任务进行分类
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
前端开发 测试技术 API
阿里云云效产品使用问题之在流水线的构建任务中,如何安装并运行Jest
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用问题之在流水线的构建任务中,如何安装并运行Jest
|
4月前
|
敏捷开发 Java Shell
阿里云云效产品使用合集之如何设置流水线可以控制任务的串行执行
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 Java 持续交付
阿里云云效产品使用合集之任务里的标签字段该如何来实现
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
敏捷开发 数据挖掘 BI
阿里云云效产品使用合集之需要通过CodeUp的webhook触发后,云效流水线能够顺序执行任务,该如何设置
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
4月前
|
JavaScript IDE 持续交付
阿里云云效产品使用合集之如何配置 Node.js构建任务让其在Windows环境中进行
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 弹性计算 持续交付
阿里云云效产品使用合集之同一个主机部署是否支持下载多个制品
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 监控 Java
阿里云云效产品使用合集之Codeup WebIDE环境下,如何使用通义灵码
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

热门文章

最新文章