今天是 2024/10/21,中国还没有爆发战乱,傍晚的托乐嘉街区万家灯火,平静祥和。我一个人在书房静静的想着这一个多月来的 经历,以及这 2 年的付出。

2022 年下半年 -- 初入华为

我是 2022/09/01 入职华为 OD 的,当时还写了一篇博客去 记录整个面试过程。入职的时候,川哥就说,希望我尽快转华为,帮我列出了转华为的四个指标:

  • 可信考试专业级证书
  • 入职满一年
  • 连续优秀的绩效(即要连续为 A)
  • 部门有 hc

其中,前三个都是我可以控制的,他希望我尽快地完成它们。于是,我自入职第一天起,就把转华为变成我的主要目标。

经过 5 个月零 10 天,在 2023/02/10,我通过了最后一门可信考试,顺利地取得了专业级证书,而且这个拿证的速度相比于和 我一起入职的几个 16 级的正式员工来说一点不慢,转华为的第一个指标完成

因为刚来这边,很多业务还在学习,再加上 09/01 才入职,工作时间相对较短,所以这半年的绩效为 B。

2023 年上半年 -- 第二个 B

2023/02/10,我从 ARP/ND 组被换到了 FWM-IFM 组,业务又得从头学起。抱着“在战火中成长”的心态,我承接了 23.0 版本项目组的 重点需求,6 人月,3K 代码,涉及协议 IFM 和 FWM-IFM 两个组的业务。那时项目组的 PM 是旭哥,也是名 OD,上海交通大学计算机 毕业的,刚拿了 2022 年的全年 A,我觉得他是最有希望转正的,完全没有料到后面的事情。

因为我业务不会,边干边学,导致项目延期严重。旭哥做为管理者,天天被上面的领导批。他被上面领导批烦了,就来催我,问我 到底什么时候可以完成,我业务不懂啊,所以也估计不上来,后来慢慢的,他也不问我了,每天就陪着我干。我们两个经常十二点后,一起 拿着夜宵走出公司大门打车回家。

经过我的不断努力下,这个一度被上层领导认为完不成的需求还是完成了,质量还不错。转测后收到问题单 2 个,缺陷密度 1.5K/个。旭哥 也总算松了一口气,还我申请了金网络嘉奖。到上半年评绩效的时候,我觉得应该是可以拿一个 A 了,结果下来是一个 B,给的理由是做的 需求太少了。嗯,好吧,确实有点少,只做了一个嘛。这个结果下来的时候,我心中是很委屈的,但是没有办法,活还是要继续干。王鼎钧说过: “知足常乐是在竭尽全力后自己对自己讲的话。”我给自己说:“知足常乐,奖励自己一朵小红花~”。

2023 年下半年 -- 第一个 A

下半年遇到的第一件事:旭哥要走了。真正的原因他没有和我讲过,我在这里也说不清楚。但是得知他要走了我真的很难过。一个是上半年, 我们一起共事,作为管理者,当我的项目遇到困难的时候,他从来都没有责怪我,而是和我一起想办法,给我一种他真的是和我站在一起的感觉; 另一个是,同样是 OD,他已经获得了一个全年 A,只要再拿一个半年 A 就可以转华为了。我一直把他做为我的风向标,希望他转正了,传授些 经验给我,让我少走些弯路,谁曾料到他就这样走了?

上半年的绩效结果不如意加上旭哥离职,给我的打击很大,我一度觉得,转正只是个传说。但是工作不会等我,每天还是不断地有活派过来。 在这个版本中,我作为开发主力,承担了大部分的需求开发任务。其中有一个 cache 需求,是我进公司以来做过的最难也是我至今最得意的需求。

大致是这样的,外界反应我们对外接口性能不达标,为了解决这个问题,我们决定为最重要的 2 个 DB 表增加 cache。涉及到增删改查,以及操作 顺序的问题。这个需求有 3 个特点,第一个是它是我第一个采用 TDD (Test Driven Development) 方式完成的需求,因为一开始专家们对采 用 cache 这个方案到底可以提升多少性能也不确定,所以建议我先用 LLT 写白盒用例的方式验证一下,我一想,那不如试下 TDD?直接先写测试用 例,然后再完成代码。白盒用例显示,使用 cache 的性能是之前的百倍以上,这下才最终确定采用 cache 这个方式。而又因为白盒用例直接按照 设计手册设计,保障了功能实现和设计文档一致,也就保障了功能代码的正确性。

第二个是它提升了我对 C 语言抽象数据结构的理解。在 C 中,任何的数据都可以用如下这个数据结构来表示:

struct anyDataType {
    void *data;
    unsigned long int len;
};

因为在计算机内存中,所有的数据都是一串连续的 Byte,我们只需要它的起始位置加上它的长度就可以确定这个数据。回到这个需求,虽然是只是为 2 个 DB 表搞 cache,但是为了扩展性要求,我们有几十个 DB 表,如何使得它们可以共用一套 cache 代码,每次只需要增加少量的代码就可以完成一个 DB 表 的 cache 的增加呢?我采用的就是上述的这种数据结构,并针对这套数据接口去完成增删改查的接口。设计思想就是我不管你的 DB 表实际长什么样子,我只关 心你传进来的数据在内存中的位置和大小。这样设计很 UNIX,在 UNIX 的设计中,everything is a file,而 file 就是一连串的 Byte, 共用一套 system call 接口。

第三个就是这个需求增加了我对多线程的理解。在需求中,接口是提供给外部组件用的,即可能在多个组件线程中调用,这就涉及到多线程访问的问题。对于 全局变量,在多线程环境中是一定要加锁的。由这个引申出来的含义是:只要在线程间共享的内存访问都需要加锁。我因为没有重视这个问题,在代码调试的 时候大包就直接重启了……

最终,这个需求在我手里顺利交付,质量还不错,收到了 2 个问题单,缺陷密度为:0.75K/个。然后,我获得了全年 A~

2024 年上半年 -- 第二个 A

到了 2024 年上半年,我主要是完成版本过点及维护导入工作。过点的话就是不断地改问题单,刷表格,每个版本都差不多。 维护导入的话,则对我来说是一个新领域,可以简单说一下。维护导入就是做补丁。补丁和需求有一个最大的不同点,那就是 除了要实现功能外,还要考虑如何恢复。客户用华为的设备出了问题,是指望你的补丁上去后设备直接就正常了,是不可能接受 设备重启之类的恢复手段的。有时候,这个恢复手段的方案比功能方案还要复杂很多。导入期间我遇到的一个补丁就是这样的, 功能已经早早实现了,但是恢复手段方案前前后后改了十几版,最终用了上百个补丁去验证这些方案,最终才敲定下来。当时 时间也很紧张,要赶补丁的交付节点,为了进度,我经常搞到十二点之后。经过我的不断努力,最终这个补丁还是赶上了和客户 约定的补丁交付节点,成功地交付了。我也因为这个补丁,获得了维护向在研的金网络嘉奖,最终在上半年的绩效考评中获得了 入职以来的第二个 A~

2024 年下半年 -- 启动转华为

2024 年 8 月份的一天,HR 突然告诉我可以转华为了,要一天内走完所有流程,接着就是两轮技术面试,HR 面试,主管面试。 通过后等了一个月,就收到 offer 了,接着就是预约体检之类的流程了。故事有了一个好的结局~

后记 -- 感谢大家

在入职的这 2 年多来,我无时无刻地在为转华为这个目标努力,而今天这一目标终于实现了。其实,我们整个大组像我这样的候选人有很多,论学校, 有北京大学的硕士,有电子科大的硕士,有上海交通大学和同济大学的本科;论工作努力程度,有可以为了需求连续三四天加班到凌晨的卷王,还有可以一 个人 cover 一个组主线问题的业务高手。而我,或许是做事比较认真,或许是平时坚持读书导致自己比他们多了一些专业知识,又或许是自己的运气 比较好,总之,我成了部门里近两年唯一一个成功转华为的人

离职休假前,我感谢了招我入职的川哥,感谢了一直在帮我争取绩效的主管骥哥,感谢了在维护的补丁经理华民哥,还有帮我走转华为流程的卉姐。现在 想想,其实自己最应该感谢的是一直在我身边陪伴我的家人以及我自己。感谢我家宝子,这 2 年来一直鼓励我,包容我,你是我的 muse,是我心中最柔软 的地方。感谢我的父母,你们是我最坚强的后盾。还有你,小郭,这 2 年来你很努力,为了生活,为了理想,在认识到“别人的地板就是自己的天花板”后, 依然选择鼓起勇气去迎接明天,坚持“心中有火,眼里有光”。

愿自己在日后,认真,勤奋,过好每一天~

以上。