2871 字
约 9 分钟
19
S20-A13 · 上线之后:功能发了,谁在看它有没有用

季度盘点会上,七个功能都标着"已交付"。有人问了一句"哪个真有人用",会议室安静了——不是没人关心,而是这个问题在上线那天就没人被指派回答。发布单最后一项写的是"上线完成",做完这一项,全员被拉去下一个需求,注意力在同一个小时撤走。

上线不是终点,是观测的起点。而"有没有用"只有在上线之前定义过,事后才查得出来;否则结论只能靠回忆和讲故事。


1. 上线那一刻,注意力就撤走了

阶段 谁在看 看什么 产出
上线前 7 天 研发、测试、运维 能不能发出去 发布单、回滚预案
上线当天 全员 有没有炸 值班记录、告警处置
上线后第 2 周 几乎无人 偶发用户投诉 无
上线后第 2 月 无 无 盘点时靠回忆

交付节奏奖励"发出",不奖励"被用":发布是可见事件,使用是缓慢分布。三件具体的事让注意力提前离场——需求单已关闭、人力已排进下一个项目、验收标准里没有使用指标。

把观测责任写回发布单,是最便宜的一次修补:

// release-checklist.yaml —— 最后一项不是"上线完成",是"观测接管"
release:
  feature_id: FEATURE_ID
  owner_observe: ROLE_A        // 上线后 30 天内对该功能的使用结论负责
  observe_window: 30d
  signals:
    - feature_entered          // 被调用
    - feature_completed        // 被完成
    - feature_repeated_7d      // 被重复使用
  review_at: DAY_30
  kill_criteria: KILL_RULE     // 上线前就写,见第 6 节

没有 owner_observe 的功能,等于没有观测。


2. "有没有用"必须在上线前定义

定义要能落成证据,否则它只是形容词。三个问题足够:

// 定义三问 —— 由提出需求的人回答,研发不代答
1. 谁:具体角色 + 量级(不是"用户",是"每月约 N 个 ROLE_A")
2. 什么场景:现在他怎么做,成本多少(分钟/次、错误率/次)
3. 为什么换:不换的代价是什么,换掉之后哪一步变短
定义项 上线后可查的证据 常见缺口
谁 事件里的 identity 分群 埋点只记设备号,不记角色
什么场景 入口页 → 关键步骤 → 完成页漏斗 只有浏览量,没有步骤
换来什么好处 前后对照,或分群对照 全量上线,没有对照组
规模 30 日活跃使用者人数 只统计调用次数,不统计人数

事后补定义的通病是两个替换:把"调用次数"当"使用人数",把"曝光"当"选择"。这两个替换在第 4 节会各造成一次误判。


3. 三个可观测层次:被调用、被完成、被重复使用

层次 回答的问题 怎么查 典型误读
被调用 有没有人来到入口 入口事件计数 入口挂在必经页 → 曝光当意愿
被完成 进来的人走完没有 漏斗:进入 → 关键步骤 → 完成 完成率低就断定功能差,忽略步骤本身有 bug
被重复使用 用过的人会不会回来 同 identity 的 7/30 日再次使用 单次任务型功能天然低重复,被误判为失败

缺一层,结论就错位:只有第一层叫"有人点过",只有前两层叫"能用",三层齐了才叫"有用"。所以事件模型一开始就按三层定,别先上一堆计数再加 identity:

// 事件模型:同一 feature_id 串起来,identity 稳定可关联
{"event":"feature_entered","feature_id":"FEATURE_ID","identity":"UID","ts":"ISO8601","entry":"ENTRY_POINT"}
{"event":"feature_completed","feature_id":"FEATURE_ID","identity":"UID","ts":"ISO8601","duration_ms":0,"steps":0}
{"event":"feature_repeated","feature_id":"FEATURE_ID","identity":"UID","ts":"ISO8601","window_days":7}
// 三层一起看:进入人数、完成人数、7 日重复人数
select count(distinct identity) as entered,
       count(distinct identity) filter (where event = 'feature_completed') as completed,
       count(distinct identity) filter (where event = 'feature_repeated') as repeated_7d
from feature_events
where feature_id = 'FEATURE_ID' and ts >= now() - interval '30 day';

filter 语法按 PostgreSQL 核对;MySQL 用 count(distinct case when ... then identity end)。


4. 使用率的假象与"没人用"的三种解释

三个常见假象:曝光即使用(入口放在必经页面)、点击即价值(点开看一眼就走)、总量即覆盖(少数重度用户刷出高调用量)。判据只有一条:看人数分布,不看总次数。

"没人用"只有三种真实解释,对应三种完全不同的动作:

解释 判别信号 该做什么
没用(问题不真,或方案不解决问题) 有曝光、有进入,完成率低或完成后不再来 回到第 2 节的三问,可能该下线
不知道(找不到、没被告知) 目标人群进入率极低,同类入口进入正常 改入口与告知,不是改功能
有替代(现有做法够用) 目标人群在用另一条路径完成同一目的 比较两条路径成本,可能该下线
// 分布查法:单用户占比过高 → 少数人刷量,不是覆盖面
select identity, count(*) as hits
from feature_events
where feature_id = 'FEATURE_ID' and event = 'feature_entered'
group by identity
order by hits desc
limit 100;

判断顺序很重要:先证明"不知道"不成立(入口和告知已到位),再讨论"没用"。顺序反了会把推广问题当产品问题,白改一版。


5. 反馈采集的偏差与仪表盘的失效

主动反馈几乎必然来自极端体验:特别顺的人不写,特别不顺的人写,中间大多数沉默。"没人提意见"既不是满意也不是不满意,是样本缺失。

渠道 采样偏差 能代表谁
应用内反馈按钮 只有愿意点的人,且情绪偏极端 极端体验者
客服工单 只有出问题且愿意找客服的人 阻塞型问题
问卷 愿填的人,问题由你设定 有观点的人
行为埋点 全量,但只记录"做了什么" 全部使用者(不回答为什么)

仪表盘没人看,通常不是配色问题,是它不回答任何问题。把标题从名词改成问句,读的人才会带着结论离开:

// 看板改造:每块图必须有一行结论,否则删掉
─── 旧:功能A · 日调用量
─── 新:功能A 有人在用吗?→ 30 日使用者 N 人,占目标人群 P%,趋势平
─── 旧:完成率曲线
─── 新:进来的人卡在哪?→ 第 2 步流失最高(X%),疑似 STEPS 校验

行为的"为什么"只能靠访谈补,且要按分层抽样:只找重度用户,会得到"这个功能很好用"的一致回答,然后什么都学不到。


6. 下线决策比上线更难,所以要提前写

上线有推动力(需求、排期、可见成果),下线只有阻力(沉没成本、谁提谁负责、怕被问"当初为什么做")。唯一可行的办法是在上线前把 kill_criteria 写进发布单,让下线变成执行既定条件,而不是重新做一次判断。

手段 能回答 不能回答
灰度 新版本是否引入故障、错误率是否变化 这个功能是否值得存在
A/B 同一目标下两种方案哪个指标更好 指标本身选错时会给出精确的错误答案
分群使用率 谁在用、用得多深 不用的人为什么不用
访谈 动机与替代路径 规模(只能定性)
// kill_criteria:写条件,不写态度
if 30 日使用者 < 目标人群 * THRESHOLD and 完成率 < RATE and 无合规要求:
    下线,数据保留可读 90 天,入口改为说明页
elif 使用者达标 and 完成率低:
    修 STEPS,观察 14 天,仍低则下线
else:
    进入维护态,季度复核一次

四个度量够用:功能使用率分布(人数而非次数)、30 日留存(同 identity 回访)、反馈转化率(反馈数 / 使用者数)、上线后放弃率(进入未完成且 7 日未回)。这四个数到了季度盘点能直接回答"哪个有用"。


排错:盘点答不出"有没有用"的六种情形

现象 根因 处理
只有调用量,没有人数 埋点缺 identity 补 identity 关联,历史数据只给趋势不给结论
完成率高得离谱(>95%) 完成事件在入口就上报 核对上报位置,别在页面加载时算完成
使用率很高但业务指标没动 曝光被计为使用 拆成曝光、选择、完成三个事件
目标人群数说不清 定义没写量级 补人群口径,按 ROLE 维度统计
反馈全是负面 只有极端体验者会反馈 加分层抽样访谈,不据此定结论
灰度正常,上线后崩 灰度样本不覆盖真实入口分布 灰度按入口分群,不只按流量比例

边界:这些场景使用率本就不能当判据

场景 为什么不能作判据 替代判据
内部工具且强制使用 用不用不由使用者选 任务耗时、错误率、绕行路径成本
法规或合规要求的功能 存在本身即价值,与使用无关 合规检查通过率、审计缺陷数
用户量极小(低于噪声阈值) 分布噪声大于信号 逐个访谈、任务观察
一年只用一次的任务型 重复率天然为 0 首次完成率、求助次数
平台与基础设施类 间接生效,没有直接入口 下游功能上线速度、故障率

自测

  1. 发布单上把"上线完成"换成哪一项,观测才有责任人?
  2. 为什么"有没有用"不能在上线后再定义?事后补定义最常见的两个替换是什么?
  3. 三个可观测层次分别回答什么问题,缺哪一层会把"能用"误报成"有用"?
  4. 使用率高而业务指标不动,第一个该怀疑的埋点错误是什么?
  5. 用 A/B 证明一个功能"有用",什么情况下它给出的是精确的错误答案?
  6. 内部强制使用的工具,该拿什么替代使用率?
S20-A13 · 上线之后:功能发了,谁在看它有没有用
https://www.clxhxhhr.top/posts/6332/
作者
clxstart
发布于
2024-12-31
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。