度厂回忆录

 

W 说,“当你不能够再拥有的时候,你唯一可以做的,就是令自己不要忘记。”

我想起来成才从 A 大队走的时候,他问许三多,“咱们当兵三年了,你能想起其中的每一天吗?我想念七连,又臭又硬的钢七连,我使劲想,可我想不起一件事,一个人……”

不久后的某天,我也会离开百度,就像成才当年对 A 大队的向往,我也曾经那么向往在百度工作。不同的是,当离开的时候,我开始怀念在这里的每一天。我突然想要记录这里的每一件事情,这种感觉在我提了离职之后愈加强烈,以至于那么一瞬间有后悔的冲动。

当说出了告别,才意识到有多么不舍。当意识到不能够再拥有的时候,我告诉自己,记录下来不要忘记,这就是我的度厂回忆录。

1. 新兵报到

工位最底层的抽屉里,至今保留着一张纸,上面是入职的流程。工位来回搬了几次,这张纸却一直保留了下来。看到这张纸时,脑海里就浮现刚入职时的样子。那时还在大厦,经理给申请好了显示器放在正式工位。当时工位紧张,更早的同事都坐在临时工位,纷纷羡慕我刚来就有正式工位可以坐。这是我来百度的第一个小幸运。

入职后,遛弯时,同事问我串讲是哪天。当时一愣,我是头一次听说这个名词,赶紧回去问导师,原来就是讲清楚自己即将负责的系统。事实证明,我低估了这个“讲清楚”的深度,第一次串讲用了三个小时,没有会议室,我在过道里站着对着白板讲,同事有的坐在旁边的沙发上,有的坐在沙发背上或者站着,讲的我头昏脑涨,怀疑进错了部门。最后串了三次才通过。

几天之后,还是那个沙发,我跟两个同事一块坐在那里,用对面的电视投影我最新修改的代码,我给他们讲这次修改的方案和代码 diff,他们一边听一边 review。

过了一段时间,我们搬到了现在的科技园。不久之后,我开始独立负责一个系统的设计,设计完成后担心有问题,希望有高T能给 review 下,就在会邀上加了部门两个T9,hi 上跟他们说明了下。惊喜的是,他们确实来了,很认真的提了一些建议,有优化的点,也有分析问题本质看这个问题是否确实需要解决的。至今我还很感谢他们,当时我是T4,这是我第一次真切的感受到技术上的简单可依赖。

如今看惯了人来人往,当时组里的同事,大都已经离开。几经变换,物是人非。草田男有首诗,放到这里特别贴切,“回首处,花明柳暗,独立斜阳念旧事。却原来,星移斗转,慨叹牛犊初生气。”

2. 打江山与守江山

各种原因,我们几个人来到了现在的架构组,这种组织结构分分合合的变动一直让人费解。

第一件事情是完成 XXX 的抓取环,有点类似于打江山,属于前瞻性的一个技术积累的工作。当时我们经常搞到半夜里下班,打了鸡血一样,不过也是在那时,第一次开始怀疑这些工作的意义。

我看到的是一个 KPI,冰冷的数字,不了解其背后的含义,我怀疑我们达成与否只是这个项目完成度的一个标准,对于用户能够感受到的产品实际贡献是什么,没人说得清楚。事实如此,仅有数字没有意义,为了数字付出的这些都化作泡影,逐渐无人维护,努力也没有意义。这种工作应该投入多少人力,是需要反思的。同时,在那时我开始反思的,是架构和策略的合作方式,这个思考一直伴随着我在度厂后来的日子里。

之后很快开始了一段时间的稳定性之路,类似于守江山。至今回想起来,那段时间的技术成长是很大的,我把其中的所思所想记录在了追core笔记里,在硬着头皮解决这些琐碎问题之前,从来没想到过如果深入思考下去,可以想到很多乃至系统设计的大问题,想了很多之后,我开始自己定会议室,封闭去解决这些问题。我很感谢当时的 leader 和自己,我们没有考虑太多,只是希望把自己负责的系统 own 住。

跟上一件事情一样,这里我内心深处也仍然充满困惑,对于离线系统来说,距离用户端产品很远。修复 N 个历史 core 、系统不再 hang 住的意义有多少,很难跟用户端量化收益清晰挂钩。有的系统简单粗暴禁止出 core 同样看上去可以解决这个问题,而且人力花费的更少。我只知道的是,通过这次封闭,op/rd 终于不再不得不面对这个总出问题的系统了,这个系统没有继续腐烂下去,有了明确的开发流程、文档、单测,同时对外有了更多可见的指标。

从这个角度想清楚后,我认为这个事情是有意义的。我觉得我们是什么样的人,不是外界给我们贴了什么标签,例如你的级别、你是银度还是什么,也不是我们完成了什么,而是我们在其中做了什么,分析 core 栈和 ulimit -c 0同样会完成 0 core 的目标,但做的事情不一样。

再后来,系统指标变得可见后,暴露出更多可优化的点,我们跟策略开始重构系统。由于交流的非常频繁,过程很愉快,我们都会站在对方的角度去考虑问题,例如系统 diff 测试方案、如何对外无感知的上线、期间遇到的稳定性问题与项目优先级的 pk 等。当系统逐渐变得臃肿后,除了不断优化,架构、策略解耦变得比较重要,我在之前困惑的架构策略合作方式有了一个初步的答案,当时是比较满意的,合作也非常的深入,逐渐的,我开始对策略也产生了很大的兴趣。

慢慢的,我的工作内容分成了两条线,一条是基础架构的改造,例如日志与监控、rpc与服务发现、容灾等,一条是业务架构的改造,这条线上,跟策略合作的更多。我简单的把这两条线理解为守江山与打江山,我们希望在系统越来越稳定和可扩展的基础上,支持更多的业务。不过同时,熟悉的人也在慢慢的离开了,我跟更多的人慢慢的熟悉起来。在这期间,我遇到过内部赛马,遇到过坑与锅,遇到过之前无法理解的各种混乱,遇到过在业务需求和架构目标之间选择,技术提升不多,但是不断地促使我思考这个问题:如何做成一件事情。

ss 常挂在嘴上的一个词是“丁香花时代”,说起来的时候掩盖不住的自豪,我很羡慕她。我挺能想象那个时代的快乐,越来越多的人使用和认可百度,流量每天在涨,对组织结构、技术难度每天都有新的挑战。事实看,他们经受住了,并且铸造了那个时代一个伟大的百度。这大概就是打江山的快乐,可以做一个锋芒毕露的骑士,开疆拓土,纵横捭阖。

可是守江山不一样了,我们或许要收起锋芒,尝试看的更远,我想起来某期简单之约上 E 说的悄悄的进村打枪的不要。韬光养晦,厚积薄发的去做一些事情,慢慢的,把失去的阵地一点点抢回来。对组织结构和技术难度的挑战更加隐蔽和强大,因为可能某个产品发布会后,你发现你事先的功能别人做的更好,或者你幻想的功能别人实现了。

如果把整个厂子的运作看做一个大的机械的话,每个组的功能都是其中一个齿轮,这些齿轮的联动使得机械工作起来。

前面提到过我经历的组织架构的改变,不断的在继续。无论打江山还是守江山,这类变动的出发点大概都是希望齿轮重新布局,联动效率更高。可是在这些变动期间,有些齿轮被遗忘,却没有丢弃,花费大量的人力维护,也造成了工作上很多收益的对比现象,比如维护旧的齿轮或者干脆造一个新的。很多人走在接手遗留系统或者被接手的路上,疲惫不堪,我见过一个 crontab 任务,每小时运行1次,输出时间到日志。这个日志文件,从 2014年打印到了 2019 年,比我来百度的时间还早,可是对应的脚本已经无人知晓。怎么保持这类模块的可维护性?文档?可文档放在哪里?平台?可怎么防止总在新造平台?组织结构变动的时候,谁来 review 这些问题?

我们通过 okr 想清楚了自己想要什么,可是不确定该丢弃什么,所以总在不断地修订。

就像前面说的core的问题,不解决就一直放在哪里,越放越多,越放越古老,直到无人能解决时,有人跳出来说要搞一个新的系统。搞了新的后,老的又迁移不动,被遗忘却无法丢弃,产出 N 个 XXX 系统。

我想这里有一个熵值,组织变动后熵增还是熵减?

3. 拒绝油腻

入职满5周年的时候,我默默的告诉自己,拒绝成为一个油腻的中年百度人。

接触的人越多,感受越来越不一样,最开始的时候,我接触的是 owner 这个名词,第一次听说时,我觉得很贴切,有问题找对应 owner 总是对的。 PMO own 住进度,rd own 住系统,QA own 住质量…,每个人各司其职后,做事情也变得简单。很幸运在度厂遇到了很多这样的人,包括有些 PM ,他们愿意给我这个缺乏产品 sense 的人,仔细的讲清楚为什么这么定对架构的指标;项目 owner 详细的介绍我负责的系统在项目中的位置和作用,让我学习到了更多。

不过同时,经常感受有一个很大的问题,就是我们会反思问题,但是反思的很多 todo 无人 own 落地,特别是跨部门时。常说要对齐目标,或许只是因为有太多对不齐。我遇到过一个月的联调,也遇到过排到 2020 年的解决方案,这些不是最可怕的,让人无奈的是没有 todo 或者只是一句简单的,xxx 希望有个 todo,但是究竟是谁跟进?谁受益么?

模棱两可的边界和结论总是让事情变得复杂,不如直截了当的说可以容忍不解决。

成为一个模块的 owner,意味着这个模块所有大大小小的问题,都应该由你来判断,来决定如何让这个模块更有生命力。判断后可以是怎么解决,也可以是为什么不解决。做稳定性时,线上频繁遇到一个 oom 问题,因此给 brpc 提了一个 bug 卡片,对方(当然不是INF在负责的那个时期)纠结标题的措词,让人哭笑不得,在交流实际问题时又让人油腻不堪,直到无力跟进。我们就像斗地主一样,一边出一个经理,另一边就出一个高级经理,无数个群里不断拉人时,我总感觉像是在出牌。

那个问题到现在也没有解决。

Sanjay Ghemawat 在 leveldb 里一段 TODO 的代码,有人修改后,他就给了 comments:https://github.com/google/leveldb/pull/698 虽然不知道真假,大概率是真的吧。但是这种纯粹的感觉让人很喜欢,这种态度是我理想中自己想成为的百度人的样子:以 owner 的角度负责自己的系统:每一个 todo,每一个 core,每一行代码和文档。

4. 再见

说了这么多碎碎念,总要说再见了。

我知道其实上面问题可能都不是根本原因,在度厂,我们都是对方的一面镜子,你看到什么样的问题,你也在造就这样的问题。每个人都是甩锅与接锅,埋坑与填坑的综合体,无论度厂变得更好或者更坏,我们都在其中助了一臂之力。我不认可基因或者文化一说,可能我们需要的是一个好的产品,去提升市值和士气。就像 ss 说的,当市值低的时候,有些早就存在的问题,会暴露出来成为大家抱怨的问题。可是下坡路越走越快,越来越多的人看到问题,在意细节,不认真对待解决的话,这些都会成为我们某处的磕磕绊绊。每次沟通,愿我们带着问题的解决进度提升士气,沟通 XX 事件时,不要笑,同学们会哭,也不要哭,敌人会笑。

度厂回忆录,想想其实也是自己成长的一段记录,那么想写下这篇笔记,原因大概也是如此。自从来到北京,待得最久的就是这里了吧,在这里娶妻生子,在这里迈过30岁的生日。在30多岁的年纪里,我仍然在尝试重新去理解这个世界,接下来,即将开始一段新的征程。我依旧会每天坐着地铁,路过很多地方,这些地方都很像,相似的楼房、相似的推到的废墟,相似的地铁站排队的队伍,被护栏固定出俄罗斯方块里的形状。我在新的地方,也会有一个相似的工位和电脑。我怀念百度的食堂、百度的工位,却再也不怀念百度的工作方式。

再见了,远去的草原五班;再见了,过去的五年;再见了,百度,愿你重生。