今天突然想起多年前的一个梗,早些年我刚入行的时候,面向过程编程,面向对象编程,面向函数编程(函数式编程),一代一代的演进。最后大家玩梗就变成了面向老板编程,或者叫面向工资编程。
面向工资编程是一种智慧,或者说是一种选择的智慧。打工人们明白了哪种打法是对自己最有利的。 大家还记得 “PHP 是世界上最好的语言这个梗么”?现在没人提这事了已经,但在当年,哪种语言更优秀这个话题,可是在互联网里吵的不可开交,甚至已经上升到技术信仰这个维度了。但后来为什么没人再吵这个话题了,除了软件架构的发展,让这些问题本身已经不再是问题了之外。也有大家开始变的越来越务实有关 -- “吵吵这些没什么用,哪个语言或者哪个技术挣钱更多,就选哪个就好了。”
很多人都知道字节在多年前就是以 go 语言为主了,但那个时候的 go 语言比 java 好很多的么?也不见得。但这就是人家的技术选择,可以说人家就押宝 go 语言的未来发展,也可以说人家有技术信仰。但不管什么原因,人家就是要用 go。想进字节挣钱的,就是得学 go。你说这个业务适合 java,我们应该用 java,但不好意思, 你没那个话语权。但大家想进字节啊,毕竟字节 NB,而且字节给的钱是真多。即便是现在,字节给的薪资待遇都是独一档的。所以字节说我们不要专职测试人员了,所有测试序列转开发序列,所有开发人员都必须对自己的质量负责而不是交给测试人负责。大家的第一个反应也不是反抗,而是真的去按公司的策略去转型。几乎没有人会说:“NND 老子干了 10 几年测试了,你现在让我背叛测试岗位去做开发,老子不干了。” 很少有人会这么说的。 我大学同学就在字节, 他在入职的第二年,也就是 2024 年的时候就已经完成了测试序列到开发序列的转型了。 也就是说其实字节早在 AI 火之前就已经在搞这种操作了。 虽然字节内网上对于字节的 QA 制度已经诟病了许久。(这里跟大家介绍下字节的 QA 制度,简单说就是正式员工基本不做测试工作,而是开发各种流水线/工具/平台,制作各种流程卡点。真正的测试都是外包做的。)但我大学同学完全没有一丝的觉得不好的地方,也没想过这种事情对不对,他就负责照办。为什么? 因为字节给的实在太多了(入职的时候年薪 130W,现在估计有 150W 以上了),他的原话大概是:我一个干测试的从来没想到过能挣这么多钱,他就算跟我说豆腐脑是甜的我都同意。
想到这里后,我就萌生出再写一篇帖子的想法。聊一聊我们的这个面向工资编程的理念。
简单来说,我相信大多数人都跟我一样是个普通人,我们没有改变行业的理想和能力。工作最重要的事情就是挣钱,养家糊口,过好自己的小日子是正经事。改变世界这种理想,可能也就是上学那会才会做的梦。或者说曾经也是有一腔热血,但十数年来在社会中撞的头破血流后,也开始慢慢的与自己和解。我们会承认自己改变不了多少东西,我们也承认一直以来坚持的东西也不一定是对的。但不管什么原因,挣钱已经是我们最大的目标,尤其是在自己还能挣钱的时候尽量多的去挣钱,应该是包括我在内的很多人的想法。
所以面向工资编程,是对打工人来说最有利的打法,也许很多人会认为公司或者老板的决策是不对的,但这个对与错本身就是很主观的东西,我们一直以来坚持的东西不一定是对的,但发到手的钱是实打实的。所以包括我在内的很多人,慢慢的就养成了一个面向工资编程的习惯。
面向工资编程不是说无脑的听老板安排,而是我们知道做什么工作,学习什么技能,可以让自己的利益最大化。我的大学同学在 2023 年开始尝试转型开发岗位,2024 年转型成功。不是因为他热爱干开发这个岗位(要是热爱也不至于前 10 几年都是在干测试),而是他识别到了转开发起码在字节已经变成了一个主流信号。早点转能更早的站住位置,越晚转的风险越高。
虽然我没有转开发岗位(我现在的公司还是有质量部这个东西的,起码暂时还没看到要测试转开发的导向),但十几年来我都秉承着什么方向更挣钱就去学什么方向的思路。还是用我那几个例子说吧。 2016 年年初的时候我毅然决然的拥抱 docker,是因为在 2015 年的时候,虽然大部分公司都没有投入到容器方向的建设,但各种开发大会上,大家就已经在谈论 docker 了。当时我还是一个普通的测试开发工程师,跟着我们当时的架构师一起去大会凑热闹。看着很多行头部公司的员工都在聊 docker 的事情,我们就知道容器在未来很可能会成为主流。 我记得那个时候,架构师也总说大数据也是未来。所以 16 年的时候他去了一家数据公司搞大数据,这是他的选择。而我在范式投入 AI 的同时,自己开始捣鼓起了 docker 和 k8s。后来的事情我应该说过很多次了, 16 年的时候我完成了 docker 和 k8s 的技能积累,17 年的时候公司开始云原生转型。我顺理成章成为了工程效能组的 leader,工资涨了一大截。而我们那个架构师也赌对了,大数据曾经火了相当一段时间,他也算借势爬到了更高的位置。
我这个人危机意识比较强,即便最近 10 年里我只在两家公司任职,是属于比较稳定的那一类。但我也总会习惯的去想,如果跳槽,我的薪资凭什么再往上涨一大截。而且大家都知道,软件这个行业,技术和业务都是日新月异,我刚才说大数据火过一段时间,同样的 docker 和 k8s 也火过一段时间。但也就火那么几年,再往后面就已经变成了基本操作了,不是什么新鲜事,是从业人员的基本技能。
这也是我们行业的特点,技术红利就那么几年,甚至几个月。抓不住这个窗口,等到行业都已经卷到一定程度了,这个技能就不是什么加分项了,而是必备技能。还记得 2009 年我实习的时候,移动端刚开始冒头,我那个时候毕业也就是在北京 4000 块的工资。但如果有人说自己懂一点 IOS 的东西,在我们公司基本是 1W2 起, 那可是 2009 年的月薪 1W2。但过几年再看,移动端已经不值钱了。所以 -- “技术红利” 是有时效的。这个很容易懂,去年年中的时候,我自费投入 AI 来完成测试用例的编写和自动化脚本的编写已经算是行业先驱了,在那个时候,哪个测试人员要是把这套方法论搞明白了,找工作基本就是随便挑。但这才过了一年,这些就都是基本操作了,很多人都会,并没有多值钱。
所以,挑选一个技术,抓紧时间去学习,然后抓紧时间去变现,这是面向工资编程的基本理论,毕竟时间是不等人的。多少人(包括我)可能并没有很强的天赋和努力,但就抓住了 1 个或者几个阶段的窗口时间,选中了对的方向。就完成其他人很多年努力才有的结果。
这里说的变现,不仅仅局限于跳槽,也包括汇报,开课培训,卖资料等等都算。刚看到苗头的时候就去投入成本积累,在其他人还在探索的时候就把结果汇报到老板那里了,那就是成功的。有些时候,打的就是一个信息差和时间差,很多人上位都是这么上的。有些时候我们可能在职场上发现一个级别很高的人好像也挺水的,会好奇他是怎么升上去的,那很可能就是踩中个风口,顺势而为的结果。那个风口可能技术含量没有多么高,只不过他做的更早更快。所以机会转瞬而逝,我们要珍惜。
这也是为什么行业里总说老老实实干活的人是最吃亏的,这不是全部的原因,但这是原因之一。你老老实实的做项目,人家偷偷摸摸的钻研行业动态,用最小的成本博到最大的利益。可能一个人只要博中那么一两次,他的路就完全不一样了。因为只要博中了,你基本就是行业先驱者之一,你已经占住位置了,你已经比别人有更多的资源和经验了。后面的路不说一帆风顺,但绝对比其他后来人轻松的多。最不济,我们不是先驱者,而是追随者,但也可以在大多数人没有意识到的时候,转进时间投入进去,混一个还算可以的位置。
说老实话,面向工资编程的思想,主要打的就是信息差和时间差,以及一个听劝不固执。这个听劝不固执, 就是不会死守着一个方向一直死撑下去。行业和技术都是时刻在变化的。或者公司的战略和导向也是会随时变化的。当初 AI 刚出来的时候,多少同行死守着心里的执念,错过了那一拨红利。如果像我一样在去年的时候就开始实操 AI 辅助测试的话,是不是很多同学就可以在今年年初 AI 编程刚火起来的时候,通过跳槽把薪资提上一大截。我记得我的星球里有一个同学,一直跟着我学习 AI 效果评测的东西,应该是在大半年前,成功跳槽了。事实上他自己的工作内容里根本没有任何 AI 的东西。但在以前 AI 评测根本就是小众到不能再小众的东西,AI 真正大火也就是今年年初。 很多公司和团队基本就是赶鸭子上架,临时抱佛脚的去做 AI 项目,所以面试的时候,对面那个面试官都没有他这个只靠自学的人懂。
所以,面向工资编程思想一定要过自己的执念这一关。我们做一个事情,不是这个事情有多正确,对项目有多大的帮助,而是这个事情能给自己带来多大的成长和利益。成熟的职场人,在遇到当行业或者公司的导向变化的时候,或者有新技术出现的时候。即便他们认为这次尝试不靠谱,但他们也不会对抗这股大势,反而比任何人都积极的去接触,去拥抱。
这就是我总说的,普通人不要跟大势对抗,要顺势而为。
有一个很有意思的现象,年少轻狂的我们曾经雄心壮志,认为自己只要努力就可以升职加薪迎娶白富美走上人生巅峰,想一想还有点小激动(有多少人看出来我在玩万万没想到的梗哈哈)。然后我们慢慢明白了一句话:选择大于努力。比如大家都看清了一件事,如果选择了测试这条路,那么即便天赋和努力都很强,但九成九的人基本止步于测试总监这个天花板。而选择开发的人可以继续向上晋升一直到 CTO 这样的职位。这是选择带来的局限性,当然很多时候 “选择” 不是主动的,而是被动的,或者我们是 “被选择” 的那一方,相信很多同学当初步入测试行业的时候,不是真心想做测试,而是能力/学历/背景没卷过那些开发同学。但这不是重点,重点仍然是当我们不管什么原因进入了某个领域,那我们就会被这个领域的天花板限制住。时间越长,限制的会越狠,因为我们的技能发展就局限在这个领域里。也就是走的路已经和其他领域不一样了。 就比如虽然很多人都说做测试,要比开发更懂技术。但这一直都是一个悖论,在相同的天赋/努力/机遇下,测试人员常年跟业务逻辑打交道,开发人员常年和技术打交道。那既然大家智商努力都差不多,那怎么可能开发比测试更懂业务,测试比开发更懂技术。这是违反逻辑的,如果某个测试人员的技术真的比开发还要强,那就说明这两人在天赋/努力/机遇/工龄等维度上本身就有差距。这是客观逻辑,人把精力花在什么地方,就会成为什么样的人,并没有贬低任何角色的意思。
所以社会上流行 “选择大于努力” 这句话,也不是没有原因的。虽然我认为是先有努力才有选择,但也不可否认,在一个错的选择上努力,绝对是事倍功半的。所以今天我还想聊聊 “选择” 这个事情。
我今天举的例子是我的前老板。
我跟着这位领导的时候,他就已经是一个掌管百十人团队的 “总监” 了,并且团队范围不仅包括测试,也包括了交付和开发团队,但他入行是从测试岗位开始的。事实上更早些年是做保安的,没错,就是天天在门口站岗的那种保安。至于他的励志历史,怎么通过努力和机遇从保安进入软件测试行业的我就不得而知了,毕竟那段历史过于古早,而且早些年软件行业入行简单,不具备借鉴参考意义,我们就不去考究了。
我想说的是一件事,我的这为领导上进心很强,他很早就不满足于只带测试团队了(他是从普通测试人员->测试 leader->测试总监一路晋升上来的),因为他知道如果业务范围只有测试的话,他很多的野心都是无法实现的。但他的领导知道他的出身,知道他从来没有过带开发团队或者其他角色团队的经验。所以一直没有给他这个机会。只有一次,有一个救火项目,涉及到一个数据开发项目。我们总监终于拿到了这次机会,带着他最信任的人倾巢出动,在北京封闭式开发了两个月。要知道一个带了很多项目的总监能亲自窝在一个办公室里跟着单独一个项目两个多月,这是有多重视。那时候总监嘴里就一句话:这个机会有且只有一次,只要失败了,这辈子他就只能窝在测试团队里了,再不可能有第二次机会。所以那个时候卷的昏天暗地,有个同事在那两个多月时间里头都快卷秃了。
也正是有了那一次的成功,才造就了后来如日中天的他。虽是质量出身,但现在质量只是他很小的一部了。 交付,研发,算法,BA,销售,产品都是要汇报给他的,他目前已经是一个中心的老板了,都有其他总监要汇报给他的。
有人说他当时犯不着这么拼着那个项目,其实那个项目对大老板来说也没那么重要,只是去让他试试。 就算失败了,也不会影响老板对他的信任,以后他还可以在质量上去带其他的项目。他确实可以这么做,但他知道,机会,有且只有那一次。错过了,总监就是他职业生涯的天花板了。
其实他在拼那个项目的时候不是没有微词,一个整个职业生涯都在搞测试的人,放着这么多测试项目不管,跑去北京的会议室里窝了两个多月,这是不是不务正业?就这么想抢开发的活么?
这个场景是不是似曾相识?就像我当年搞 docker 和 k8s 的时候,社区里好些人跟我说这些事是运维的活,我这么干是不务正业。面向工资编程的思想永远都是选择去做对自己最有利的事,眼光放长远,而不是只顾当下。如果把自己限制死在测试这个条条框框里,不论我们总监还是我,都没有今天的光景。
总结一下吧,面向工资编程是一种比较功利的心态,可能不符合很多人的匠心价值观,这个就见仁见智吧。