吉拉反对发展中的混乱:如何不丢失任务



一篇文章中,我告诉过您我们为Jira做了哪些附加工作,以使工作流程变得尽可能方便,并且票证内容详尽。 在今天的文章中,我们将解决另一个问题。

鉴于:

  • 您开发并支持在多个客户端上运行的复杂软件产品。
  • 您有几个工程团队(后端,IT Ops,iOS,Android,Web等),它们相互独立地工作,并有各自的待办事项;
  • 您有多个产品线,也就是说,一个产品经理按照他自己的方向领导多个项目,另一个产品经理以他自己的方式领导;
  • 您的工程团队是有职能的,也就是说,他们没有分配到单独的产品区域,而是立即解决所有单元的问题,为技术体系的某个部分服务;
  • 当然可以使用Jira!

问题:

  • 过程参与者不了解功能包含哪些工程部分,以及目前尚需在项目上完成哪些工作;
  • 工程团队异步地在同一个项目上工作:一个团队可以在一个月前完成任务,而第二个团队甚至无法开始自己的任务,因为他们忘记了在更重要的任务流中的工作。

开发过程的透明度存在明显的问题。 当有许多项目和指示时,急需某种能消除混乱并能清晰显示图像的神奇乐器。 不幸的是,我们的经验表明,Jira的标准功能无法完全解决这一问题。

熟悉吗? 让我们考虑一下我们可以做些什么。

项目结构


我将使用Badoo中的开发示例来分析问题。 那么项目如何进行? 该项目经历什么阶段? 典型的新功能包括哪些要求多个团队参与的组成部分?

构思与设计


产品经理(PM)提出了产品中可以改进的内容后,在Jira中创建了Project类型的PROD凭单。 该票证的描述包含指向Confluence (与Jira集成的Atlassian Wiki的类似物)中的页面的单个链接。 我们称此页面为PRD(产品需求文档)。 这是发展的关键要素。 实际上,这是对项目框架中尚待完成的工作的详细说明。

典型的PRD结构
  1. 目标。
    它简要描述了我们希望通过实施项目实现的目标(增加利润,扩大覆盖范围,我们计划影响的其他指标等)。
  2. 内容描述
    这是珠三角的最大部分。 此处描述了该功能的整个业务逻辑,并考虑了所有可能的情况。 设计元素也放置在此处(用户在与功能交互的每个阶段如何查看功能)。 它还描述了可以显示给用户的所有令牌。
  3. A / B测试要求。
    在A / B测试之后,我们几乎启动了所有新功能,以便能够检查新功能对一小部分用户的影响(毕竟,它可能是负面的)。 本节为用户介绍了所有可能的测试组及其逻辑上的差异。
  4. 统计要求。
    在此记录应监视哪些用户操作和业务指标(按钮按下,促销屏幕印象等)。


创建此文档时,PM与设计人员紧密合作。 为此,将创建另一个具有设计类型的PROD凭单。 设计人员在其中放置布局,图标集等。然后为了清晰起见,将这些元素插入到PRD中,工程团队也在开发中使用它们。

编写文档后,PM将其提交公众讨论。 通常,其他PM以及工程团队的负责人都参与了对话。 讨论直接在关于珠三角的评论中。 这很方便,因为保留了通信历史记录,并且所有感兴趣的参与者都会在出现新评论时收到通知。 根据讨论,对原始PRD进行了约定的更改。

弄清所有细微差别后,原始的PROD凭单将转换为待处理开发的积压。 之后,产品团队每周一次根据公司的目标,估计的工作量和实施的复杂性,根据优先级对该积压工作进行排序。 被认为是最有前途的项目将进入下一阶段-分解。 为此,为系统架构师团队创建了一个特殊的MAPI票证(移动API)。

在此需要注意的重要一点是,为了更快地创建与项目相关的票证,并消除人为因素(他们忘记了某些内容,错误地链接或标记了这些内容),我们使此过程自动化。 因此,例如,标头中项目的根票据具有两个附加按钮。



第一个为设计人员创建票证,第二个为系统架构师创建票证。 在这种情况下,新的票证将自动填充必要的属性:正确的标签,PRD的链接,描述模板,最重要的是-彼此链接。

该流程优化是基于我在上一篇文章中提到的Jira ScriptRunner插件实现的。

分解


收到附有PRD的新MAPI票证后,系统架构师决定:

  • 逻辑的哪一部分应该在服务器端实现,哪一部分在客户端实现;
  • 客户端应该发送什么命令以及应该从服务器收到什么响应;
  • 哪些令牌应“连接”到客户端,哪些令牌应来自服务器端。

在此阶段,PRD经常会发生变化。 与讨论PRD时相比,架构师更深入地研究实现细节。 因此,可能会发现,为了实现项目的业务目标,可以通过放弃部分初始要求来显着简化开发。 我们非常感谢这项倡议。

您可以了解有关我们的建筑师团队如何工作的更多信息,并从报告中查看我们的API描述。

系统架构师的工作结果是:

  1. 该项目的完整技术文档的外观(有关客户端-服务器交互协议的描述,并参考PRD中描述的业务逻辑案例)。

    我们当前未使用的功能之一的部分文档的屏幕截图


  2. 存储库中已修改的协议(Google协议缓冲区格式的文件)。 如果需要新功能或对旧功能进行更改以实现功能,则所有团队的开发人员都可以使用它们。
  3. 开发和本地化团队的门票。 为此,我们有一个特殊的界面,使您可以立即为所有相关团队创建必要的票证。 它通过MAPI票证中的链接打开。



    通过单击它,我们创建的以下界面将打开:



    通过单击表单底部的按钮(在屏幕快照中看不到该按钮),将显示必需的票证,这些票证将自动链接到原始MAPI票证。 值得注意的是,所有开发团队都在自己的空间(项目)中工作Jira:后端团队在SRV中,Android团队在AND中,Web团队在Web上,等等。

    该接口基于Jira REST API。

因此,该项目的结构可以如下图所示:



开发与发布


通常,所有团队都可以并行处理一个项目,只需要在集成的最后阶段就可以进行工作,也就是说,客户团队不必等待完成的服务器来发挥作用。 由于详细描述了交互协议,因此在开发过程中,您可以安全地模拟预期的服务器响应并调试客户端逻辑。 此外,服务器在开发过程中不需要客户端-服务器程序员只需实现协议并用测试覆盖协议即可,以模拟客户端请求。

通常,在以下情况下启动功能:

  1. 服务器是第一个在生产中布置其功能部分(由功能标志覆盖)的服务器。 因此,该逻辑保持空闲状态,直到客户端之一开始发送此功能标记。
  2. 客户团队在正式发布之前会测试他们在“战斗”服务器上已经具备的部分功能。
  3. 一旦准备好释放不同的客户端,就开始发送所需的功能标记并接收新的服务器响应。

项目同步工作的可能性是巨大的,这可以显着提高开发效率。 但是这里存在风险:有些团队可以“写到桌子上”,即完成他们自己的工作,而其他项目参与者则永远都不需要。 可能有几个原因:

  • 开发团队的不同优先事项; 在进行对公司来说非常重要的项目时,通常不会出现问题(它们都是众所周知的,并且很难忘记),但是不太重要的问题可以放在最后一个地方的独立团队的本地待办事项中;
  • 项目管理错误:经理可能只是忘记正确地确定开发团队的任务优先级,也就是说,其参与者甚至都不知道应该将票证尽快纳入开发范围。

如何解决这些问题? 如何确保项目的各个部分不会丢失,并且团队对优先项目给予应有的关注?

Jira标准功能


标准的Jira功能可以为项目经理提供什么以解决这些问题? 没那么多:

  • 筛选器
  • 看板板。

筛选器


该过滤器使您可以查看为任意JQL查询收到的票证的线性列表。 该工具非常适合为一个团队的待办事项提供服务,但是我不知道如何将其用于分布在不同团队中的高质量项目管理。 经理可以做的最大事情是显示根PROD凭单的优先列表,然后您需要进入每一张凭单,查看链接的凭单。 但这非常不方便且漫长,特别是考虑到链接的层次结构可以是多层的。 此外,开发团队可以创建多个其他票证以解决初始任务,并且还必须监视其状态。

看板


对于那些不知道如何在Jira中运行的人,我将进行解释。 通常,这是基于特定过滤器的任务列表,分为三列:“待办事项”,“开发中的任务”,“完成的任务”。 该界面允许您通过简单地用鼠标拖动列表中的票证来增加任务的优先级。 同时, Rank属性也会更改,您可以通过该属性对过滤器中的票证进行排序。

在这里,我们已经有更多的空间可用于手头任务中的工具。 PM可以创建一个筛选器,以按期望的方向选择所有部门的所有任务。 例如,可以通过自动放置带有相应标签的票证来完成此操作。 我提醒您,我们项目的所有关键项目票证都是使用适当的工具创建的。 因此,自动将根PROD票证的必要标签复制到所有派生票证是一项琐碎的技术任务。

我们使用看板来形成和控制工程团队的积压。 使用Swimlanes工具,可以将电路板分为与工程团队相对应的项目。 因此,使用此工具,PM可以在不同团队的情况下监视其项目的进度,并确定团队门票的优先级。


产品看板板计划,PM项目票证按团队分组

问题在于该工具不能提供一种简单的方法来按源PROD票证(即按功能)对票证进行分组:我想在所有工程团队中分别监视每个项目的进度。

电子表格


最明显的解决方案是使用电子表格。 毕竟,您可以随心所欲地做所有事情:方便,美观,内容丰富。 像这样:



您可以在一处看到每个项目的总体工作范围。 您可以做各种笔记,删除已完成的票证,等等。这里的一切都很好,除了一个大胆的内容外:保持此类表格的相关性非常困难。 工单状态不断变化,正在创建新的工单。 手动进行所有更改? 您可以整日度过。 但是我们追求效率,对吗?

“让我们越过!”


我们为什么不通过添加与Jira的自动同步来使用电子表格的便利性和清晰度? 我们有一切可能! 因此,我们决定基于Jira REST API创建一个附加工具,该工具会自动维护信息的当前状态,并为我们提供方便的界面。

工具要求如下:

  • 具有根据任意JQL查询从票证创建项目及其派生列表的能力(这是必要的,以便任何PM都可以创建其自己的空间(单位),在该空间(单位)中,它将仅看到其项目并对其进行管理);
  • Jira中的新项目应自动出现在界面中;
  • 项目中的新票证应自动出现在界面中(也就是说,如果开发团队决定需要更多票证来实现该功能,则PM将在界面中立即看到此票证);
  • 根据票证的状态,表格中单元格的颜色应更改(以便参与者快速了解项目状态);
  • 排序项目的能力(适当地确定优先级);
  • 在完成两个星期后自动隐藏已完成的项目。

PM开始使用该工具,创建其自己的空间(单位),指示其名称和JQL查询:



接下来,向Jira发出请求,以获取指定JQL查询的项目列表。 使用Jira中的链接的还有工程团队的所有衍生票证。 结果是这样的表:



以上是在单元之间切换的链接。

表格行是设备的根PROD凭单。 在单元格中,我们看到了特定工程部门的项目任务。 填充会自动进行,但要遵循将项目票证彼此链接的规则。 已完成的阶段以绿色标记,未开始以红色标记,当前标记为黄色。

链接指向前往吉拉的门票。 您还可以通过将鼠标悬停在链接上来获取有关票证的简要信息:



每隔几分钟就会发出一次请求,向Jira API发出请求,以获取所有单元的最新项目列表,以同步票证的派生列表及其当前状态。

只需将所需的项目拖放到列表中的所需位置即可完成排序:



重要的是要注意,使用Badoo中的此工具,不仅产品经理可以工作,而且工程团队的负责人也可以工作。 毕竟,对于每个人来说,重要的是要了解产品领域中正在发生的事情,哪些团队在为公司实施重要项目方面比其他团队更先进,哪些落后。

结论


Jira“开箱即用”提供了强大的功能来管理项目结构和票证之间的关系。 还有一些插件可以显着扩展JQL的功能(例如,它们允许您使用票证及其类型之间的链接来过滤票证)。 在我们的案例中,我们仅缺乏可视化所需功能的能力。

幸运的是,Jira允许根据其API创建适合公司业务流程的其他便捷工具。 因此,例如,我们能够解决该问题,这是由于在十几个产品领域中进行项目的透明性而产生的,而无需付出任何努力并使用此任务跟踪器的其他功能。 如果您想在自己的位置制作此类附加组件或为您的任务找到其他解决方案,那么在注释中阅读将很有意思。

谢谢大家的关注!

Source: https://habr.com/ru/post/zh-CN433540/


All Articles