小码农转型Tech lead 日记

年初公司进行了历史上最大的一次裁员,很不幸我们这个方向的组员有几位朋友中招(不过他们之后也找到了更好的工作!)。不过最震惊的新闻是我们大组这个方向的Tech lead也被裁了(也侧面说明了这次裁员真的是非常随机,不完全看工作评级)。那天早上老板私信叫我先消化消化这个消息,没隔多久就找到我,大概意思是组织上觉得你比较适合接任这个Tech lead的职位,问我意下如何。

虽然感性上我并不觉得自己有啥把握,但是从实际角度出发我并不觉得自己可以说不,要真这个时候推诿,那也太tm怂了。

从一月底开始到现在快过了一年了,这个tech lead前期当得也并不舒心,很多时候自己并没有觉得自己当了lead有多自豪,反而因为2023硅谷从没停过的裁员(按现在的形势2024只会更差)而担惊受怕,生怕因为自己做错了什么决定导致把原来就不稳当的工作变得更加摇摇欲坠。

不过另一方面来看,坏消息多了人也就麻木了。。。。所以按照我每三个月更新一次的规律来说,这个月也是时候写点这一年当TL的总结了,希望能给马上或者已经在TL路上的朋友一些启发。

烂摊子

前任TL刚开始接手的一个烂摊子项目就这样顺理成章的到了我的手上(优化一个系统用例)。刚开始接手的时候完全低估了这个任务的难度,再加上所谓的"新官上任三把火",我开始着手自己一个人做技术调查,写分析报告,甚至把方案都做好了。但是事实证明我试图用这种单兵作战模式 来对抗一个系统级别的优化是多么幼稚,现在想想都觉得可笑。随便来一个稍微senior一点做过系统优化的工程师都可以把我噎死。

如何能证明本地环境的复现和生产环境的一样?P95怎么在实验室环境下复现?

如何利用CI工具来验证优化结果?

如何利用CI工具来保证版本迭代之后不会再出现类似问题?

单个系统用例有没有可能被别的看似不相关的模块给影响导致变得更慢?

等等,在我刚开始接手的时候我甚至完全没想过这些问题,只关注在代码层面从系统用例开始到结束是否有可以优化的地方,忽略第三点甚至导致了下一个版本出现了regression,导致数据看起来非常难看。

事实上,安卓framework发展至今,大部分开发已经不会写出什么很明显很sb的代码了,android best practice大家都会,你很难能从局部找到能优化的东西了。就如现在出现的ANR,大部分并不是真的有人在主线程写了什么IO一样。我把所有精力放在了自己一个人"找茬"上,就是一个大错特错的决定。

作为一个tech lead,应该是先不要聚焦在局部,而是先把大方向定好,然后找到合适的人和组再布置细节 , 更不能啥事都想自己出风头布置好一切。比如复现应该找什么人帮忙,QA?还是测试infra的人等等。这些在小公司看似比较顺其自然的东西,在大厂都是需要提前很久通气的。最简单的理由,优化系统用例是我的KPI,但这个是QA的KPI么?如果不是,他们为啥要帮你?怎么说服对方帮助你?

最后事实证明,这个单个系统用例优化,我把5个团队的人都用到了。。。。

难办?那就别办了咯

这一年代码越写越少,文档越写越多。很多时候会有一种不应该有的失落和不安全感。回想当年我在亚麻的时候,离职那一年的代码总量比大组的第二名还多一倍,可以说是"遥遥领先"。

这种靠代码量带来的"安全感"可以说非常的不正确,从某种角度来说这只是一种惯性带来的麻木。说白了,习惯了每天都是写代码,偶尔开点小会的工作生活,到现在开始要为整个团队负责而做很多的小而且杂的事情的这种转变,给自己带来了不小的冲击。真难办啊。

举个例子?

现在每周1-1 meeting就至少有10个。最夸张的是中间那几个月的周三,从早上八点半开始到十一点半全是会(早起和伦敦那边开会)。吃完午饭开始一点半到四点接着开,中间几乎没有空隙。我知道这个强度估计很多朋友会嗤之以鼻,不过考虑到我开始工作之后就一直待在一些讲究work life balance 政治正确的外企,这个强度我觉得对我自己已经是很大的挑战了。

除了开会之外,像我之前说的,很多小而杂的事情会找上我,而且会很大程度的干扰你的注意力,打断你的思维。比如写文档写到一半被人私信说有个VP level issue,需要TL来诊断一下,这你不能不管吧。等你看完这个issue,文档的思路也断了,你还得重新捡起来。

诸如此类的事情还很多。总而言之,切换任务的脑力(context switch)需要准备好。人脑和CPU之间还真有点相似,至少在多线程上下文切换上面,两者有惊人的相似,都是相当耗费资源的事情。

但是对我个人来说,更大的挑战是说服自己要拥抱这种改变,减少不安和羞耻感。和从前相比,开了一天会vs写了一天功能代码的成就感不可同日而语,但是我必须说服自己这种改变是必要的,且不代表我没做事情,这一天并不空虚。总的来说,工作时长可能并没有增加,但是心更累了。

说真的,现在能给我两个小时专心解一个bug,在没人打扰的情况下写点fix代码可真是香啊。。。。

二十一世纪什么最珍贵,人才!

当了tech lead意味着你成为了团队里面的字典(英文可以说是go to person),谁有事没事都会找上你。团队里面的稍微年轻一点的朋友也会依靠你发活派活做。因材施教就变得非常重要了。

同样都是junior engineer,都有升职目标,一个缺代码量,一个缺design doc,你在布置任务的时候就需要有针对性的安排。

比如作为Tech lead,我需要整理出短期内

容易复现,且有明确修复逻辑的bug

给那位缺代码量的朋友、

小型但需要设计文档的feature request

给那位缺设计文档的朋友。

怎么整理,什么时候整理,就是TL需要规划的了。

同时,怎么让团队的新成员顺利onboard 也是一大难题。系统组很难像产品组一样做一个端到端的介绍,很多系统功能甚至都没有一个明确的产品上的触发点。让新成员能有一个相对感性的对架构的认知是每个TL都必须面对的挑战。方法很多,但是重点是不能不做。

安啦!干点别的不香么

刚入职的时候,觉得自己再职位上并没有什么野心,能每天都学点新东西就足够了。但是真到了这一天,又不可避免的开始幻想,看看自己什么时候能再往前走一步。什么时候才能再升一级变成了不只是一个念想,而是一种负担。

就像苦苦追求的女神要是完全不理自己还好,结果女神虽然拒绝了你,但是时不时却又会出来撩拨一下,如同隔靴搔痒。

怎么样可以平衡自己的上进心和过分的焦虑,也是每一位刚刚当Tech lead的朋友需要面对的,我也是。

每天下班健健身,练一下吉他🎸,每个人除了工作之外应该也需要别的活动来充实自己,暂时忘掉工作一会会。

大家周末愉快!给各位献个丑,来一首<我是一只鱼的solo>

【我是一只鱼 solo】 www.bilibili.com/video/BV1RN...

相关推荐
数据小爬虫@6 分钟前
如何使用爬虫获取淘宝商品详情:API返回值说明与案例指南
android·爬虫
Ritsu栗子12 分钟前
代码随想录算法训练day63---图论系列7《prim算法&kruskal算法》
c++·算法·图论
一只码代码的章鱼19 分钟前
数据结构与算法-图论-最短路-单源最短路的建图方式
算法·图论
黄金龙PLUS28 分钟前
十分简单的流密码算法RC4
算法·网络安全·密码学·哈希算法·同态加密
我想吃余33 分钟前
【初探数据结构】时间复杂度和空间复杂度
数据结构·算法
a_j5833 分钟前
算法与数据结构(环形链表II)
数据结构·算法·链表
愚戏师1 小时前
从零到一学习c++(基础篇--筑基期十一-类)
开发语言·数据结构·c++·学习·算法
音视频牛哥1 小时前
深度解析SmartGBD助力Android音视频数据接入GB28181平台
android·音视频·大牛直播sdk·gb28181·gb28181平台·gb28181对接·gb28181语音广播
小仙有礼了2 小时前
ArcGis for js 4.x实现测量,测距,高程的功能
javascript·算法·arcgis
轩源源2 小时前
unordered_set和unordered_map的使用
开发语言·数据结构·c++·算法·哈希算法·unordered_map·unordered_set