背景
软件研发改进过程中或日常工作中,经常会碰到许多待解决的问题,特别是棘手问题。为了更好解决这些问题,首先需要做减法,聚焦重点问题。其实更重要的是定义问题和设定改进目标,只有清晰定义出问题,才能真正有的放矢;只有定义好问题,才能设定靠谱的改进目标,进而才能真正达到预期效果,而不是脚踩西瓜皮滑到哪里算哪里。

笔者经常在开发团队中组织大GoSee(全面系统深入对项目进行全面诊断、给出解决方案并进行落地穿刺),出综合方案时第一步也是最重要的一步就是定义问题和设定改进目标,这里看似简单,其实最容易出现偏差和让项目不能信服的地方。这里把相关经验进行提炼和总结,供大家参考。
问题
开始之前,我们先看看一个问题定义不清晰的例子。

这是一个研发改进大Gosee中实际定义问题的案例,当然这个版本是个中间版,文章最后会给出该问题的最终优化版,大家也可以根据文章分析思路自己尝试进行优化该问题并和最终版对比下。
这个案例中问题定义不足点如下:

思路
那如何定义好问题并设定目标呢?一般我们建议采用七步法:

如何识别问题

问题必须具备以下特征:
-
有危害
问题应该以形容词和副词为主,比如上述案例:以师带徒中师傅工作负荷超预期,这就不一定是个问题,只有构成了显著的痛点形成危害才成为问题。比如超预期造成了对师傅正常需求交付造成了严重冲击并影响项目整体交付,这里的“严重”才构成了一个问题。
-
非方案
很多团队成员提出的问题其实都是解决方案,比如经常有人下班回家说:该做饭了,其实做饭就是方案,问题应该是饿了。解决饿了的方案不一定非是做饭,还可以是点外卖,出去吃饭等。
同理上述案例中把通过加大指导老师的投入作为快速提升员工成长的方案当做一个问题。
-
有差距
现状和合理预期的差距才是问题,合理预期从哪里?常见的思路是采用三看:
-
纵向(自己的历史水平)
-
平均(自己历史平均水平,所在组织整体水平等)
1、看业界
2、看同行/对手
3、看自己
如何分解问题
一般问题都是多个子问题的聚合的大泥球,大泥球问题本身是很难定义和解决的,必须拆细拆小。
常用的拆分方法有:
搭建问题树
把大泥球问题按照构成分解成一个个子问题,子问题再拆分成孙问题,孙问题拆分成重孙问题。。。这样一层层拆解下去,拆分时的要点:
-
下一层都是上一层问题的直接组成
比如“需求交付速度慢-》日均合格代码产出少-》员工技能不足-》新员工数量多”;而不是一次就从“需求交付速度慢-》新员工数量多”
-
归并
拆分的子问题中,如果有重复的部分,要及时进行合并,防止发散。
用公式思维拆解问题
团队/部门/公司的业务公式
-
广告公司:广告收入=展现量*点击率*点击价格
-
煎饼摊:收入=套数*单价-面粉费-鸡蛋费-食用油-蔬菜-佐料
拆分的目标
问题要拆分到什么地步才算结束呢?一般拆分的目标是到元问题(相对于复杂问题掺杂了多个维度和变量),包含两个标准:
-
MECE(Mutually Exclusive Collectively Exhaustive)
-
拆清(正交,没有部分重复)
-
拆净(全部拆完,没有剩余)
-
原子
拆分成原子问题,所谓原子问题,有两个特征:
-
我们认知范围认为不能再拆的问题
-
超出我们的影响范围的问题(比如最近员工隔离在家办公导致无法面对面沟通是因为疫情影响,这个问题超出我们的影响范围,仅能关注。)
如何定义问题
问题是现状和合理预期的差距,那合理预期、现状和目标都需要定义、量化/细化。
先看定义,需要把问题中的要素进行离散化,抽取其中的核心要素符号化并把符号进行概念定义。
其次使用模板进行定义抽象出的概念:

定义时要考虑以下要素:
-
中英文描述
-
实例化表达
-
生命周期
-
要素间关系
如何量化问题
标量
-
数值
-
枚举量
-
阶段量(等级)
把问题按等级进行描述(来自业界通用等级或自定义等级)。
如何回溯目标

问题基本都是由已有方案/举措执行不当或不到位导致的,需要通过问题回溯到已有方案/举措,再通过已有方案/举措回溯到目标,需要验证已有方案是否真的是目标的有效解,不能解决了半天发现还有更加有效的方案或者该方案无效,那就悲剧了。
一个问题没有回溯目标并遗漏其他方案导致重大偏差的小段子:
袋⿏逃跑的故事
动物园⾥来了⼏只可爱的袋⿏,⼀天动物园管理员发现袋⿏从笼⼦⾥跑出来了,于是开会讨论,⼀致认为是笼⼦的⾼度过低。所以他们决定将笼⼦的⾼度由原来的10⽶加⾼到20⽶。结果第⼆天他们发现袋⿏还是跑到外⾯来,所以他们⼜决定再将⾼度加⾼到30⽶。
没想到隔天居然⼜看到袋⿏全跑到外⾯,于是管理员们⼤为紧张,决定⼀不做⼆不休,将笼⼦⾼度加⾼到100⽶。
⼀天长颈⿅和⼏只袋⿏在闲聊,“你们看,这些⼈会不会再继续加⾼你们的笼⼦?”长颈⿅问。“很难说,”袋⿏说,“如果他们再继续忘记关门的话!”
然后,袋⿏进⼀步说:“就是他们把门关了也没事,地下还有⼀个洞呢,还是可以出来的。”
回溯重要的方法论就是5why法,要点是直接归因和及时归并相同点,同前面的问题分解章节中的问题树拆分法。
如何寻找路径
见上图,其实从现状到目标不仅是一条路径,除了验证已有方案这条路径是不是有效路径外,还要确认下其他路径是不是更好的路径,防止灯下黑(见上面的小段子),仅盯着已有方案(路径0)那条路径。
如果有更有效路径,需要结合当前路径和过程子目标进行综合排列优先级。
如何确定目标
对确定后的过程子目标进行确定改进目标,目标要保持SMART原则,目标要考虑以下因素:
-
考虑时间窗
-
不可偏离项(资源约束)
-
利旧(已有方案和资源)
同一个目标,是把问题解决到80%还是解决到50%,投入的资源和方案可能完全不同,需要和干系人达成一致。
小结
参考答案

如果你要解决好一个问题,用80%的精力去拆解和定位这个问题,用20%的精力去寻找解决方案就足够了。
只有定义好问题才能有的放矢,才能定义出目标,才能让相关干系人信服,让别人觉得你对比你自己觉得自己对更重要。
原文始发于微信公众号(丁辉的软件架构说):软件研发改进中如何定义出让人信服的问题
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/27272.html