草庐IT

这个简单的小功能,半年为我们产研团队省下213个小时

云效DevOps 2023-03-28 原文

大多数人对产研同学的认知都是每天做着高大上的活儿。

我们以为的产研团队是:

  • 研发负责人:今年最新的技术架构是什么、我的团队适合吗?
  • 开发同学:010001,一顿代码猛如虎
  • 测试同学:OK,测试一次性全部通过!
  • 产品同学:新财年我们产品的发展方向是xxx,里程碑如下所示:12345

实际的产研团队,除了那些我们以为的本职工作,还充斥着各种任务进度的跟进、同步和协调:

  • 研发负责人:今天团队的迭代开发进展怎样了?项目统计的数据怎么感觉不准啊!?
  • 开发同学:代码都写完了,又忘了更新状态,怎么总是忘记啊!?
  • 测试同学:这个需求冒烟又没过,又得打回去一遍、还要再通知开发?
  • 产品经理:业务方又来找我问需求进展了,需求怎么还是待开发,又要人肉去跟催了?

这些事情琐碎,却又是项目推进必不可少的环节。有没有什么办法可以让机器自动帮我们解决这些问题呢?

今天,小编就带你了解一个减负神器,借助云效Projex的自动化规则,实现任务状态的自动流转、需求的自动指派、自动催办

小明:自动化规则?听着就很复杂的样子!

云小妹:别急,自动化规则用起来,就像是对着天猫精灵发号施令一样简单。你只需要用 “当XXX,就XXX” 造句就可以啦。

例如你在云效Projex里设定好:

当需求关联代码分支,需求状态就变更为开发中
当需求在计划完成日期前3天,就邮件/钉钉通知需求负责人尽快完成
当子任务完成时,父任务就自动完成
当女朋友和妈妈同时掉进水里,我救。。。(快醒醒,你还没有女朋友)

只要当需求/缺陷/任务满足你定义的“当XXX”的条件,系统将自动帮你完成“就XXX”的指示。

这样说可能还是不够具体,下面,我们就以云效Projex产研团队为例,说明云效Projex团队的各个角色:研发负责人、产品经理、开发、测试每个角色是如何借助自动化规则,自动执行任务6400+次的,有效减轻工作量的。希望给你一些场景上的启发。

1、研发负责人:每日迭代进展群内定时通知

团队整体和单个成员的迭代进展,及时获知

2、开发同学:任务状态自流转, 再也不用担心忘记更新状态了

开发同学一定有共鸣的事情就是:怎么总是忘记更新任务状态啊!

  • 代码已经在开发中了,却忘了从待开发改成开发中
  • 代码已经发布上线了,却忘了更改状态为已发布

然而这件事情,苦恼的却不仅仅是开发同学。对研发负责人来说,一旦开发同学任务状态更新不及时,迭代统计的数据也会很不准确。这对希望通过数据驱动研发效能改进的负责人来说,也是一件相当头大的事情:想要推动团队及时更新任务状态真的太难了!

一边是容易忘记,一边是推动团队落地太痛苦。如何解决这个问题呢?

简单几步就可以!我们只需在云效Projex里设置好:

(1)当任务下面关联代码提交时,系统自动变更任务状态为开发中。
(2)当任务下面关联发布变更时,系统自动变更任务状态为已发布。

开发同学更新任务状态的工作量就会减轻不少,团队的度量数据也会更真实。

3、产品同学:自动通知业务同学需求开发进展

产品作为业务和技术之间的桥梁,需要将需求的开发进展及时同步给业务方。

然而产品同学面临的问题是,子任务已经在开发中了,但是父任务却总是忘记更新为开发中。业务同学看到父任务的进展迟迟显示在待开发,就会来找产品追进度。这种情况怎么办?

同样,我们也只需要设置一个简单的自动化规则,就能搞定啦!

自动化规则设置:当子任务在开发中时,父任务自动变更为开发中

4、测试同学:及时获知需求的提测情况,及时跟进需求的测试工作

在很多公司,测试同学会规定:需求提测前需要开发同学写一封邮件给到测试团队。用好自动化规则,这个过程同样可以省去。

我们只需要设定好:当某一类需求提测时,发送邮件/到指定的钉钉群 即可。

这样开发同学省去了多余的邮件操作,测试同学也可以在群内及时获知测试进展。有些测试工作可能并不完全由某一个测试同学完成,测试负责人也可以根据群内的通知,在团队内灵活地分配。

当然,需求的测试,并不是测试同学一个人的事情,产品同学也非常关心需求的实现是否符合最初产品的设置逻辑。所以,此时,测试同学只需再增加一条规则:当某一类需求提测时,自动通知产品同学做功能验收,这样也可以让产品同学及时验收需求,避免上线前发现问题的兵荒马乱。

总结

上面我们针对研发团队的每个角色列举了一些自动化规则的使用场景。实际使用中,每个角色可以根据自己的需求拓展出不同的场景,例如:

  • 当新建需求/缺陷时,发送通知
  • 当任务状态为待开发,且距离发布窗口仅剩2天时,发送通知
  • 当任务状态为测试打回时,发送通知
  • 当录入的缺陷包含某个模块时,缺陷自动打标分类
  • 当缺陷的创建人为测试同学自己时,通知测试同学自己验证
  • 当缺陷重开时,发送通知

    ...

这里限于篇幅,我们就不列举更多。

我们只需知道,日常项目协作中的任务状态自动流转、需求自动指派、自动催办、平台集成等事情,我们完全可以通过云效Projex内简单的自动化规则设定,轻松完成,不遗漏!

为了让大家使用自动化规则更简单,云效Projex的产品经理在产品内预置了大量的自动化规则模板(如下图),帮你快速上手。

如下图所示,云效Projex的产研团队已经提前吃螃蟹半年多。这半年来,云效Projex共设置15条自动化规则,累计执行自动化任务6419次。假设原本一个任务需要耗费人力跟进2分钟,半年下来,相当于给云效团队节省了213个小时。这213小时,用来做其他更重要的事情,不香吗?

如果你的团队也希望工作变得省力一些,不妨点击下方链接,前往云效项目协作Projex免费体验吧!

https://www.aliyun.com/product/yunxiao/project?channel=yy_yccb_yc


特别推荐

6月29日,我们特邀到阿里云、南京大学、Thoughtworks、InfoQ产学研界6位领军人物,进行一场重磅直播,共同探讨BizDevOps:数字化转型浪潮下的技术变局,并寻找破局之道。

观看直播你将了解到:

  • 数字化转型对于产品研发的挑战与机会?
  • 为什么我们需要从DevOps走向BizDevOps?
  • BizDevOps 体系包含哪些方法与实践?
  • 如何真正应用并落地BizDevOps,提升企业研发效能?

推荐观看人群:企业CIO、CTO、CDO,以及关注研发效能和产研数字化建设的从业者。

点击 立即预约 观看直播,加入BizDevOps钉钉交流群:44686237

有关这个简单的小功能,半年为我们产研团队省下213个小时的更多相关文章

  1. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  2. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  3. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  4. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  5. ruby - 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么? - 2

    我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=

  6. postman——集合——执行集合——测试脚本——pm对象简单示例02 - 2

    //1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json

  7. Qt Designer的简单使用 - 2

    在前面两节的例子中,主界面窗口的尺寸和标签控件显示的矩形区域等,都是用C++代码编写的。窗口和控件的尺寸都是预估的,控件如果多起来,那就不好估计每个控件合适的位置和大小了。用C++代码编写图形界面的问题就是不直观,因此Qt项目开发了专门的可视化图形界面编辑器——QtDesigner(Qt设计师)。通过QtDesigner就可以很方便地创建图形界面文件*.ui,然后将ui文件应用到源代码里面,做到“所见即所得”,大大方便了图形界面的设计。本节就演示一下QtDesigner的简单使用,学习拖拽控件和设置控件属性,并将ui文件应用到Qt程序代码里。使用QtDesigner设计界面在开始菜单中找到「Q

  8. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  9. ruby - 使用 Ruby,计算 n x m 数组的每一列中有多少个 true 的简单方法是什么? - 2

    给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in

  10. ruby - 这个 ruby​​ 注入(inject)魔术是如何工作的? - 2

    我今天看到了一个ruby​​代码片段。[1,2,3,4,5,6,7].inject(:+)=>28[1,2,3,4,5,6,7].inject(:*)=>5040这里的注入(inject)和之前看到的完全不一样,比如[1,2,3,4,5,6,7].inject{|sum,x|sum+x}请解释一下它是如何工作的? 最佳答案 没有魔法,符号(方法)只是可能的参数之一。这是来自文档:#enum.inject(initial,sym)=>obj#enum.inject(sym)=>obj#enum.inject(initial){|mem

随机推荐