手记

从上线到真正落地:功能如何才能被用户发现和使用?

代码上线了但没人用,还有意义吗?

如果 Medium 将此内容放在付费墙后面,你也可以在这里查看 LinkedIn 上的文章版本这里查看

在谷歌,有一次在与我的一个工程师进行一对一会议时,他说几个月前已经将一个功能发布了。我问这个功能是否成功。这位工程师露出困惑的表情,开始描述技术细节。这很好,但我想知道它是否对用户产生了影响。结果只有两名谷歌员工偶尔使用它。这个功能很棒,只是还没有真正被接受

有一种巨大的区别在于推出某事和落实某事。作为一名工程师,你所做的推出工作是“有趣”和“亮眼”——你设计功能并编写代码,这正是你投身软件工程的初衷。每一次代码审查都让你感到一丝丝成就感,并让你展示自己的才华。你所做的落实工作则是枯燥且往往不涉及技术。很多工作没有立竿见影的效果。你无法掌控100%的结果。这往往让人感到迷茫和失望。

但没有落地,你的启动就没有意义。在软件行业,以前有句著名的“如果森林里一棵树倒下,周围没有人听到,它还会发出声音吗?”现在变成了“如果代码部署到生产环境却没有人使用,它还有影响吗?”

事实上,我认为这有负面影响。你们团队增加了产品的复杂性和功能表面,反而没有带来任何价值,反而增加了操作负担。

在那次提醒之后,我开始更仔细地审视我们所有的发布。大多数发布在部署上缺乏最基础的纪律性。人们把代码上线后,便欣然转向下一个能在绩效评估中加分的智力挑战。

为了推动一些文化变革,我下定决心准备了一些关于“启动与着陆(Launch vs. Land)”的幻灯片,并向全公司做了演讲,录了视频并广泛分享出去。有两三百人观看了,我觉得这是个好现象。

但根本就没有表现出任何行为改变。

后来我才明白,我是团队里的新人(在谷歌也只是个新人),还没有赢得工程师们的信任。我只是个突然冒出来的家伙,没有任何实质性的成果。我在亚马逊写过10万行以上的生产代码,发布了十几个每天被数万亚马逊员工频繁使用的内部产品,并在几十个内部会议上发表过演讲,但在谷歌我却只是个无名小卒。

我需要可信度来激励行为的改变,为此我还需要通过技术成果来获得可信度。我决定作为兼职工程师的身份加入我的团队,这不仅帮助我更深入地了解我领导的产品细节,也让我赢得了工程师的信任。

我开始寻找可以跨越多个团队的代码编写任务,找到了一个完美的小问题。_它并不特别复杂,但有可能帮助很多客户,而且还没有人对此采取行动,需要在三个不同的代码库中进行修改,并说服多个团队。

当时,我是谷歌全公司软件集成测试基础设施的技术领导(我在这两篇文章中曾写到)。我负责的产品推出了谷歌CI/CD系统的临时隔离测试环境(我们称之为“系统被测(SUT)”)。部署这些SUT可能需要很长的时间,这让用户感到沮丧。对急于改进过程的用户来说,这些时间究竟花在了哪里,用户都无从知晓。

这里是一个作为 CI/CD 部分的测试运行示例(部分内容已被屏蔽)。在这种情况下,启动 SUT 耗时几乎 28 分钟之久,成为了整个发布流程中的拖累。但你不知道为什么会耗时 28 分钟。

这里是我设想的我们可以向客户展示的 更细化的指标数据 的一个例子,看看这28分钟内发生了什么。当你搭建一个SUT时,首先需要构建一组组件,然后通常会创建一个数据库(Spanner)来存储系统需要返回的数据,接着填充数据库,最后启动服务器。

在很多情况下,你可以一眼就能看出哪个组件是瓶颈组件。在下面的例子中,可以看出一个组件的构建时间比其他组件长两倍,另一个组件的启动时间也比其他组件长两倍。现在你知道该优化什么了。

此外,如果我发布这些指标,我不仅可以在用户界面上显示每个客户的运行数据,还可以在我们自己的操作仪表板中汇总它们,这样我的团队就能了解我们每天启动的数百万个 SUT 的启动延迟百分位数,识别退化并量化改进。以下是我们几周内汇总的指标示例。

所以我跟团队聊了聊,获得了他们的认可,自己动手干了一些,说服其他人接手剩下的工作。最后一步,把指标显示在UI上的任务,变成了实习生接手。果然,代码一部署到生产环境,实习也就结束了,团队就宣布任务完成了。然后就转向了下一个任务,和之前的行为模式一样。

当然,这只是个开始。虽然它已经在生产中,但并没有人使用它。这时我有机会以身作则。我列了一个待办事项列表来指导自己的工作流程。

1. 用户能否轻松找到这个功能?

新功能必须易于发现。

我戴上新客户的帽子,开始体验用户界面。当你点击SUT时,就会出现一个“操作历史”标签,你会看到一个充斥着庞大命令行的“文字墙”。每个命令行下面都隐藏着一个小小的“事件时间”标签,它是折叠的,很容易被忽略掉。

很少有人愿意仔细查看一个25行的命令行,所以我将其简化,使得事件时间这一标签更易于查看。我认为,相比查看命令行,更多人想看到事件时间——实际上,通过计数器统计我们客户每次展开每一项的频率,我实际上验证了我的理论。

一个小小的改动(大约十行代码的改动)让客户采用事件计时的频率提高了10倍。你不必费太大的劲让某样东西更容易被发现,你只需要站在客户的角度思考,从他们的角度来看问题。大多数产品都还有很多改进的空间,就像那些容易达到的目标。

这个功能好用吗?

尽管我觉得我们的界面初次发布时已经相当不错了,但还是发现有很多明显可以改进的地方。一些勇敢的用户尝试后给出了类似这样的反馈。

我看到这条反馈时非常激动。这位用户被我的小功能所吸引,还花时间写下反馈。于是我回复了他,我们进行了一对一的交流。永远都要抓住机会,认真倾听你的早期用户。他们的反馈和见解无比珍贵。

根据我和他以及其他几个人的交谈,我做了一些小的改进。每一个都是些小的代码改动,但这些小改动却显著地提升了产品的易用性。

例如,原来的条形图没有标注,因此很难区分每个条形图代表什么内容,所以我为它们加了标签。这花了我五分钟,这让顾客的体验更棒了。

一些较大的SUT系统包含成百的组件,这使得事件时间页面变得非常长,客户需要上下滚动页面来查找特定组件的事件时间。因此,我将特定组件的所有事件放在同一行,这使图表更加紧凑,并使得特定事件类型在不同组件之间的比较变得非常容易。

再次:从编码的角度来说,这些事情都不特别难做。大多数更改只是在这儿或那儿添加了十行代码。不过这些改动共同大幅提升了产品的易用性。作为工程师,对我来说,这体现了我对细节的打磨和关注。

作为客户,我可能会想:“Duration”字段中只有一个数字,即“101.12639”。这个单位是什么?可能是秒吗?为什么我需要如此精确的秒数,而实际上这件事情通常耗时几分钟?所以我把它改成了两位数字加上可读的英文版本,例如“101.13 秒 (1分41秒)”来保持一致,也可以使用“101.13 秒 (1m41s)”来直接对应英文版本。

3. 这个功能,好用吗?

“能用”和“管用”是两码事。我查看了票务、邮件和论坛上的动态,看看有没有人提到这项功能。我有包含指标的仪表盘(稍后再详谈),但我还想通过实际客户的“主观反馈”来了解这个功能是否真正被用户接受了。

收到这样的邮件真是挺令人振奋的。

或者试试这个

关键是既要参考实际数据,也要参考个人经历。两者都应保持一致。

4. 我们有好的文档吗?

这是我的另一个让我头疼的问题。我们许多特性要么完全没有说明文档,要么说明文档做得非常差。

我需要通过实际行动来领导。我创建了我们文档中的一个页面,不仅解释了如何使用事件时间线,还提供了一些最佳做法和如何利用它来寻找可优化的组件的现实世界示例。

我也喜欢在使用产品时可以轻松找到相关文档,因此我在“事件时间线”面板UI中增加了一个小小的提示链接,写着“要了解此面板,点击这里”

最后,我们的文档必须是易于发现的,所以我确保在搜索常见问题,如“慢 SUT”或“优化 SUT”等时,它会是第一个出现的结果。毕竟,谷歌是靠搜索引擎起家的,所以可以通过调整内部搜索设置,让某些特定术语指向特定 URL。

5. 我有没有使用指标?

你绝不能在没有起码的方法了解谁在使用它的情况下推出新功能。

我构想了许多复杂的指标,但我 不想让完美成为好的敌人的敌人。对于最初的实现,UI 发出一个计数器,跟踪 Event Timing 面板被 显示 的次数。由于默认情况下它是折叠的,我猜想客户特意点击小三角来展开面板,这表明他们注意到了它,并且至少是好奇到会点击它。我又添加了一个计数器,来跟踪客户是否在展开的面板内 悬停 并与条形图互动。总的来说,“显示”指标提供了上限,“悬停”指标提供了下限。这并不完美,但也是一个不错的初始信号。如果该功能受到欢迎,被数千名谷歌员工使用,我可以投资更复杂的指标,但在那之前,我需要务实和灵活。我每天看到大约有 150 到 200 名不同的用户与它互动,这是一小功能不错的开始。这是一个三周的周期,

我也记录了我创建的那个文档页面每天大约有100次访问。

6. 我那时的交际活动做得充分吗?

我一直致力于改进我们面向客户的公告(之前在这里写过:《在外国文化中注入以客户为中心的理念》)。为了让大家了解我的提议,我需要推广一下这个想法,于是我便采取了这个策略。

公告的开头几句话至关重要。人们非常忙碌,如果你不能抓住他们的注意力,他们就会继续查看下一封邮件。你必须清晰地阐述你的功能解决了客户的什么问题,这样你的客户才会继续读下去。

我的邮件公告中也包含了一个小小的追踪器,用来看看究竟有多少人真正打开了并阅读了邮件。这让我知道在第一周有1400名谷歌员工阅读了这份公告。仅仅因为读了我的邮件,并不意味着他们就想使用该功能,但它确实说明他们至少还关心到打开邮件,所以这又是一个不完美的但有用的指标。

最后,我的邮件中包含了一个指向文档的特殊链接,这个链接还有一个计数器,这样我就能看到不仅打开了邮件的人数,还有实际点击了“了解更多”链接的人数——这比第一个信号更准确地反映了用户的兴趣。

结尾

始终记住,推出不是终点,这只是开始。让这个功能顺利实施,确保它易于被发现使用有用,确保你有相应的文档指标,并且要好好推广它,重视早期用户反馈并从中学习。

0人推荐
随时随地看视频
慕课网APP