看 入职🇺🇸谷歌不到半年被裁🚬 这个帖子有感。
自己工作原因也有接触过(疑似)转码员工,大概有以下特点
- 真的很吃力,尽管也很努力(经常能看到他夜里两三点发 diff request)
- 能写代码,但是因为 quality/logic 不过关会被各种 review 打回去,一般人搞半天,他会搞小一周甚至半个多月
- 写出的代码 bug 百出,基本是他发一个 diff,你就得不停的给他擦屁股
- 基础差,unix tools chain 不知道,debug 不会,编程语言大多只会复制粘贴 stackoverflow
以前经济环境好时这样的人应该也能糊弄过去(有在 Google 见过一年提交 3 个 diff 还能拿 exceeds 的老印),但现在,恐怕很难搞。就我们组而言,今年到现在已经灰了三个头像,都是刚入职没多久就被离职。
作为国人,也想过拉他们一把,但实在拉不动。
因为,如果你帮他搞项目,会有以下情况:
- 项目搞出来,他拿 credit,你是雷锋,以后他赖上你
- 项目搞出来,你拿 credit,他在划水,被开,怪你指导不力
- 项目没搞出来,你背锅,因为指导不力
- 项目没搞出来,他全责,但他会怪你没有指导好
工作这些年,1234 我全经历过,没有一个双赢选项,不是自己吃翔,就是一起吃翔。
所以面对新人我一般都会用一些 task 来评估对方的水平:
如果水平没问题,ok,好好带。
但如果不靠谱,我能跑多远跑多远,莫挨老子。
不要想着什么抱 TL 大腿,都是职场人,凭什么要求人家做雷锋。
看过不少转码的教程/经验,我的感觉它们有一个共性:过于追求捷径。
说白了就是别人吃十碗饭吃饱,这些教程是要跳过前面九碗直接喂你第十碗,还号称有效。
这不骗鬼么。
真以为刷几百道题,靠大厂的面试漏洞刷进大厂,就万事大吉了么?
这不和小时候爸爸妈妈告诉你考上大学就解放了一个意思么。
别做梦。
码农是一个需要持续学习的工种,既要了解技术,也要了解业务,缺一不可,不是刷几百道题的事情。
写程序不受物理规则限制,所以不同于其它工作,对程序设计的理解,工具使用熟练度,与人沟通能力,这几个维度叠加会把程序员之间的差距层层放大。
简单的说,最好的搬砖工搬砖速度可能也就是我的十几倍。
但优秀程序员的工作效率会是菜鸡的几千几万倍。(这还是在菜鸡没有负向输出的前提下)
所以如果只会刷题,哪怕刷进大厂,这也只是个开始。
别看着小红书三分地上各种转码成功拿大包。过一两年再看看?
前面跳过的九碗饭,迟早加倍还。
下面我 inline 下评论区的一些问答,以便阅读。
关于抱大腿:
我大概理解你说的抱大腿,应该是调侃的说法,我觉得比较正式的说法是跟对 mentor。
mentor 不需要高级别(当然高级别也不太会鸟你),一般 +1 指导技术细节,+2 指导人际交往和项目方向。 需要注意 mentor 是用来帮你避坑指方向,而不是帮你干活(不然就变成我文里提到的雷锋模式:要么搞的双方都不爽,要么搞成职场 pua)。
新人要学很多东西,大厂都会给几个月(甚至一个 half)的 ramp up 期,要利用好这个阶段各种学习,各种试错,知道什么问题该问什么人。ramp up 之后你就不再是新人,即便是 e3/l3,大厂的要求也是能够独立工作,而不是让他人 hand held。
ramp up 可能是刷题转码人最痛苦的阶段:毕竟刷题根本不 cover 这个阶段的 skillset 。如果熬不过去,就会进入死亡螺旋:
- EM TL 觉得你不靠谱不给你项目
- 你没有项目没法实践提升水平
- 几圈下去然后 pip
- 刷题换下一家公司回到 1)
难道真的只有重读本科来弥补?
不需要重读本科,但个人感觉需要:
- 过一遍计算机核心科目,数据结构算法操作系统编译原理甚至是计算机网络。
- 过一遍常用开发工具链,不同公司不一样这里就不举例,大公司都会有 codelabs 按照教程走一遍即可。
- 观察身边大神的日常工作,扩展自己的知识边界。
1) 2) 网络上应该有不少教程,但 3) 似乎没什么人提及。然而个人感觉 3) 的帮助可能最大:例如观看大神调试程序写代码,可以发现很多自己的 unknown unknowns,从而快速查漏补缺,提升水平。
我现在就是3)大神代刷练号模式,看他们如何approach问题自己如何debug比我再上个cs本科都有用,日常和他们学习真的受益无穷,相当于牛校博导在指导我这个小学生🚬
3) 是非常有效的学习方式。
这也是现在居家办公的一大弊病:新人很难得到近距离观察大神工作的机会,同时大神也没啥 incentive 去 office 毕竟基本自己都能在家搞定。
所以疫情之后入职的新人很惨:居家办公挠破头,去 office 则是菜鸡互啄。如果碰到这个环境,不要说转码,哪怕科班也很难搞。
我一直很佩服刷题好的,因为我面试几次死在做题,只要让我谈项目和我做的事情我就可以谈很多,但是做题gg后面连抢救都没机会了,直到今年我发现有些刷了几百道题但是git都用不清楚,我感觉大家做题可能是高考一样的策略,这个机制八股文也好做题也好本质还是不缺人了一种硬筛选机制,以前力扣也就二百多道题现在已经两千多了
刷题的问题,在于面试者无法区分被面试者真的是实力足够能做出题目,还是实力不足但通过反复刷题碰到原题。
google 之前还会鼓励面试官想自己的题目,而 fb 则直接要求面试官去使用题库里的原题。原因也很简单,题目相同,便于 calibrate,但这也水进了刷原题背八股文的面试者。
个人感觉大厂的面试思路是这样的:既然你能做出这些算法题(甭管你是刷题还是能力强),那你智商起码在线,反正都是 at will employment,接下来观察:如果你靠谱,ok;如果你不靠谱,滚粗。
早年经济形势好,大厂各种开闸大招人,manager 也需要人头扩大 scope,自然是不管真品赝品多多益善。现在经济形势拉胯股价腰斩加 hiring freeze,滚粗的概率自然越来越大
我也有个问题,可能和我用的技术太杂有关。就是写到一定阶段之后觉得非常地疲倦,对各种技术非常悲观,无非就是用一个新的东西实现某些功能,各种模块化的工作千篇一律,就像流水线上的女工,写一个页面和写一百个页面一样,bug也是基本听完别人描述就知道问题,感觉目前的工作像一潭死水。
从你的描述来看,你的工作内容大致对标湾区 tech 公司的 e4:可以快速完成给定任务,修复 bug,但并没有独立带队做项目,或是帮老板挖坑招人打 scope。
这么多年明显感觉自己不具备成为技术金字塔头部的天赋,也造不出那种创新牛逼的轮子来。就算做架构,也没觉得有多不可替代,只是经验多一点而已。最近准备出去读书,潜心研究下底层的东西
你这里可能有一个误区:技术能力越强才能级别越高。只有精通各种技术,才能进入下一个层级。
高级别程序员确实需要技术能力支撑,但是就我的观察,到达一定级别之后(湾区 tech 一般是 e5),技术已经不是主要的限制因素(我并不觉的一些 e6+ 比 e4 技术好多少):技术能力决定下限,communication 和 scope 决定上限。
Andrew Groove 在 High Output Management 提出过技术人员的产出定义是 1) 他/她 自己的直接产出 + 2) 他/她 所能影响到他人的间接产出
1) 取决于你自己,时间有限,哪怕是九九六零零七,最多也只能 double 你的 1) 产出。
2) 取决你能影响到的人数,没有上限。这里援引下我之前提到的“优秀程序员的工作效率会是菜鸡的几千几万倍”,这里的工作效率指的是 1) + 2) 而不是 1)。初级程序员只有 1),级别越高 2) 成指数级增大。
至于 2),不同的程序员有不同的风格(也就是一些公司说的 senior archetype),举几个例子:
- 技术向:写牛逼框架(造轮子?)提高整个公司的效率
- 流程向:创建一套新的持续交付环境提高开发迭代速度
- 产品向:发掘新的产品方向扩大 team scope
- 管理向:转为 management track 通过带团队提高输出
我个人的理解是:不要把自己局限在技术里(这也是国内程序员的通病),学底层增加技术能力没有错,但也要考虑边际效益递减和机会成本。 我不清楚国内是否对高级别 ic 友好,如果答案是否定的,那还是建议出国。35 岁之前不一定非要转管理,但 35 岁之后只有 1) 就说不过去了。