我们是一个去年年初从 0 开始组建起来的新团队,面临的是一个极具技术挑战的新产品,这一年,遇到过很多很多的问题,大家风雨同舟,共同应对和自我改进,逐步形成了很不错的团队氛围和做事的风格,每个人也在这里成长了很多很多。

下面即将介绍的都是真实发生在我们团队的故事,我就从最近例会上大家关于 OKR 的讨论聊起吧。

OKR 的是与非

A:“回顾每个双月的 OKR,我发现一个问题,就是大家都喜欢写很多内容,每个人至少都有两三个 O,并且每个 O 下面还挂着三四个 KR,两个月的时间其实是很紧张的,那么多的 O,那么多的 KR,看似把自己包装得很忙做了很多事,但是真的每一项都能落实麽 ?”

B:“不同意你的说法,公司的 OKR 文化不就是鼓励大家制定有挑战一点的目标麽? ”

C:“@B,我觉得你的理解有偏差,我认为公司的 OKR 所鼓励的 “挑战” 并不是强调做的事情的数量,而是期望把完成每一件事的目标和标准可以定得更高一点。”

A:“非常同意小 C 的观点,我们应该追求的是把每一个 KR 做到极致,如果双月列的目标和事情太多,反而容易迷失目标,心态浮躁,不能沉下心来把每一件事情做到极致。”

最终,大家一致决定,从五、六双月开始,尝试改为每个人尽量只写一个 O,最多只列不超过三条对自己来说最重要的 KR,并且仔细思考和深挖,把 KR 的指标定得清晰和激进一些,双月后看看最终的实施效果。

科研精神

对话 1

A:我觉得我们采用的方案不好,网上人家都在讨论和使用 XXX 方案。

B:基于我们这个业务场景,你详细给大家讲讲为啥网上的方案比我们的方案更适合 ?

A:额,只是觉得那个开源项目特别火,应该是趋势。我再详细对比一下,出个报告。

对话 2

A:我看到 XXX 产品有这个优化,我下周也去做一下这个优化吧。

B:有思考清楚这个优化在我们这个场景下带来的收益预期么?它解决了我们当前的什么问题、什么瓶颈?

A:额,我再详细研究研究…

对话 3

A:“@B,帮忙看看这个 PR,解决了那个空指针导致的崩溃问题。”

B:“赞一个,怎么解决的?”

A:“额,在崩溃的地方加了一个 NULL 指针判断。”

B:“你都不去深入研究代码逻辑这里为什么会出现空指针么??不要 work around,要追根溯源,找到 root cause 呀!!”

对话 4

A:“@all 这个优化效果很明显,XXX 数据指标得到了明显的提升!!”

B:太棒了!具体改了什么?

A:改了两个参数。

B:这两个参数的含义是什么?会影响哪些内容?XXX 指标虽然提升了,有没有观察其他指标的情况?很多优化都是需要做取舍,有一定代价和付出的,这个优化背后的代价是什么?

A:额……我再研究研究。

对话 5

A:“@B,刚才的测试过程中发现,你的那个模块的日志输出了很多 warning,你看看是否符合预期?”

B:“好像是不太正常,回头看看。”

N 天后,B 忙其他新功能开发没有深入跟进,线上出现崩溃事故……

B:@A,线上这次崩溃问题定位到了,XXX 原因导致的,其实上次测试就有发现 warning ,要是跟下去就好了………

经过这一系列事情后,团队内部开始强调 “科研精神”,什么是 “科研精神”:

  1. 科研精神,是站在巨人的肩膀上,独立思考、探索和创新,不要对开源的东⻄不屑,也不过于妄自菲薄。

  2. 科研精神,是遇到问题不靠 “猜”,不做 “work around”,而是打破砂锅问到底,追根溯源。

  3. 科研精神,是大胆设想,小心求证,不靠运气,不毫无根据地做出武断的决策。

  4. 科研精神,是不放过观察到的每一个非预期的现象或者异常,⻅微知著。

不当看客

A:@all 上次讨论的技术方案我已经开发完毕,大家看看。

B:@A 可以再讲讲你的方案和思路么?感觉这个接口设计完全不好对接呢!

C:这个方案实现明显有漏洞,XXX 这个地方不应该这样设计,XXX 那个地方为什么采用这种模式而不是另一种实现思路?

D:我也觉得 @B、@C 说得有道理……

A:你们早干嘛去啦?技术评审讨论的时候,都同意了呀,好不容易开发完了怎么现在都有问题了……

B:额,不好意思,当时方案评审时没认真听。

C:当时讨论时我就提出来过建议,你没认可我也没坚持争论下去……

D:我觉得这个事跟我没啥关系,没交集,所以也没认真听,没及时提出 challenge…

经过这件事后,团队开始推崇 “不当看客”,强调及时沟通,强调互相 “challenge”:

  1. 技术方案的 “评审会议”,不是 “技术讲座”,每个听众都是 “评委”,都要认真听,带着批判性思维,及时提出挑战性的问题。

  2. 对不合理的事情(比如:技术方案、代码质量等),不要轻易妥协,要充分沟通,勇于 challenge 到底。

  3. “君子不器”,虽然每个人都要有所专长,但也不要设死边界,不要做一颗 “螺丝钉”,保持好奇心,认真参与项目的技术评审讨论是了解全局、扩充知识面的最佳手段之一。

质量是产品的生命线

对话 1

A:怎么又出现高频崩溃了,我们从第一次发出来体验版到现在,我们有真正 release 出一个足够稳定的版本么 ?

B:因为产品在快速开发和迭代中,不断快速合入 PR 难免引入一些 BUG...

A:这不是一个好的借口,质量是产品的生命线,我们天天都在吹嘘我们用了多么牛逼的算法,我们做了多么极致的优化,但如果连最基础的稳定性都不能保障,还怎么赢得客户的信任 ?

对话 2

A:本周的工作输出是定位和修复了 XXX 问题(上上周完成的功能点引入的问题),下周的计划是定位和修复 YYYY 问题(上周完成的另一个功能点遗留的缺陷)

B:我们应该反思一下我们的 “交付质量”,为什么经常出现新功能的开发可能不到一周就宣布搞定,但遗留的问题和引入的 BUG 问题却又花费一周又一周的时间,这其实是一种自欺欺人。

对话 3

A:我这周计划去做一个很有卖点的新功能。

B:我记得还有几个遗留的问题没有解决吧 ?

A:那些问题有些不好复现,有些我怀疑是 @C 开发的模块有些非预期的行为,所以才导致了我这个模块的问题

B:那些问题也才跟进了一两天,确定已经有做过足够的努力排查了么?另外,不要轻易甩锅到其他人,你已经有确切的思路和数据证明是 @C 模块的非预期行为导致产生你这边的问题么 ?

A:额,新功能先缓一缓吧,这周我再跟一下那些问题。

对话 4

A:昨天出现的异常问题定位到了,是上个月新增 XXX 功能的 PR 不小心覆盖了 YYY 模块原有的逻辑,导致 YYY 模块的功能不能正常 work 了,从而触发了这个问题

B:嗯,好的,不过这一类问题出现的次数不少了,值得复盘和反思一下:为什么上个月的 PR 引入的问题,我们直到昨天才发现,提 PR 之前为什么没有认真自测到这个重要的模块,模块的单元测试为什么没有覆盖到,自动化集成测试和大盘指标监控为什么没有及时发现问题 ?

经过这些事后,团队在关于 “质量优先” 这件事,终于达成了共识,并且形成了一些明确的做事风格:

  1. 在我们团队,不是做新东西才算有 “产出”,对每一个任务,用心思考和设计、用心写单元测试用例、提高代码质量和交付质量、减少返工和引入的问题,是比做 “新功能” 更加值得鼓励的行为。

  2. 禁止简单粗暴地给 “队友” 抛问题,遇到 BUG,要趁热打铁,收集好现场的信息和证据,争取复现,先简单地及时跟进,逐步缩小范围,再推动和协助相应模块的负责人去解决它。

  3. 每一次 Bug 的修复,都要补充固化的测试 case,防止未来再次产生同类 Bug,同时也刻意去检索一下其他地方是否有类似的问题。

谁说你是配角

对话 1

A:我想沟通一下关于我在团队的定位,什么时候可以带人,什么时候可以作为 XXX 方向的负责人 ?

B:在我们这样的一个技术团队里,title 真的特别不重要,负责人也不是靠 “任命” 的。那些主动 “操心” 业务,主动 “own” 和推动一些关键事情,主动承担产品中最艰难的技术挑战和攻关任务,逐步在团队中形成自己影响力的人,会自然而然地成为所谓的 “负责人”。

对话 2

A:数据清洗的事情我来跟进吧。

B:好呀,这个是数据埋点的文档。

A:嗯,咱们业务上有哪些数据指标,具体该怎么定义?数据指标的清洗规则你也写帮我写到文档吧 ?

B:这个做事的思路不太对,不要做文档的 “翻译官”,应该去主动理解业务,深度思考,去 “主导” 这样一个数据指标的定义和清洗的工作,只有这样,你才能真正收获到业务经验。我们面试刷掉的很多候选人,说他们深度一般,有时候往往不是说有多么难的算法没写出来,也不是说他掌握的技术黑科技不够多,而是他们多年来一直重复着简单的 CRUD 或者类似的文档翻译工作,没有主动思考,没有理解业务,说不上来为什么选择这样的技术方案,说不上来为什么 API 或者数据流应该这样设计。

对话 3

A:这个 UE 的交互好奇怪,你觉得合理么,为啥不主动去改进一下 ?

B:额,是有点怪,不过 PM 也没有给出详细的 PRD 文档讲清楚这个地方怎么做呢。

A:嗯,那 XXX (另一个地方)在 PRD 文档里面有详细描述,为啥也没有按照文档来 ?

B:我觉得那样设计不合理啊,PM 有认真思考过么,我看其他家竞品都没有这样的设计呢 !虽然我提了建议,但是 PM 也没同意。

A:感觉这件事大家的沟通很不到位,大家拉个会再认真沟通一下吧。另外,这件事也引发了一个思考:为什么 PM 和研发互相都无法说服对方 ?

经过这些事,大家逐步在形成一种 “owner” 意识,也理解了如何才能当好 “主角”:

  1. “主角” 不是 “任命” 的,而是一种待人做事的心态,在任何事情上,只要足够有 “心”,人人都可以是 “主角”。

  2. “主角” 之所以能够成为 “主角”,之所以说话的分量很重,之所以有足够的影响力和说服力,靠的是他 “背后的功夫”。当你对面临的问题思考足够深刻、见解足够独到,当你能拿出有理有据的证据和数据,你就自然而然地越有 “发言权”,说话就自然而然地越有 “说服力”。

延迟满足

最后再分享一个问题,有段时间,团队成员都很沮丧,因为由于产品还处于早期阶段,没能赶上潜在业务方的产品规划节奏,因而暂时性地失去了这样一个目标大客户,给团队带来了不小的心里打击。后来我们在抖音上找到了一段很棒的视频进行自我安慰,视频的文字描述大概是这样的:

“如果你喜欢一只蝴蝶,千万不要去追,因为你追不上她。你应该去种花、种草,等到春暖花开的时候,等到草长莺飞的时候,蝴蝶自然会飞回来。如果你喜欢的那只蝴蝶没有飞回来,怎么办呢? 你有了花,有了草,有了阳光,有了雨露,有了独特的魅力,那只蝴蝶没有飞回来,其他的蝴蝶会飞回来,比她更好的会飞回来,这就叫做花开蝶自来,爱情如此,生活如此,事业也如此。”

如今大家依然激情满满,也信心满满,不断默默提升着自己,耐心打磨产品,期待着 “花开蝶自来” 的那一天到来。

结语

自从加入公司以来就一直很喜欢咱们的文化,正是在这样正能量的文化氛围下,才有了整个团队不断革新自我不断改进的源动力。经过这一年的磨合,我相信整个团队已经形成了非常不错的文化价值观和做事的风格,也相信这样的团队会拥有着非常强的战斗力和凝聚力。

目前团队也非常缺人,欢迎大家多多内推优秀的人才给我,也欢迎大家关注我的新浪微博 @卢_俊 或者 微信公众号 @Jhuster 获取最新的文章和资讯。