研发自动化,你准备好了么

作为研发团队的主管,你最关注什么?开发流程,产品质量,交付速度……在你实施一系列规则、流程、报告的同时,可能忽略了一个很重要的部分——工作效率。

而工作效率又可以分为主动式和被动式的。所谓主动式,就是由团队成员自身的工作热情和责任心决定的。我们可以通过培训、激励、沟通等手段去激发。而被动式的工作效率和员工本人没有关系,单纯的就是重复性、事务性的工作太多造成的。

作为一个研发团队,我们应当关注成员为最终的产品交付付出了多少时间。应当尽量增大这部分时间的比例,减少其它工作的占比。在一项调查中显示,67%的管理者都认同他们的成员花费了很多的精力在重复性、事务性的工作中。如何能够通过自动化的方式节省这些时间,是目前团队管理者迫切希望解决的问题。

自动化工具能为一个研发团队带来什么好处呢。

提高效率

没人愿意去做那些重复性的、事务性的、毫无技术含量但是繁琐的工作。你的研发团队不应该浪费宝贵的时间(也就是成本)在这些事情上,相反的,应该让大家专注于那些业务工作,那些能够为你的客户带来实际价值的工作上。

如果能够让重复性工作自动执行,你的团队就能有更多的时间和经历去接手更大的项目,更多的客户,产出质量更高,可靠性更高,扩展性更高的产品。

减少人为错误

是人都会犯错的,无论我们有多少的规则、流程、评审和检查。而且越是人工执行的、事务性的、缺乏技术含量的工作,工作量越大,越容易出错。譬如:

  • 没有填写完成的,或者有错误的数据
  • 文档被保存到错误的地方
  • 敏感信息被错误的发送给不相干的人员

而自动化工作流就能很好的解决这些问题。它能够让数据时刻保持同步,确保数据在录入的时候所有必须的字段都有值(默认值)。在数据被传输的时候提供加密功能,以及确保只有工作流中指定的人员能够获取这些敏感信息。

负责任的团队

如何提高成员的责任心,让团队成为一个负责任的、可信赖的团队,这是团队管理里面的一个大挑战。责任心体现在团队成员能够主动承担任务,并且确保在截止日之前完成。自动化工作流的引入,虽然不能从根本上解决这个问题,但是可以带给团队显而易见的变化。比如:

  • 通知团队成员下一步的工作是什么
  • 提醒团队成员任务的截止日期

高效的沟通

虽然我们已经有了很过沟通和协作工具,无论是免费的还是付费的,但是还是有大量的公司在使用电子邮件、微信群、共享文件等。这无疑是低效的,而且每个人都被各种信息淹没。

你可以在成员完成了某个任务后,找到相关的任务,提醒它们的负责人;也可以在当前迭代进行中,及时提醒负责人有新的任务被加入了。这些事情以往需要团队成员手动的操作,或者群发邮件,而自动化工具能够自动进行通知,既保证了时效性,也确保了信息不会漏掉。

更好的客户支持

客户是上帝。无论你服务的是最终用户,还是某一个企业某一个部门,都应该持续的改进客户的支持体验。

自动化产品在这方面能够帮到什么呢?

最典型的例子莫过于客户对产品缺陷的反馈。如果我们能够尽快的告知缺陷的处理状态,处理进度和新版本上线通知,无疑能够提高客户的满意度。相反的,如果客户很久都得不到反馈,即使我们的缺陷已经修复并上线,可是还是会有不满。

如果我们能够让研发部门的缺陷处理进度和上线进度自动同步到客户支持部门,进而第一时间反馈给客户,无疑能够提升客户的满意度。自动化带给团队的不仅仅是一个工具的引入,也是工作习惯的改变。

接下来的问题可能就是,我如何开始我的自动化之旅?以下几点是引入自动化时,需要特别注意的。

找到重复性的工作

自动化工具最主要的作用就是将重复性工作从手动执行变为自动执行。首先,我们要做的就是找到那些重复性的工作。

哪些任务是重复性的呢?可能一时之间很难明确。我们不妨从下面的列表开始:

  • 每天、每周、每个月都要执行的任务。
  • 耗费大量时间的任务。
  • 无需过多思考和判断的工作。
  • 有固定的流程的工作。
  • 需要操作很多数据,或者数据需要经过很多处理工作。
  • 对于正确性要求很高,但是人工处理繁琐易错的工作。

在寻找这样重复性工作时,上面的几个特征不是都要满足。但是如果某个工作已经符合上面的两个特征,那么就很有可能需要自动化地去执行。

比如我们的研发团队有如下的要求:当一个工作项完成后,要通知后续的(被阻塞的)工作项负责人,可以开始工作了。

这就是一个典型的重复性工作。因为

  • 耗时的:工程师需要查找后续的任务,找到对应的负责人,然后口头或者邮件等方式逐个通知。
  • 无需思考:完全是事务性,不需要考虑是否需要通知以及通知给谁。
  • 固定流程:每完成一个任务都要这么做。

你可以以类似的方式检查一下目前研发团队的工作内容,找到类似的任务。

明确商业价值

找到重复性工作仅仅是第一步。接下来,面对我们找到这些工作,需要逐个明确自动化后能够为我们带来什么收益,而且必须是对我们最终的用户带来的收益,也就是所谓的商业价值。譬如:

  • 提高团队的工作效率和产品开发效率。
  • 缩短客户响应时间,提升客户满意度。
  • 提高产品质量。

明确商业价值让我们在引入自动化工具的时候不会舍本逐末,不是为了自动化而自动化。

团队培训

对团队的任何改变都需要团队成员的支持,即使是你认为对大家有百利而无一害。任何人在面对改变的时候都会有本能的抵触情绪,因为现有的工作流程和工作方式已经被验证过并且是熟悉的。

因此,培训是必不可少的。这里说的培训,并不仅是培训会议或者培训手册。自动化产品的引入需要循序渐进。可以在迭代回顾会议,每日例会或者团队沟通会中找到大家都认为费时费力,最迫切需要解决的那些重复性工作开始。

另外,在选择自动化工具时,尽量选择那些易于上手、操作直观的,并且能够较好地和现有开发工具整合的产品。尽量降低大家的学习成本。

设计你的自动化工作流

在明确了重复性工作、商业价值,并且取得了团队成员支持之后,便可以开始设计自动化工作流了。

但是要注意,虽然我们可能找到了很多可改进的工作,也不要一次性的全部用自动化替代。一次性引入过多的自动化流程会让团队成员无法适应。我们要做的是找到最迫切的一个或两个场景,用自动化工具替代他们。让团队立即感受到变化,效率的提升,工作的简化,逐步适应数据自动流转的效果。然后再实现接下来的一两个场景。

同时,还要密切关注团队的感受和反馈,不断调整自动化的程度——不是自动化程度越高越好。我们需要在不断尝试的过程中找到最适合团队的一个平衡点:自动和手动相得益彰。

衡量实施效果

无论是敏捷还是DevOps都讲求所谓的闭环,也就是说不断总结和改进。自动化工具的引入也是如此。我们要周期性的复盘自动化工具实施后的一些指标,用数据来印证我们的假设是否正确,目标是否达成。典型的衡量指标可能包括:

  • 效率提升:通过工时统计等方式计算自动化工具节省的时间。
  • 前置时间缩短:通过计算需求的前置时间(从需求确定到投入市场的总时间)侧面印证开发效能的提升。
  • 客户满意度提升:缺陷的修复时间是否缩短,客户沟通的频率与及时率是否提高。

通过上述的几个步骤,相信每一个团队都能平滑顺利的引入自动化工具,提高开发效率,减少沟通成本,实现更高的业务价值,让团队成员专注于实际的业务需求的开发,将重复性工作交给工具去完成。

上面我们也提到了,在引入自动化工具时,尽量选择那些易于上手、操作直观的,并且能够较好地和现有开发工具整合的产品。

在接下来的文章中,我们会为您展示PingCode Flow是如何快速实现自动化规则并应用在PingCode产品矩阵中,以及我们PingCode自己的研发团队和部分内测客户都使用了哪些规则来提升开发效率的。敬请关注。

点击立即注册体验PingCode