极狐GitLab实践影响地图的最佳方式

简介: 影响地图 (Impact Mapping )是一种战略规划方面的技术。它通过清晰的假设、可视化的形式,建立产品功能与商业目标之间的关系,并最终做出更合理的里程碑规划。从而使得开发人员在构建产品和交付过程中避免迷失方向。本文将结合极狐GitLab来实践影响地图的最佳方式

为什么要进行产品规划

在软件开发过程,是否经常遇到以下几种情况:

  • 你开发的软件的产品,有多少功能是用户真正需要的
  • 你参与的软件产品中,有没有做到一半就废弃的功能


软件行业是一个成功率较低的行业。据 Standish Group 发布的 CHAOS Report 显示:截至 1994 年,在研究了 8000 多个软件开发项目后,只有 16% 的软件项目是成功,其他 84% 的项目不是失败了,就是存在严重的问题。


但根据 2015 年的报告,从 2011 年到2015年,软件项目的成功率并未再有大的提升,基本是在 30% 左右,可以参考下图:

image.png


为什么有这么多的软件项目失败,其中最主要的两个原因:

  1. 不了解用户真实需求”。在产品在开发阶段,不去调查用户真实需求,而是想当然的自我设定用户需求, 最终导致所开发的软件和用户想要的不一致。
  2. 对产品缺乏整体的认识和理解。产品的规划没有重点,眉毛胡子一把抓,什么想都做,但最终什么都没做好,错失了产品投放市场的最佳机会。



什么是影响地图

影响地图是一种战略规划方面的技术。它通过清晰的假设、可视化的形式,建立产品功能与商业目标之间的关系,并最终做出更合理的规划。从而使得开发人员在构建产品和交付过程中避免迷失方向。


影响地图通过为什么(why)、谁(who)、怎样(how)、什么(what)这四个要素构成。

image.png

最佳实践

下面我将结合极狐GitLab Issue的相关功能,来演示影响地图的操作方法。


例子:我们以电商行业常见的场景举例,业务人员反馈 “商品详情打开速度慢”

STEP1:Why?先确认任务目标

根据这个例子,我们明确下目标就是 “提高商品详情页的加载速度”

image.png

STEP2:Who?目标跟谁有关

根据经验,页面加载缓慢的因素有很多种。例如,后台的接口慢、前端的代码加载策略有问题、系统的部署架构需要优化、服务器的配置需要升级、 采用 CDN 进行静态资源分发等。因此要实现这个目标,关联方就会涉及以上提到可能因素相关的所有人员:后端开发人员、前端开发人员、架构师等。


image.png

STEP3:How?每种角色是如何影响这个目标的?

为了达成目标,我们根据每种角色的职责和工作范围,思考他们用什么方式影响这个目标。比如:后台开发人员提高后端接口提高响应时间,前端开发人员进行前端代码优化,架构师优化系统架构,通过负载均衡分散访问压力等image.png


STEP4:What?具体做什么?

罗列具体的操作内容。也就是说,我要做什么事情才能产生上面这个影响。后台开发人员想要提高后端接口响应速度,可以通过添加分布式缓存、数据库添加索引、数据库读写分离等方式。

image.png

STEP5:选择最佳方案

通过上面 4 个步骤,我们形成了一份可供选择的任务清单。接下来我们应该做的并不是完成所有的任务,而是选择其中成本低、效果好的完成。这里需要我们预估每个交付物的效果和成本。如下图所示,我们可以看出效果较好,成本低的交付物有:添加分布式缓存、数据库添加索引、添加浏览器缓存和采用懒加载的方式等。选择这些路径完成,将为我们减轻不少负担。


image.png

STEP6:里程碑规划

上一个步骤中选择的最短路径,可以作为第一个里程碑中需要交付的内容。如下图所示,标记为 的任务是需要加入里程碑规划里的任务。待该里程碑完成后,我们要根据度量指标衡量目标达成的效果,再从剩余的选项中继续选择成本低、效果好的任务添加到下一个里程碑规划中,直到目标达成。

image.png


到此,我们利用影响地图对产品经理提出的需求进行了分析和里程碑规划。从而确定了需求目标、具体工作内容和里程碑规划。



我将基于极狐GitLab的相关特性来实践影响地图


1.    Issue的创建及关联

创建 Issue 时,可以指派多人,这个就对应了影响地图目标(why)人物(who)

image.png

关联的Issue,由不同的角色创建,对应了影响地图做什么(what)

image.png


通过设置 Issue 的标记和权重,可以清晰的展示每个 Issue 作用和权重分数

image.png

标签高亮展示

image.png

层次结构清晰

image.png

tips:如果这里把 Issue 标签也显示,然后可以按照权重或者标签筛选就更完美了


通过 Issue 的关联,我们完成初步的任务分析,接下来就是创建迭代


2.    迭代规划

根据上面拆分的任务及分析结果,创建一个迭代,根据任务的优先级和难易程度放入迭代中

image.png

将 Issue 关联迭代

image.png

打开迭代视图

image.png

这样,可以时刻掌握任务的进展情况,做到心中有数。


3.    里程碑时刻

这里要注意,很多人把迭代和里程碑混搅在一起,其实这两者是有区别,迭代侧重是阶段时间内完成的任务,而里程碑侧重的是某一个事件或目标的完成。


以本文的案例来说,我们设置第一个里程碑规划 “商品详情页打开时间小于1秒” ,它一定是一个具体的事件或具体的目标、可量化的。

image.png

Issue 关联里程碑

image.png

可以看到,里程碑的整体进展情况,对于Leader来说,有一个全局的视角去审视整个产品的规划。


业务价值

通过极狐GitLab相关的功能的操作,利用影响地图对产品经理提出的需求进行了分析,从而确定了需求目标、具体工作内容和里程碑规划。


  • 结构化

它的第一层是目标;第二层是影响哪些用户或角色能够实现这个目标,即角色;第三层是这些角色通过什么影响来帮助实现这个目标,即影响;第四层是通过什么具体的功能或事项来实现这个影响,即交付物。层层细化,非常清晰。    


  • 整体化

从目标到角色,到影响,再到交付物的树状视图。也是一个为产品开发,功能迭代中各相关角色提供的一个共享的、整体的视图。每个角色都能按照这个整体视图的脉络,理清自己的思路和职责,确保交付的功能能够帮助目标的达成。


  • 结构化

各个角色沟通和协助的桥梁。各相关角色可以基于这张图来制定产品规划,里程碑规划。相比于过去基于“产品功能列表”的里程碑规划,基于影响地图的里程碑规划可以按照从交付物到目标的最短路径方法进行规划。这样制定出的规划更符合实际需求、更有效。


  • 动态性

影响地图需要不断迭代更新、不断完善的。因为基于影响地图的产品规划和需求分析,都是以假设为前提条件进行的,一是假设最终的交付物能够产生各角色然后期望的影响,二是假设期望的影响能够达成最初定义的目标。这些假设是需要在迭代过程中进行验证的,然后我们也要根据验证的结果调整后续的里程碑规划。


总结

如果把产品比如一艘大船,那么影响地图就是航行的方向和航海图。它可以辅助确定业务目标,将具体的工作任务与目标相关联,在制定里程碑规划时始终考虑目标,并通过最短路径快速实现业务目标。这些对于一个产品,甚至是一个企业都是至关重要的。


极狐GitLab的Issue、迭代、里程碑等功能的设计,非常巧妙的适配了影响地图所需的所有要素,通过界面化的操作,可以完整地、清晰地帮助我们达成目标,有兴趣的小伙伴不妨来试试。

目录
相关文章
|
运维 Kubernetes 供应链
【极狐 GitLab】在 web 端合并分支
【极狐 GitLab】在 web 端合并分支
352 0
|
运维 测试技术 持续交付
微服务项目部署实践:使用Gitlab Runner实现微服务项目的持续集成,持续交付和持续部署
本文通过详细的步骤一步一步说明在微服务架构的项目中如何进行项目部署的操作实践,通过Gitlab实现项目的持续集成,持续部署和持续交付。详解介绍的Gitlab中实现项目持续部署的工具GitLab Runner的具体使用步骤。通过这篇文章,可以熟悉微服务项目持续集成,持续交付和持续部署,学会使用GitLab Runner的具体使用方式,极大简化微服务项目的部署。
887 0
微服务项目部署实践:使用Gitlab Runner实现微服务项目的持续集成,持续交付和持续部署
|
敏捷开发 运维 监控
Jira + GitLab 实践 DevOps
使用 Atlassian Jira + Confluence + GitLab + Jenkins 实践 DevOps 视频链接:https://www.bilibili.com/video/BV1a8411n7YT/?spm_id_from=333.788.recommend_more_video.-1&vd_source=27c8c73fa8c8fa7c8f1b25ad0b11c767
376 0
|
Kubernetes Java API
实践分享!GitLab CI/CD 快速入门
本文给大家讲述如何使用 GitLab CI/CD 构建、测试、部署 Spring Boot 应用,将产物运行在 Rainbond 上。
|
安全 Shell API
蜻蜓:GitLab结合fortify实现自动化代码扫描实践
在甲方做安全的同学可能会有一项代码审计的工作,通常需要从gitlab把代码拉取下来,然后使用代码审计工具进行扫描,然后对结果进行人工确认; 在这个流程中需要做的事情比较繁琐,比如说gitlab如何配置token、如何自动化把代码拉取到本地、如何调用fortify实现批量扫描等诸多繁琐问题。 本篇文章以甲方安全代码安全建设为主线,分享如何让代码审计工具自动化扫描gitlab仓库里的代码。并且提供了一个便捷的实验环境供大家测试。
610 0
蜻蜓:GitLab结合fortify实现自动化代码扫描实践
|
持续交付 开发工具 Android开发
Android项目持续集成实践之Gitlab CI
简介 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 入门 下面我们来简单介绍
8419 0
|
缓存 前端开发 测试技术
Gitlab的落地与应用(二)测试代码接入Gitlab实践
Git&SVN对比、优缺点分析;Git目录、核心概念讲解;Git环境搭建、配置免密访问;测试代码接入gitlab、代码管理;
Gitlab的落地与应用(二)测试代码接入Gitlab实践
|
前端开发 监控
极狐GitLab专业版Scrum之Epic的最佳实践
JIHULAB 101 https://gitlab.cn/jihulab101/
537 1
极狐GitLab专业版Scrum之Epic的最佳实践
|
缓存 Kubernetes Java
GitLab CI/CD 自动化构建与发布实践
GitLab CI/CD 自动化构建与发布实践
5716 0
GitLab CI/CD 自动化构建与发布实践
|
存储 弹性计算 运维
极狐GitLab入驻阿里云计算巢,共同提升云上开发体验
阿里云计算巢平台首家一体化DevSecOps解决方案合作伙伴
极狐GitLab入驻阿里云计算巢,共同提升云上开发体验