为什么要进行产品规划
在软件开发过程,是否经常遇到以下几种情况:
- 你开发的软件的产品,有多少功能是用户真正需要的
- 你参与的软件产品中,有没有做到一半就废弃的功能
软件行业是一个成功率较低的行业。据 Standish Group 发布的 CHAOS Report 显示:截至 1994 年,在研究了 8000 多个软件开发项目后,只有 16% 的软件项目是成功,其他 84% 的项目不是失败了,就是存在严重的问题。
但根据 2015 年的报告,从 2011 年到2015年,软件项目的成功率并未再有大的提升,基本是在 30% 左右,可以参考下图:
为什么有这么多的软件项目失败,其中最主要的两个原因:
- 不了解用户真实需求”。在产品在开发阶段,不去调查用户真实需求,而是想当然的自我设定用户需求, 最终导致所开发的软件和用户想要的不一致。
- 对产品缺乏整体的认识和理解。产品的规划没有重点,眉毛胡子一把抓,什么想都做,但最终什么都没做好,错失了产品投放市场的最佳机会。
什么是影响地图
影响地图是一种战略规划方面的技术。它通过清晰的假设、可视化的形式,建立产品功能与商业目标之间的关系,并最终做出更合理的规划。从而使得开发人员在构建产品和交付过程中避免迷失方向。
影响地图通过为什么(why)、谁(who)、怎样(how)、什么(what)这四个要素构成。
最佳实践
下面我将结合极狐GitLab Issue的相关功能,来演示影响地图的操作方法。
例子:我们以电商行业常见的场景举例,业务人员反馈 “商品详情打开速度慢”
STEP1:Why?先确认任务目标
根据这个例子,我们明确下目标就是 “提高商品详情页的加载速度”
STEP2:Who?目标跟谁有关
根据经验,页面加载缓慢的因素有很多种。例如,后台的接口慢、前端的代码加载策略有问题、系统的部署架构需要优化、服务器的配置需要升级、 采用 CDN 进行静态资源分发等。因此要实现这个目标,关联方就会涉及以上提到可能因素相关的所有人员:后端开发人员、前端开发人员、架构师等。
STEP3:How?每种角色是如何影响这个目标的?
为了达成目标,我们根据每种角色的职责和工作范围,思考他们用什么方式影响这个目标。比如:后台开发人员提高后端接口提高响应时间,前端开发人员进行前端代码优化,架构师优化系统架构,通过负载均衡分散访问压力等
STEP4:What?具体做什么?
罗列具体的操作内容。也就是说,我要做什么事情才能产生上面这个影响。后台开发人员想要提高后端接口响应速度,可以通过添加分布式缓存、数据库添加索引、数据库读写分离等方式。
STEP5:选择最佳方案
通过上面 4 个步骤,我们形成了一份可供选择的任务清单。接下来我们应该做的并不是完成所有的任务,而是选择其中成本低、效果好的完成。这里需要我们预估每个交付物的效果和成本。如下图所示,我们可以看出效果较好,成本低的交付物有:添加分布式缓存、数据库添加索引、添加浏览器缓存和采用懒加载的方式等。选择这些路径完成,将为我们减轻不少负担。
STEP6:里程碑规划
上一个步骤中选择的最短路径,可以作为第一个里程碑中需要交付的内容。如下图所示,标记为 ① 的任务是需要加入里程碑规划里的任务。待该里程碑完成后,我们要根据度量指标衡量目标达成的效果,再从剩余的选项中继续选择成本低、效果好的任务添加到下一个里程碑规划中,直到目标达成。
到此,我们利用影响地图对产品经理提出的需求进行了分析和里程碑规划。从而确定了需求目标、具体工作内容和里程碑规划。
我将基于极狐GitLab的相关特性来实践影响地图
1. Issue的创建及关联
创建 Issue 时,可以指派多人,这个就对应了影响地图中目标(why)和人物(who)
关联的Issue,由不同的角色创建,对应了影响地图中做什么(what)
通过设置 Issue 的标记和权重,可以清晰的展示每个 Issue 作用和权重分数
标签高亮展示
层次结构清晰
tips:如果这里把 Issue 标签也显示,然后可以按照权重或者标签筛选就更完美了
通过 Issue 的关联,我们完成初步的任务分析,接下来就是创建迭代
2. 迭代规划
根据上面拆分的任务及分析结果,创建一个迭代,根据任务的优先级和难易程度放入迭代中
将 Issue 关联迭代
打开迭代视图
这样,可以时刻掌握任务的进展情况,做到心中有数。
3. 里程碑时刻
这里要注意,很多人把迭代和里程碑混搅在一起,其实这两者是有区别,迭代侧重是阶段时间内完成的任务,而里程碑侧重的是某一个事件或目标的完成。
以本文的案例来说,我们设置第一个里程碑规划 “商品详情页打开时间小于1秒” ,它一定是一个具体的事件或具体的目标、可量化的。
Issue 关联里程碑
可以看到,里程碑的整体进展情况,对于Leader来说,有一个全局的视角去审视整个产品的规划。
业务价值
通过极狐GitLab相关的功能的操作,利用影响地图对产品经理提出的需求进行了分析,从而确定了需求目标、具体工作内容和里程碑规划。
- 结构化
它的第一层是目标;第二层是影响哪些用户或角色能够实现这个目标,即角色;第三层是这些角色通过什么影响来帮助实现这个目标,即影响;第四层是通过什么具体的功能或事项来实现这个影响,即交付物。层层细化,非常清晰。
- 整体化
从目标到角色,到影响,再到交付物的树状视图。也是一个为产品开发,功能迭代中各相关角色提供的一个共享的、整体的视图。每个角色都能按照这个整体视图的脉络,理清自己的思路和职责,确保交付的功能能够帮助目标的达成。
- 结构化
各个角色沟通和协助的桥梁。各相关角色可以基于这张图来制定产品规划,里程碑规划。相比于过去基于“产品功能列表”的里程碑规划,基于影响地图的里程碑规划可以按照从交付物到目标的最短路径方法进行规划。这样制定出的规划更符合实际需求、更有效。
- 动态性
影响地图需要不断迭代更新、不断完善的。因为基于影响地图的产品规划和需求分析,都是以假设为前提条件进行的,一是假设最终的交付物能够产生各角色然后期望的影响,二是假设期望的影响能够达成最初定义的目标。这些假设是需要在迭代过程中进行验证的,然后我们也要根据验证的结果调整后续的里程碑规划。
总结
如果把产品比如一艘大船,那么影响地图就是航行的方向和航海图。它可以辅助确定业务目标,将具体的工作任务与目标相关联,在制定里程碑规划时始终考虑目标,并通过最短路径快速实现业务目标。这些对于一个产品,甚至是一个企业都是至关重要的。
极狐GitLab的Issue、迭代、里程碑等功能的设计,非常巧妙的适配了影响地图所需的所有要素,通过界面化的操作,可以完整地、清晰地帮助我们达成目标,有兴趣的小伙伴不妨来试试。