找工作过程中的一些感想【已拿到offer】
首先声明:
- 这是在美国找工作的情况
- 不是类似Facebook这样的大公司,虽然也是上市公司,但是和FANG不能比
第一个,就是遇到无数挫折,被拒无数,等找到了才意识到,找错了工作岗位。
我其实应该找的是Front End Developer,但我的头衔一直都是Senior Software Engineer,于是找了很多Software Engineer的岗位,面试中,很多都要求系统设计,我心说我又不做后端。而且很多时候,我联系了一下之后都没下文了;现在想来,就是搞错了职位。当然,也拿到过Amazon的Front End Developer的面试,挂了。后来终于又申了一个现在的前端岗位,果然就中了。
第二个,关于鄙视链和正视自身的优劣势。
无论中美啊,都有鄙视链。
我现在的工作中【注意定语】,前端确实没什么太高科技的东西,而且天天写CSS和JS,有时自己也挺烦。
所以一直有某种“情节”,大概就是说,好掌握几个后端的语言,Java啊,Go啊之类的,将来可以搞搞大数据、分布式、高并发啥的,听着非常高大上。
但实际上,Go语言,我学过几次,现在基本彻底放弃了,原因无他,语法怪异,平时也用不上。当然,说到底,还是后端的基础知识比较薄弱,比如不会C,没学过操作系统,等等。毕竟转行的嘛。
至于Java,我用Java练习LeetCode。Java的数据结构那是非常丰富的,非常好。
后来我研究了一下前端中比较深入的东西,才发现其实前端还是有很多可钻研的东西。而且JS只是前端的一部分而已。
比如说,浏览器是怎么运行的,
比如说,各种debug工具,chrome devtools protocol啥的
比如说,各种可以编译到JS的语言和编译器(我正在学习怎么写个编译器)
比如说,使用webassembly和c++来写出高性能的app (我现在的公司和即将入职的公司,都有非常强烈的写高性能app的需求)
比如说,自己实现一个react-like library
比如说,自己手写Promise
这个链接给了我很大启发:https://jishuin.proginn.com/p/763bfbd23be3
当然,还有stream,socket, WebGL,Canvas这些,但要看具体的需求了。
数据可视化也是一个非常靠谱的方向。
所以你也看得出来,我不算高级前端工程师,但我算一个非常熟练的中级前端工程师吧,知识面也够广,自学能力也很强,甚至带几个intern也都OK,但离高级工程师还是有距离。
总之,要对自己的水平有一个合理的评估吧。如果评估不好,你会发现,你要么申了个够不着的岗位。要么中了一个和预期薪资不符合的岗位。都不好办。
第三,说说leetcode
我个人是绝对认可leetcode的,https://space.bilibili.com/9099840
这是我的b站频道,全部都是leetcode java版本解题视频
学算法,对你可能没有直接帮助,但有非常非常大的潜移默化的间接帮助,这个只可意会不可言传,反正我现在也说不出到底具体哪里帮了我,但我现在写代码效率比以前高出N倍,而且能够经常一遍写对,不用反复console log;能够经常一眼能看得出代码哪里有问题。
Leetcode对我的帮助确实非常非常大;而且建议用Java或者C++ (我用Java),即便你是一个前端,每天只用js。Java提供的各种数据结构,看起来简直是牛逼的的不得了,比js的强多了。
当然,我练习了leetcode的本意是为了面试,但现在看来,其实对日常写工程代码也帮助很大。
第四,说说成长性
美国别的不说,就是有一点好,没有35岁限制,所以一个程序员可以持续钻研和学习,可以不用着急,慢慢发展,补齐所有短板,从而成长为一个高级工程师。
比如我自己,我本来学医的,转码,对吧,基础显然不够。
我现在在学Theory of Computation,天天研究各种DFA,NFA,pushdown automata什么的。然后下一步就是学习编译原理。再下一步,就是什么计算机组成员,操作系统,数据库啥的,油管上有很多很好的免费学习的课程。而且EDX和Course都有很好的课程,就慢慢学吧。
C、C++和Rust也是一定要学的。
还想着读一读nodejs的源码。
还有各种functional programming的东西,要学的简直太多了。
为啥有空学?因为不加班啊,哈哈。当然,有了小孩以后估计就没空了,所以还是要抓紧时间。
现在我每天起床后,立刻看一小时的上面说的课程;然后开始工作,晚上下班后,要么写点自己的东西,要么研究leetcode。周末更是全天都学习新课、练习算法和浏览github。即便我已经拿到了新offer,我还是这个日常时间安排,没有松懈。其实持续学习已经一个生活方式了。
其实也非常忙,留下娱乐的时间也不多。
而且升职路径不一定说是非要做manager,可以做技术专家,同样很多钱。我知道某个超级牛逼的大牛,跳了一次槽,工资涨了3倍。高级技术专家,永远稀缺。我老婆他们公司某个牛人,和公司按小时结算,其实也是contractor,但每小时300美元,一天工作8小时。你算算是什么年薪水平。
当然,如果说创业,去纳斯达克敲钟,在美华人去创业的不算太多,但不一定非要做CEO才算创业,也有很多人技术不错,加入某创业公司,然后拿了很多股票,虽然不是身价亿万美元,但显然可以买得起Rancho Santa Fe和La Jolla的豪宅。这也肯定算是成功人士吧。
第五,关于domain expertise
这个其实还是挺重要的,我找了一个同行业的公司,但没有直接竞争关系的公司。很多经验和行业知识都用得上。我也觉得这行业不错,准备继续深入研究一下行业知识。
最后说说钱和人生
我目前的工资,肯定是远高于国内【同级别】的程序员的(换成人民币的话),但这样比没意义,因为美国的薪资结构和中国不一样。反正收入肯定能让我在生活的很舒服。
这样的薪资水平下, 然后又不加班,就让我安心学习,安心成长,经过10年后,我相信我会成为一个真正的“大牛”。
其实,我完全可以不用学,就开始享受人生,比如出去旅游啊,搞个小爱好啊,我就有前同事有各种爱好。哎,我很羡慕的。
就是说,不用去追求更多的钱,安心过小日子就好。但内卷民族的天性,就是不停的卷,所以我停不下来。
但更重要的是,我一直觉得自己是个很无聊的人,因为我没啥爱好,也不爱听音乐,就喜欢看点美剧。
所以除了写代码,也没啥可干的。
而且自从抖音在中国和去世界都火了,我突然就发现了一个新大陆:全世界人们都很无聊,不然他们哪有那么多空闲刷抖音呢?于是,我就释然了,既然我和全世界人们一样无聊,那我就没什么可内疚的,觉得自己没有爱好、所以虚度人生了。其实大家都在找办法kill time而已。
写得不错
杀时间就是杀死自己