驻场回来之后,吉彤在公司的位置悄然起了一些变化。
这种变化不是谁正式宣布的,更像是一个氛围上的细微偏移——开会的时候孙姐会下意识朝他的方向看几眼再开口,沈瑶在技术方案讨论中偶尔会问一句吉彤你觉得呢,就连茶水间里陌生人跟他打招呼的频率都比从前高了一些。他花了两天才意识到这意味着什么:他已经不再是那个新来的男生了。
徐驰的成长则更为直观。吉彤不在的两周里,徐驰独立完成了登录模块的两次小迭代,还在组会上做了一次十分钟的技术分享,讲的是如何用更轻量的状态管理工具替代现有方案。吉彤回来看见他写的代码时,发现注释清晰得不像一个刚转前端一个多月的人写的。
你写得比我第一版好。吉彤说。
徐驰难得没有低头避开目光:你走之前给我的交接清单写得细,我照着做就顺。
那你功劳归我?
各占一半。
吉彤笑了一下,没有继续逗他。
七月的第一周,一个内部摩擦悄然浮现了。
起因是产品部林悦那边上线了一个新功能——用户在App内的个人中心页面可以查看自己的使用足迹,记录每天开关灯、调温度、开关门禁的次数,用一段温情文案包装起来,叫你今天守护了家的几盏灯。这个功能是林悦带着产品团队花了三周做的,数据模型和文案都改了好几版,内部测试时用户反馈积极。
问题出在技术实现上。为了记录这些足迹数据,前端需要在每次设备操作成功之后向日志系统多写一条埋点,数据量不算大,但每条埋点都带着用户的详细操作上下文。沈瑶在技术审查时提出了顾虑:这个埋点太细了,万一用户对隐私有意见怎么办?虽然没有直接上报个人信息,但操作频率和时段组合起来可以反推用户的生活作息。产品那边有没有做隐私说明的配套?
林悦在群里回复:文案和隐私说明都写了,用户可以在设置里关闭足迹功能。
沈瑶没有继续追,但在私底下跟吉彤提了一句:其实我担心的不是隐私说明,是用户根本不会去看隐私说明。他们点了之后可能压根不知道自己每天几点开关灯都被记下来了。这个功能本身有温度,但是实现方式如果能再轻一点就好了。
吉彤把这句话记在了心里。他没有立刻表态,因为他同时也能理解林悦的立场——足迹功能是产品部门投入了大量心血的成果,数据维度的丰富度直接决定了用户情感的共鸣程度。如果把埋点砍掉一半,用户看到的画面就单调了。
僵持了三天。林悦在需求群里发了一条长消息,重申功能的用户价值和数据支撑,态度温和但立场坚定。沈瑶没有直接回那条消息,而是私信吉彤:你过来一下。
两个人坐在小会议室里。沈瑶难得露出一些疲惫的神情,她靠在椅背上,手指捏着一支笔没有写字:我不是想跟产品对着干。但我做技术审查看的是长远——数据越细,后续维护的成本和风险越高。用户现在没意见不代表永远没意见,万一有人把数据串联起来搞出个舆论事件,到时候背锅的还是技术。
吉彤坐在对面想了想:你觉得林悦有什么顾虑?
她怕功能砍了不够打动用户。她那个文案写得很好,守护家的几盏灯确实有感染力,但如果没有数据支撑,感染力就是空的。
那咱们能不能换一种思路——数据颗粒度不变,但把存储位置改成本地?吉彤说,埋点照旧打,但不传到云端,只存在用户手机本地,页面展示的时候从本地读。用户开关足迹功能的时候就直接把本地数据清了,不需要跟服务器有任何交互。
沈瑶的笔停了:这个想法……可行。本地存储的容量够吗?
一天几十条操作记录,存储量很小。而且本地方案天然符合隐私优先的原则,数据从头到尾不出用户的设备。后续如果用户想保留长期数据,可以再加一个云端同步的选项,但那得用户主动开启。
沈瑶坐直了身体,笔在指间转了一圈:你把这个方案跟林悦说一下。我陪你一起。
当天下午三个人在小会议室碰头。吉彤把本地方案从头到尾讲了一遍,包括存储容量预估、数据结构的简化设计、用户关闭功能时的清除逻辑。他讲完之后林悦沉默了几秒,然后开口,语气比前几天松弛了不少:这样数据还在吗?用户每次打开App看到的内容跟现在一样丰富吗?
一样。数据存在手机里,展示的时候从本地调。唯一的差别是换手机或者重装App之后历史数据会消失,但这跟用户关闭功能的效果一致,逻辑上是自洽的。
林悦低头想了十几秒,然后抬头:可以。这个方案我能接受,数据完整度没有打折,还省掉了用户隐私的后顾之忧。她看了沈瑶一眼,早说本地方案不就完了,咱们干耗了三天。
沈瑶也笑了:我没想到这层。是吉彤想出来的。
林悦站起来拍了拍吉彤的肩膀:你这个位置坐得稳了,两边都能想到。她拉开门走出去的时候回头加了一句,下周有新的用户调研报告,我发你一份,你给技术这边做个参考。
小会议室里只剩下吉彤和沈瑶。沈瑶把桌上摊开的笔记本合上,长长吐了一口气:三天前我还在想该怎么协调这件事,今天就被你解决了。你怎么想到本地方案的?
吉彤也站了起来:我以前做过的项目里有一个类似的需求,当时也是数据隐私踩了坑,后来被用户投诉了才改成本地存储。经验教训吧。
你用了个很高级的说法——经验教训沈瑶拿上笔记本往外走,以前公司踩的坑现在成了你可以拿出来的方案。这不就是成长嘛。
吉彤跟着她走回工位区。经过茶水间的时候他习惯性看了一眼桂花蜜罐——上回徐驰带的那瓶已经见底了,旁边贴着一张新的便签,字迹是林悦的:我买了两瓶,明天到货。下面有人用红笔画了一个小小的。
他坐回工位的时候脑子里还在转刚才的方案思路。事实上,他在恒远科技踩过的那个数据隐私坑当时是被主管骂着改的,骂完之后也没人复盘为什么踩坑,更没人把这次教训沉淀成通用的设计原则。而今天他把那个教训用在了蔚蓝科技的需求上,从这个角度往回看,在恒远那三年的苦也不算白挨——至少他知道哪些路走不通。
周五的组会上,孙姐专门提了这件事:听说足迹功能的技术方案今天定了,用了本地存储的隐私友好方案。这个思路以后可以作为咱们设计用户数据类功能的默认选项之一,省得每次都在隐私和体验之间来回拉扯。
她说完看了吉彤一眼,吉彤觉得那一眼里面包含的信息很轻,没有嘉奖的架势,更像是在说你看,这些东西慢慢就成了你的了。
散会之后徐驰跟在他旁边走回工位。徐驰在走廊里停了一步,压低声音问了一句:你当时是怎么想到那个方案的?我是说,在两个方案都不完美的时候,你是怎么找到那个中间值的?
吉彤想了想:先把两边最核心的需求都列出来。林悦要的是数据丰富度,沈瑶要的是隐私安全。本地存储同时满足了这两条,本质上就是把矛盾拆开看,发现它们其实在同一个地基上。他看了一眼徐驰,你记不记得我之前跟你说过,问问题要把影响你接下来三小时工作的先问掉?这种找方案也是一样的逻辑——先把影响最核心需求的条件列出来,剩下的让步空间就是中间地带。
徐驰认真听完,点了点头:我记住了。
周末吉彤没有加班。他周六上午去了一趟附近的书店,买了一本关于产品设计的书,结账的时候想起之前林悦说过蔚蓝内部有个读书会,他回去可以问问怎么加入。下午他坐在出租屋的阳台上翻了几章,阳光铺在书页上,偶尔有风吹过来把页码吹乱。
周日傍晚,他收到赵宇的一条语音消息。赵宇的声音里带着一种说不清是感慨还是玩笑的语气:兄弟,我刚算了算日子,你入职到今天刚好两个月整。两个月前你站在咱们工位前面跟个站岗的一样,今天我路过你工位看见你在写什么产品设计书,我差点没认出来是同一个人。
吉彤把语音听了两遍。他没有回文字,而是也回了一条语音:两个月前的我也认不出现在这个。但我觉得现在这个挺好的。
赵宇回了三个哈哈大笑的表情。吉彤把手机放到一旁,继续翻那本书的下一章。书页上有一段用灰色字体印着好的设计不是在两端之间选择,而是在两端之上找到一个新角度,他在那句话下面用铅笔轻轻划了一道线,没有写任何批注。
周一早上吉彤到公司的时候,茶水间的桂花蜜已经补上了。旁边的新便签是林悦的字迹,两瓶已到,够喝一个月。他用小勺舀了半勺放进豆浆杯里,搅匀了端回工位。
徐驰比他来得更早,已经在屏幕前忙活了。吉彤经过他工位的时候瞥了一眼屏幕,发现他在看一份关于状态管理的技术文档,文档标题里带了两个字。
看得懂吗?
徐驰抬头:有些吃力,但能啃。
啃不动了问我就行。
吉彤坐回自己的位置,打开电脑。周末他收到的那份用户调研报告他已经读完了,今天打算把几个技术相关的洞察整理成一份简短的技术侧建议,发给林悦参考。他在文档第一行打下标题关于足迹功能后续优化方向的几点技术建议,然后开始逐条列举。
写到第三条的时候,他停了一下。这条建议的核心内容是如果后续拓展足迹功能到其他设备品类,建议沿用本地存储方案,但提供云端备份的主动选择入口。他发现在写下这句话的时候,脑子里自动出现了一个画面——未来的用户打开App,看到是否开启云端备份的提示弹窗时,第一反应应该是我可以选而不是又被要了一次权限。
他继续往下写。茶水间的豆浆机又响了一次,有人新磨了一杯。茉莉花茶和桂花蜜的香气交替着在空气里浮沉,窗外的阳光在上午的时间段里从东窗移到了南窗,把每个工位的桌面依次照亮了一遍又移开。
吉彤写完最后一条建议的时候看了看时间,十点四十分。他把文档存好,发送给了林悦。五分钟后林悦回了一条收到,很实用,后面跟了一个小太阳的表情。
他关上邮件窗口,靠着椅背伸了个懒腰。沈瑶从旁边经过,端着一杯冒着热气的水,低头扫了一眼他的屏幕又移开目光,什么也没说,但走路的时候嘴角是微微扬着的。
窗台上那盆龟背竹在上午的阳光里投下宽大的影子,叶片边缘在微风中轻轻晃了一下。茶水间有人打开了冰箱门,传来一声哎呀谁把酸奶放在冷冻层了的惊呼和随后的笑声。企业微信群里跳出一条新消息,是小张在项目群里发了一句华信这边新接口文档已更新,各位看看,后面跟着刘师傅回的一个。
吉彤点开那份文档看了几行,格式确实比两个多月前整齐多了,错误码和字段定义一应俱全。他关了文档继续喝那杯已经温了的豆浆,觉得今天早上的光线刚刚好,不刺眼,也不暗,就是一种能让人看清所有细节的自然亮白。