1 前言
人总是健忘的, 所以在行走一段人生旅途之后, 总要不自觉地停下来, 整理下前段时间的得与失, 得大于失证明这段时间没有浪费, 欣喜之余, 准备下一段旅途;
失大于得,那就说明这段时间是混过去了,唯有过后空叹,无可奈何花落去。
但无论是失大于得,还是得大于失,已经过去的就注定成为历史,无法挽回,人终究只能是向前看。
谨以本文,纪念我至今的打工生涯。
2 广州
2.1 自学
虽然当初没有去到我想去的大学,但我也不想虚度大学四年时光。
我对自己的大学生涯有很高的要求,我上的学校可能并不如其他人,但是我大学要学会的东西并不能比其他人差。
大一计算机导论的老师对我们说,国内很多教材编写得可能并没有那么好,最好还是看国外的经典教材。
因此,我把教材大多换成了国外的教材,并通过配套的网课进行自学
在大二的时候,把计算机相关的课程,例如计算机网络,数据库,数据结构,算法,C语言与Java语言等都自学完了。
2.2 大二第一份 Offer
并开始和同学组队写程序,我负责用Java写后端,参加各种比赛。
当时和同学模仿「超级课程表」这个APP,写了一个我们学校版本的仿制品,称为「眸知(MooApp)」.
因为我们学校最有标识的神兽是:动物科学院放养的一群黄牛,而黄牛叫声类似Moo,因此就起了这样的一个名字 (粤语发音就类似:无知,就什么也不知道)
做完「眸知」这个App之后,就开始一鱼多吃,把它投到所有能参加的比赛,并在其中一个叫「穗港IT应用系统开发大赛」获得了三等奖。
颁奖典礼上邀请了加州州立大学的教授刘颖作程序开发经验分享,在分享过程中, 刘颖先生提了一些问题作为互动,大多问题我都举手作答。
会后,刘颖教授与我交流,询问我是否有意愿去他在深圳的创业公司(6滴科技有限公司)实习,怀揣着忐忑的心情,我表达了同意。
就这样,我在大二暑假,在无需面试的情况,我拿到了人生的第一份实习Offer。(Offer来得太容易,当时同学还担心我去深圳进传销窝了)
实习期间,我主要是参与电商系统DevOps 功能的开发,主要是通过Docker 来做CI/CD。
但现在回想,当时并没有什么产出,大部分时间都在学习各种文档和概念(此前对Docker, CI, CD等根本没有认知),在老刘的指导下编写 Shell脚本。
可能是我学习态度还算勤勉,工作尚且认真,在实习期结束,我也拿到了公司的 Return Offer。
暑假结束,大三开始了。我用实习工资,给自己交了大三的学费。
2.3 大三实习 Offer
大三要上的主要是专业选修课,大三下学期,我选的课是「面向对象分析与设计」,并且我此前已经自学过这门课了。
就尝试和授课老师曾玲(我们同学口中的「老奶奶」,是个专业水平非常高,并且人非常好的老师)商量, 我已经自学完这门课了,可否申请不来上课,按照提交作业和考试,我继续去深圳实习。
令人惊讶的是,老奶奶竟然答应了我这个要求,于是我又回去了深圳实习,过上了边打工边上课的生活。
(再回首,现在会觉得当初自己没有好好学习,光顾着打工,却不知未来打工之路漫长无期; 但是没法用现在的标准去要求过去的自己,大二时家里生了变故,我希望自己能解决学费和生活费,我需要收入。)
这次参与的是电商平台的后端开发,我们当时的代码都是开源项目,所以还能在Github 上找到源码
虽然我拿到了Return Offer, 但我感觉当时在做的业务并没有太多前景,无论是电商平台还是跨境电商,都已经是一片红海;
开发流程和开发工具也相对简陋,并且我想去BAT大厂见识下,于是我开始准备大三暑假的实习。
当时很天真,因为我只会Java, BAT 里面只有Alibaba 是用 Java 的,其余两家用的是 C++,所以我就只投了阿里。
而在选择事业群的时候,我也不知道阿里云,菜鸟是干什么的,所以就投了我用过的淘宝和支付宝。
简历被支付宝的面试官捞起了,凭着这些年的实习打工和各种开发工具,开发框架折腾经验,通过了三轮面试,顺利拿到了支付宝的实习Offer,而要去的部门是芝麻信用。
当时自我感觉还不错,毕竟我知道这个部门。
3 杭州
3.1 芝麻信用
当时支付宝的总部还在黄龙时代,距离新总部Z空间建成还有1年多的时间。
在新人培训结束的那个午后,我戴着实习生的工牌,迎着风走出公司大门。
回头看去,那个印着支付宝的Logo的大楼赫然立在身后,我面带微笑,感觉前景充满了希望。
但我当时还没有考虑Return Offer的事,还以为一切都是水到渠成的。
在实习期的两个月里面,一边学习蚂蚁的各种中间件和Sofa框架,一边跟着导师尝试做需求。 但却没有做出成果,以此证明自己有留用能力的紧迫感。
每天都是开心地过着,甚至导师还会用他的内网权限,带着年轻的我,一起看内网阿里味的相亲帖子。
直到留用面试的到来,其他的实习生同学都在紧张地准备,还拉上同事帮忙模拟面。
与密锣紧鼓准备的其他同学相比,我却还在自我感觉良好。因为没有找其他同事模拟面试,我甚至都不知道终面面试会问什么。
以现在的眼光来讲,终面面试,我发挥得是一塌糊涂,完全是答非所问,也没有结合业务和自己实习做的事情。 所以,我理所当然地没有拿到Return Offer.
而更为糟糕的是,因为我是迷之自信,以为自己可以拿到Return Offer, 就没有去准备秋招面试。
所以到实习结束,我是0 Offer在手,并且秋招已经结束,即使拿着在蚂蚁金服的实习经验,投递的简历也石沉大海。
我就这样回了广州,时间又来到了大四。
4 广州
我在懊悔和自责中继续投递着简历,但是依旧音讯全无。
我甚至去参加了腾讯的霸面,但是在酒店枯坐了一下午,也没有等来任何的面试机会。
我不禁焦急了起来,然后开始临时抱佛脚地学习起了C++.
这个时候,师兄帮我找了个机会,把我的简历发到了他在UC的部门群里面,由此我获得了一次面试实习的机会,表现达标的话,可以留用。
我相当珍惜这次的机会,在面试前做了很多准备。
这次只有一轮面试,面试官是中心的总监,在紧张和不安中,我基本回答上了面试官的问题,面试官让我回去等消息。
不久后,我收到了HR的电话,通知我面试通过了,但是现在秋招已经结束了,已经没有实习生的HC了。
但他们给我提供了一个选项,以合作伙伴(即外包)的身份入职工作半年,再视表现决定是否录用。
虽然知道我可能被白嫖,但是我别无选择,只能努力向前,争取留用。
4.1 UC
我就在UC 开始了自己的外包(实习生)之旅,邮箱也从之前的 gongsun@alipay.com
变成了 wb-lzr345319@alibaba-inc.com
, 但平心而论,团队Leader 和导师真的是在用心指导和培养我。
因为有了在芝麻信用的翻车之鉴,我也格外珍惜这次的机会,所以花了很多心思和精力学习业务和参与开发。
与之前在芝麻只写运营系统代码不同,我这次写的代码是真的运行在生产系统上。
当时在UC 做的是业务存储系统,提供一个通用的存储模型供其他业务使用。
使用方定义模型,直接把数据存储在我们的系统里面,我们提供通用的数据访问接口,有点类似内部的PAAS 平台。
有趣的是,当时的团队是使用 HBase 来做实时系统的存储的,并使用Mysql 作备份,通过消息队列在两套存储系统之间作数据同步,然后再从 Mysql 拉取数据,写入到 ElasticSearch, 通过ES 提供各种个性化的查询接口。
使用 Hbase 主要是看上了它的水平扩展能力,非常易于扩展。
但 Hbase 此前主要是配合Hadoop 作离线计算,UC内部没有其他团队有类似的实践,所以有很多问题需要解决。
比如FGC降低系统吞吐量,负载均衡切换到其他的节点,在大流量情况下造成雪崩,把所有节点打挂,导致系统不可用的问题,就需要针对GC 参数作调优,减少GC Stop The World 的影响。
我从这个系统中学习到非常多系统设计和热点调优的知识,上手实操又加深了我对这些开源中间件的认知, 初窥了系统设计的门道。
虽说此前我连 Hadoop 和 ElasticSearch 是什么都不知道。
半年之期很快就到了,因为之前的翻车状况太过惨烈,这次的留用面试,我提前两周就开始准备PPT,并和导师总结实习结果和收获。
凭借半年的实习期的表现,以及最后的面试发挥,我通过留用面试,我把这个Offer 拿到手了。
但是,我没有选择这个Offer。
4.2 再话蚂蚁金服
在UC 工作4个多月后,我在v2ex 上面看到一个帖子,说蚂蚁这个团队秋招还有名额,欢迎应届生投递。
因为在UC 留用的事情不确定,本着多个Offer 多份保障的心思,我尝试着投递了简历,很快就收到面试电话邀约。
还是熟悉的三轮面试,但是可以深切感受到,校招的三轮面试,难度要远大于实习的面试。
终面时,面试官(我的未来二级主管)甚至问到数据库怎么水平扩容,要怎么分库分表,事务如何保障等等。
如果没有在UC 实习的这段经历,我可能真的没法办法回答得上,这些都不是看看面经就能回答上的问题。 我感觉也超出了校招对应届生的要求,就这样被「拷问」了接近一个半小时,远超出正常的面试时间。
经过这三轮面试之后,我终于收到了第一份校招 Offer,兜兜转转,又拿到了蚂蚁金服的Offer 了。可谓「山穷水尽疑无路,柳暗花明又一村」:
4.3 抉择
所以,我拿到了两份校招Offer,两份来自「阿里」的 Offer 。
最后,在权衡发展前景,技术成长和个人成长等因素,我选择了蚂蚁金服的Offer, 就这样,我以不一样的途径,又回到了蚂蚁这个最开始的地方。
这次去的部门是网商银行。
如果从现在的眼光来看,实习时没有在芝麻信用留用,不见得是件坏事。
因为芝麻信用用户虽然多,但是没有找到业务发展的突破点和营收方向。在集团层面,已经连续几次被打业绩差了。(阿里人熟知的3.25)
5 杭州
5.1 近卫军
2018年,一群来自天南海北的应届生来到了蚂蚁金服,公司开展了为期1个月的脱产培训,名为「青年近卫军」培训,我也认识了一群好朋友。
在这一个月的培训里面,上午来自不同部门的专家对我们进行组件和技术的培训,下午我们组队开发项目 mini-alipay 项目,然后为了赶进展,开始体验到传说中的996的工作节奏。
最后我们成功完成了自己的一个mini-alipay 的Android App, 并且凭借这个项目,收获到一篮子的奖项。
我很自然地会以为,我「重生」的蚂蚁之旅,也会是这样顺利。
5.2 客户域
我当时任职的团队是网商银行的客户域,负责处理网商银行所有的用户与商户信息,算是基础团队。
客户域非常值得称道的是,使用的是蚂蚁集团内部总结的金融数据模型「飞马模型」进行重构的, 对数据模型进行了清晰的划分,可以称之为标杆。
又因为客户域属于整个网商银行的底层服务,被非常多的服务所依赖,所以系统设计和空灾就要做得非常扎实,我也因此受益匪浅。
在客户域待了八个月后,有一天导师来和我们说,客户域的业务要移交给北京的团队;虽然知道阿里的文化有「拥抱变化」, 只是未曾想,变化来得如此之快。
5.3 聚合收单
客户域的业务移交后,原团队的同事因为没有业务可干,分别被分流到其他团队。我来到了聚合收单团队;
所谓的聚合收单,即所谓的四方支付,在微信支付和支付宝支付外,再增加一层代理商的角色,为直连商户或服务商接入微信支付和支付宝。
那商户不能自己接入微信支付和支付宝么?当然可以,聚合支付只是可以帮你同时接入这两家。
这也是这个业务的问题所在,只能作为通道存在,不具有任何的门槛和粘性,商户可以随时切走。
其兴也勃焉 其亡也忽焉。
聚合收单巅峰时,曾代理微信支付10%的交易量; 但在微信支付发现这种代理行为,并进行打击之后,业务量急据萎缩,聚合收单团队又面临解散。
在聚合收单待了10个月之后,我又无事可干了。
5.4 金融网络
这一次,我和老板详谈,希望可以到个稳定的团队,可以踏实地工作。而老板手下能满足我要求的就是另外一个团队:金融网络。
对于网商银行,或者支付宝,微信支付等三方支付而言,必须要和其他的银行打交道,通过指令进行扣款/扣款。
因此就需要与每个银行进行对接,这个就是金融网络团队的工作。
或许会有人问,不能接入一个统一的代理中继,这样就不需要几百个银行,每个都对接一次了。这个中继是存在的,就是网联。
但是多一个中继,就需要多一份成本,人家又不可能给你白干,需要收手续费的。所以为了降低成本,也需要分别对接不同的银行。
网商银行的金融网络是从支付宝fork 过来的,不同的是,支付宝有100多号人的团队维护,网商银行的金融网络团队,加上我也不过8个人。
金融网络维护的系统,庞大,灵活且复杂。很多功能,复杂到都没有人能说清它是怎么工作的,也没有文档或者资料,一切都靠口口相传。
因为金融网络复杂又重要,被整个网商银行所依赖,就导致金融网络很容易出故障。
在这样的环境里面,我又坚持了半年,感觉着实看不到什么前景和机会。
频繁的业务变更,两年时间,经历了3个团队,兼之晋升和绩效的问题,导致我心生去意。
5.5 加班与学习
杭州是996之都,而阿里可以说是996的发源地。因此,在蚂蚁金服,想正常上下班基本是种奢望。
我很敬仰的一位博主随想君对996工作制的认知是,996工作制只不过「劫贫济富」的缩影。
996工作制对工程师职业生涯的影响非常不利,主要是:
- 压缩了员工的业余时间,因此减少了员工的自学时间,你更加没有时间去自学,去提升自己的能力;如果能力得不到提升,你在人力市场中的「议价能力/谈判筹码」也就得不到提升;然后只能继续接受这种变态的工作时间,这是个恶性循环。身陷其中,并越来越无法自拔
- 消耗了员工的自控力,也就减少了自学的「动力」:如果你的工作不是你的兴趣所在,长时间加班之后,回到家里,你很难再有动力去学习其它新技能。
- 对健康的负面影响
- 对家庭的负面影响
如何走出996的怪圈呢?关键在于时间与坚持。
每天挤出的时间不需要很多,哪怕半小时到一小时,足矣。这里的关键在于「坚持」。
如果你能坚持每天挤出“半小时到一小时”用来自学,大约1到2年时间,就会有效果——你的能力就会有提升
提升自己的能力,是摆脱这个怪圈的第一步。
蚂蚁的工作强度虽然大,但只是995,又因为我住在公司旁边,所以省去了通勤的时间,不玩游戏,又省下不少时间。
每天晚上回去,花一个小时看书和学习;周末和近卫军的小伙伴韬然一起去学习半天到一天,然后另外一天去踢球。
就这样,我每年大概看完了20本书,专业书看得比较慢,花了1年多的时间,学习了C++,算是入了门。
英语是不能放下的,听,说,读,写;除了说的机会不大,读和写都尽量保持着,使用英文进行搜索,阅读英文文章;使用英语回复Github 和Stackoverflow 的问题。
在2020年的时候,又开始自学日语。学好语言,机会总会多些的。
5.6 面试
在决定离开之后,又开始了面试之路。
5.6.1 腾讯
因为好朋友在腾讯是做计费和结算系统的,然后就把我简历推给到他们部门,就这样开始了腾讯的面试之旅。
一面很顺利,在马路边一边散步一边电话面试,问题都不难。
二面总监面也还不错,问到的系统设计问题以及取舍,组件选型等问题我都能回答上来。
本来面试就差不多结束了,从电话那头,总监听起来也还挺满意的,最后问了我一个问题,我是怎么看待加班的。 我就把我的观点和对996的看法如实告知了总监,感觉电话那头的面试官陷入了沉默,面试就这样结束了。
然后,我二面就挂了,我不知道是否因为我太坦诚。或者我应该说不排斥加班,就能结束这个话题了。
5.6.2 微软
因为不想加班,所以就尝试外企,就找微软的朋友内推了简历,便有了人生第一次的外企面试经历。
外企基本不考察项目经历和计算机原理(即所谓的八股文),基本只看解算法题,而我当时在leetcode 上也就解决了不到200道题。
当时令我惊讶的是无法约上他们面试官的时候,我希望是可以中午面试,HR反馈员工中午休息,不面试。 我打算是5点半之后面试,HR反馈大家下班了,不会进行面试。外企都这么早下班的么?这是我们这种996打工人无法想象的事情。
我都打算是请假面试了,最后是微软的面试官进行妥协,回家之后来面试我。面试时候,我甚至可以听到面试官孩子在旁边玩耍的笑声。
面试官问了3道算法题,我只做出来了一题半,那半题是使用暴力解法解出来的,时间复杂度基本没法看。
剩下的时间就和面试官相互沉默与尴尬,即使面试官给我提示,我也没有思路做出来。
解题的确是需要训练的,这一面自然是面试失败了。
当时可以说是相当沮丧。
5.6.3 微信支付
这样又过去了一个多月。
好朋友给我推荐了微信支付的岗位,说是有个师兄在学校的群里发的。
我就尝试投了一下简历,这连串的面试失败让我对自己没有什么信心,何况这还是微信支付。
微信支付一面的面试官面试内容比较有广度,从工程实践,面向对象设计,设计模式问到了分布式系统算法。
最后的20分钟又上一道算法题,我解出来之后,又追问我怎么证明我是对的。我只能当场写几个test case 来断言一下,只能说我的解法能覆盖到这些case。
然后一面就通过了。
新奇的是,在通过一面之后,一面面试官询问我是否愿意做一道笔试题。 其实这个也不算征询我的意见,如果想继续面试的话,笔试题只能做。
只是这道笔试题,需要两周的时间才能完成,也就是我拿到了一个完整的需求,要求2周内完成: 依照微信客户端,实现微信支付委托代扣服务列表和服务详情查询。
面试的时候说语言不限,现在又要求我使用C++ 和grpc 完成,说考察我的学习能力,还好我都学过。
但我就没见过这种面试要求,可能微信支付比较牛吧,我只能这么安慰自己。
就唯有白天和晚上上班,下班后加班到凌晨来做这个笔试题。
花了两周时间,撰写了设计文档,使用C++17写完了这个需求,并附上完整的测试case,得到的反馈是还不错。
就这样,推进到第三面(如果笔试题算二面的话) 三面面试官问题都非常有深度,但都是从浅入深,针对我给出的答案进行发问,没有实际的工程经验和思考,只靠面经是无法水过去的。
后来就是面委面,不过因为我的级别不到高级工程师(9级及以上),所以只是微信支付内部的面委。
因为我的C++ 不够扎实,担心面试官问我C++, 面试前又恶补了一波;
万万没想到,面试官都是在问我Java,还有相当宽泛的问题,HTTPS是怎么实现的?
我都不知道这是否是压力面试,我回答什么,对面都不给反馈,就这么听着,让我觉得面试体验非常差,但最终都过了。
然后就到了HR面,不是说后面还有面试么?为什么要先来HR面?
HR面通过后,来到GM面,即所谓的总经理面,面试前,被要求用一周时间,针对笔试题,做一个述职PPT,并给了我述职大纲。
这都是些什么面试要求,还要画PPT?
只能按照要求,晚上回去埋头写PPT。GM面使用30分钟给GM讲完PPT,回答了几个面试官的问题,然后就结束了;后面就被通知通过了。
我还以为GM面是走个过场,后来才知道有非常多的面试者GM 面被GM问得体无完肤,因为 GM 想要既会做的,又会说的。
只说不做的假把式和只做不说的傻把式都不要。
就这样又到了HR面,怎么要面试两次HR,比阿里的HR面还要多。
这样就通过了所有轮次的面试,收到了微信支付的Offer。
面试要求和面试花样比别家多,待遇却不比别家高。
但最后还是选择了微信支付的Offer, 毕竟这是微信,想去看下。
就这样,在2020年,我回到了广东,去了深圳。
6 深圳
之前听人说,深圳是一座只适合的打工的城市。
来了之后发现,的确如此。
6.1 微信支付
6.1.1 业务
在微信支付的人才会意识到,微信和微信支付更像是两个截然不同的公司,微信支付与腾讯的财付通关系反而要比微信本身更密切。
我所在的团队在微信支付做的是委托代扣业务,在微信支付内部,与收银台,付款码并称基础支付,虽然现在已经很少用这个称呼了。
委托代扣业务常见的业务场景就是免密支付和自动续费:
如乘坐滴滴或者骑行共享自行车,在行程结束后,商家自动扣款,这就是免密支付; 每个月腾讯视频,QQ音乐自动扣月费,那就是自动续费。
所谓的委托代扣,即是用户委托商户发起扣款,建立委托关系后,商户可以在用户无需输入密码验证身份的情况下,发起扣款。
所以委托代扣的业务流程分成两步:
- 用户和商户建立委托关系,称为「签约」。这是一次性动作,只需要授权一次。
- 商户请求微信支付,对用户发起「扣款」。
我之前还在腾讯内网写了一篇文章来介绍委托代扣的业务场景,可惜我自己已经看不到了。
委托代扣每天有海量的交易请求,即使在整个微信支付也是排得上号的(不然怎么会叫基础支付), 而微信支付对系统可用性的要求是99.999%, 也就是意味着全年的不可用时长不能超过5分钟。
在一个海量交易系统,需要实现5个9的可用性,难度可以说是非常高,因此需要做的事情非常多。
与之前在蚂蚁团队动荡的经历不同,直到我离开微信支付,我都一直在委托代扣团队工作。 所以我能从中学习到非常多关于如何构建高可用分布式系统的经验和知识
6.1.2 加班与学习
无论在哪个大厂,加班也是绕不开的话题。
微信支付也不例外,微信是有名的卷厂。
据我观察,广州总部的工作节奏大概是11115,因为他们下班得晚,所以上班得晚,而我所在的微信支付稍好,大概是995, 1095.
在我的认知中,我是很排斥996这种工作制,而正如前文所说的那样,个人要摆脱996这种工作制,只有合理利用时间,坚持学习。
而健康的体魄又是实现任何想法的前提,所以身体和头脑,都需要锻炼。
因为我租住的房子,地铁和公交都不便利,因此乘坐公司的班车上下班就是我的最佳选择。
虽说腾讯标榜弹性工作制,但是却有很多潜规则。
例如班车在9点前,把员工送回到公司上班,就是其中一条。
另外一条就是,不同小区,对应上班的班车只有一趟,下班班车有多趟。 因为公司「期望」员工在固定时间前回公司上班,可以加班到不同的时间点下班。
因为班车要9点到公司,就要求班车必须较早出发,即8:14分出发,因此我每天必须7:50起床赶班车。
为了早起赶班车,我又必须在晚上23:30前睡觉,不然起不来。
因此,我每天的时间安排基本被固定下来了,再结合我自己的学习和运动计划,就变成了一个时间表:
- 7:50:起床
- 8:14:乘坐班车
- 8:14 - 9:00:在车上阅读电子书或听英文Podcast(推荐几个Podcast:个人最爱 Healthy hacker, The Changelog, Let’s Master English)
- 9:00 - 9:15/9:20:早餐
- 9:30 - 12:00:工作
- 12:00 - 14:00 午休时间:健身1小时,半小时洗澡+吃午饭
- 14:00 - 18:00 工作
- 18:00 - 18:40 晚饭
- 18:40 - 20:10/40 工作
- 20:10 - 20:40 下班班车
- 21:00 - 23:00 学习半小时日语或英语,阅读1小时书或维护开源项目或和妹子聊天或看视频,洗漱
- 23:30 - 7: 50 睡觉
这样的时间表,从2020到2023,持续了近三年。
6.1.3 魔幻2022
2022年是魔幻的一年。
在疫情层面,深圳在农历新年之后,就开始了长达一个月的封城,并拉开了持续一整年的核酸大戏的序幕。
在公司层面,腾讯从2022年开始,就宣布了降本增效的大政方针,用通俗的话讲,就是裁员降薪。 从年初每天刷屏的毕业论文(被裁员同事写的感想),到年中宣布绩效与晋升改革,缩减高绩效名额,增加低绩效名额,晋升与涨薪脱钩,晋升机会从一年两次缩减为一年一次等等。
在个人层面,2022年是厚积薄发的一年。
我站在智哥的基础上,花了近4个月,把负债沉重的祖传签约链路给重构了,并梳理清楚了签约链路的业务规则,沉淀成文档。
花了1年多的时间,从0搭建了代扣的数据仓库。
花了1个多月时间,从0重新搭建了一套类似委托代扣签约的免密收银台签约链路。
在腾讯KM平台输出了十多篇文章,有超过5篇入选/获得双月度的腾讯知识奖,1篇获得年度腾讯知识奖,影响力超过了99%的同事。
一边是个人能力和认知的进,一边是公司待遇和前景的退,还有疫情的前途未卜,难免令人心生迷茫,不知前路在何方。
6.1.4 骆驼身上的稻草
如果一直给骆驼加稻草,可能会看到骆驼最终倒下,却不知道一把稻草里面,哪根是最后一根让骆驼倒下的稻草。
同组刚结婚购房的小伙伴,因为降本增效的政策,被毕业了。
2022年的两次的绩效考核,我的业绩都是 outstanding, 总评都只是 good, 而绩效又直接与收入回报挂钩。
2022年6月,本来我已经满了晋升高级工程师的停留时限要求,但是公司的一纸改革,直接把这次年中的晋升机会抹掉。
某天清晨,当我如往常一样准备穿衣上班,却突然发现小区因为疫情被毫无征兆地封控三天。 网上的蔬菜食物早被抢购一空,冰箱冷藏层找到的,数周前购买的冰鲜鸡腿,才让我得以饱食。
封控的第四天凌晨4点,舍友因为肾结石发作,敲响了我的房门,我唯有先向居委会申请通行证,才被允许出门看急诊。 直到2个小时之后,我们才走出了小区门。
如果舍友的病在封控期结束的早一天发作,我都不知道要如何才能出得了这道每天进出的门。
好朋友4年T10的晋升速度,与我可能6年还停留在T8的差距; 深圳高企的房价以及我增长缓慢的收入。
微信支付,在各种压力之下,变得越发地像一个工厂,而每个开发者,都只是流水线上的工人。
或许,我可以尝试去其他国家,去看下那个不一样的世界。
6.1.5 面试
自从公司明里暗里宣布裁员开始,我就开始重新在 Leetcode 上面刷题,坚持每天一题,我不喜欢被动应对。
有了尝试去其他国家的想法之后,我就在Linkedin 上面更新了英文简历和自己的简介,然后就有不同的国家的recruiter找上我。
排掉哪些我不想去的国家(比如坡县), 排掉某些我不感兴趣的公司(某跳动,某Tiktok), 排掉哪些我不感兴趣的职位,我约了两家来自不同国家的公司面试。
一个是来自的日本的 paypay, 是日本最大的三方支付公司,模仿的是支付宝。比较吸引我的点是:
- 他们的公司75%都是外国人。
- 允许在日本任何地方远程办公,如果愿意在东京办公,有额外的补贴。我面试时视频见过的3个面试官+ recruiter,就没有一个是在公司环境办公的
- 较高的薪资,日本的IT公司薪资普遍不高,但paypay 给的薪资,能比得上0.75个日本Google
- 较新的技术栈,他们用的Java版本是JDK17,存储竟然用的是 TIDB.
因为之前一直在学日语,所以刚开始时,还尝试用日语和这家公司recruiter 打招呼,类似《大家的日语》第一课:
我: はじめまして、わたしわ梁です
HR: はじめまして、よろしくお願いします
我: よろしくお願いします
当然,后面我就切换回英文了,毕竟我的日语口语还不支持我完成面试。paypay 是一轮笔试加四轮面试
另外一家就是AWS,base 在Canada,毕竟我没有身份可以去美帝。
AWS也是一轮笔试加四轮面试,笔试还是很有难度的,一道大概leetcode medium + 一道leetcode hard+ 原题,那道 hard+ 的题,如果不是刷过原题,我是解不出来的。
因为面试的是SDE2,所以这四轮面试是:
- 解算法题 + 2个 LP 问题,算法题判断多叉树是否存在指定路径,如果存在,返回该路径。
- 解算法题 + 2个 LP 问题,算法题是Top K freqent element 问题
- System Design + 2个 LP 问题,设计一个日志系统。
- Object-Oriented Designa + 2个 LP 问题, 根据需求,用面向对象设计类,算是算法题与面向对象的结合版本。
所谓的LP 问题,指的是 Leadership Principles, 就是 Amazon 的企业文化里面有16条Leadership Principles, 他们会针对这些准则,让你给合个人经历,讲你自己的故事。
例如,告诉我一个你没有在deadline 前完全项目的经历?主要是看你如何介绍背景,阐述问题,你的行动,最后的结果。即所谓的STAR: Situation, Task, Action, Result. 通过你的经历和应对,判断你是否是个合格的候选人。
我花了一个月的时间,写了20多个故事的英文底稿,基本覆盖了这16条principles, 把这些故事双面打印出来,用了大概11页纸。
最后面试都通过了,我选择了这个温哥华的 Offer。
6.1.6 离开
在每两周至少至少交付一个需求的前提下,我写的生产代码,没有出过一次故障,我没有写过一次复盘,我写过的最大的bug 就是读写文件时,没有对指针判空,导致文件不存在时,服务coredump。
曹操在评注《孙子兵法》时,有一句批注,「善战者无赫赫之功」。善于指挥的人,没有跌宕起伏的故事,没有赫赫有名的战功。
我喜欢四平八稳,而不是狼烟四起,再四处救火,不是「扶大厦于将倾」,方显「英雄本色」。
我更倾向于设计(尽量)不会倾的大厦,所以就没有什么存在感,故而平平无奇,会被认为,换谁来都可以。
就这样,到了樱花盛开的季节,也到了离开的季节。
3月,我离开了微信支付。
坐上了前往温哥华的班机。
7 温哥华
对于习惯了只有夏季的广东人来说,温哥华的春天比广东的冬天还冷。
但新的开始,总是伴随着与众不同。
那温哥华的冬天是怎么的呢?只能等到冬天来了才知道。
我的未来会是怎么样的呢?也只有未来来了才知道。
8 后话
好友总问我,你每天这样的忙碌,还给自己的时间表排得这么满,不觉得累的么?你是怎么坚持的?
我希望可以追上期望中的自己,每次想到,我这样的坚持可以让我摆脱这样生活,我的动力就涌出来了。
所谓知人者智,自知者明,我只是个没有天赋,也没有资源的普通人,想要追上期望中的自己,坚持就是我最大的天赋。
中学时有篇文章是帝师宋濂讲自己早年求学经历,勉励学子马生专心治学的《送东阳马生序》
余幼时即嗜学。家贫,无从致书以观,每假借于藏书之家,手自笔录,计日以还。
天大寒,砚冰坚,手指不可屈伸,弗之怠。录毕,走送之,不敢稍逾约。
以是人多以书假余,余因得遍观群书。
既加冠,益慕圣贤之道 。
又患无硕师名人与游,尝趋百里外,从乡之先达执经叩问。
先达德隆望尊,门人弟子填其室,未尝稍降辞色。
余立侍左右,援疑质理,俯身倾耳以请;或遇其叱咄,色愈恭,礼愈至,不敢出一言以复;俟其欣悦,则又请焉。
故余虽愚,卒获有所闻。
…
我自己的经历和成就,自知无法与宋濂先生相比。但十数年后,再读宋先生的《送东阳马生序》,却有了不一样的感悟。
故余虽愚,卒获有所闻。
我虽然普通,但是坚持还是有收获了。