从2015年研究生毕业开始工作算起,到今天已经有十年了。从小爸爸跟我说凡事都要常总结,虽然工作了十年都不知道总结太多有什么好处,但还是总结一下吧。
回顾起这十年来的打工历程,在北美留学生/程序员圈子里算是非典型了。化学院出身的我,在管院摸爬滚打三年,并没有按照预期进入金融界,而是在NYU拾起了对编程的兴趣,并算是一点也不正儿八经地学了点东西。我想真正的码农入门课程是长得像比尔盖茨的教授的数据库初级和中级课程——这一点就跟那些学过类似Java或者C++或者数据结构与算法的科班出生有本质区别。有谁听过哪个程序员是通过学数据库入门的呢,何况现在回想起来,那整个硕士学位似乎的培养目标是DBA,which在现代软件各厂中是一个几乎不存在的岗位了。
硕士两年的时光飞奔而过。学业几乎不需要付出任何努力就可以得到很高的产出——这是水专业的一个典型特征。结交了几个朋友,一起打球的同时还尝试了一下创业,想打造一款优质中餐的平台,有点类似现在的Resy。整个过程可以说一波三折,但失败几乎是必然的——整个五人团队只有一个半吊子程序员(我)。
但总之,在这种自由的风气下我开始朝着找一份写代码的工作而努力。先是去了曼哈顿下城南边的一家名叫Endai的数据分析公司免费打工——到现在也不清楚这家公司到底业务是什么。毕业后找到了一家以色列创业公司BillGuard开启了程序员的生涯。在当年一起同期毕业的算是还不错。NYU水专业毕业生一般两条路可走,一是回国,二是找个技术性的工作,比如四大里IT相关的。这个专业的主要问题是它看起来像是个商科,但是课程又可以选一些技术方向,这给人一种非常迷惑的感觉。我印象中95%的国际毕业生应该是回国了,剩下5%大概有一半也是一年后离开了,可见专业有多水。回国的发展不见得差,但是起码跟当初的预期是有所不同的。某种程度来讲,可能整个学院只有我一个人最后做了程序员。
命运这种东西,说来奇怪。入职BillGuard还不到五个月,公司就被收购了!事发非常突然,因为我正在寻找下家,事实上,已经找到了一个下家B(一个用react做图形工具的startup)。面临的选择是留在纽约,工资稍多点;还是搬到湾区去,未来不知。也没有花很多时间就决定去湾区了。起码在2015年,硅谷就是科技行业的宇宙中心。当时正好是在纽约的第三年,对于暴风雪和酸臭的地铁真的是厌烦了,每天坐在Queens的7号线上望窗外,满目的砖色和死灰色的pre-war buildings,内心的压抑无处释放。若不是被收购,等到能够搬去湾区也不知道是什么时候。一年后我出于无聊搜索了下家B的信息,发现它已经倒闭了。后来其实还有一起机会可以回到纽约,当时去Datadog面试,意气风发,拿到了offer,但自己仍然是拒绝了。
收购的母公司Prosper算是中小厂,办公室位于旧金山金融区。在Propser的日子总体是很无聊的——工作内容简单且无聊,也没有团队合作,整个过程一直处于惶惶的心理状态,好像是一直在等待着什么发生,好消息是抽到了H1B。技术上自然是没有学到什么东西。下半年经历了第一次大裁员。先是整个以色列的旧BillGuard团队被砍掉,之后是缩减成本的全公司大裁员。于是在这兵荒马乱中继续找工作,一年后另起炉灶。
17年初加入了雅虎。2017年的雅虎是个风雨飘摇正在沉没的大船。在雅虎的日子总体来说还是很舒服的。健身房、免费餐食、丰富的活动;工作方面,第一次接触到了真正的大型程序开发,也见识到了真正的互联网大厂是怎么运作的、看中哪些素质(设计师、PM、前端后端服务端、影响力、跨组合作、领导力)。但是那年六月份这个传奇公司被卖给了Verizon。之后便是熟悉的裁员潮。快速跳槽的职业生涯所带来的最大问题就是没办法升职,但好处是职业生涯伊始就遭遇各种突发事件(被收购、裁员、跳槽),就像驾着一艘小船在大洋的风浪里摇摆,练就了足够的心理素质。跳槽如同跳船,很快就熟练了。一年后,离开了雅虎。
谷歌应该是很多程序员的梦中公司。18年加入谷歌的时候,我还是从L3做起,工资不变。现在想一想,在谷歌的时间可以分成疫情前和疫情后。疫情前的几年自己完全像个小白,什么活都做,来者不拒,经常同时搞好几个项目,在多线程切换中乐此不疲。作为比较,最近组里来了一个台湾人,他虽然是L3,但是比那时候的我精明得多,做项目要求我只给他那些“容易launch”的,“有大impact的”。现在想想,我当时做的那些东西,虽然很多是乱七八糟的杂活,但是也通过那些项目了解了很多其他人不知道的知识。在谷歌这种大厂,很多时候一个工程师的牛逼程度跟当时刷题的能力没什么关系,而更多在于domain knowledge。如果对某个领域一个人了解的很多,那他就是这个领域的专家,一旦在团队间建立了这种印象,他就不再是小白了。我通过什么活都做而逐渐变成了数据指标的专家、某ML模型的专家等等。至今凡是这些项目,新人来都要问我。我想这是一个有用的经验吧。
疫情后,升了L5,变成TL,做项目开始变得精细起来,也开始注重了impact、leadership这些东西,从不挑三拣四来者不拒慢慢变成也衡量衡量自己的时间得失。有了孩子,时间不再是无限使用,而要随时提早计划。不重要的会议点拒绝,也不会因为不好意思而像其他人开口。只要是有助于推进项目的事情就要去做。慢慢地,感觉做这样的程序员也挺无聊的。时间分配上开始向政治倾斜,开会,没完没了的会。花了好几个季度,launch了一个号称影响数十亿用户的功能,但是并没有像很久之前学会了给按钮加一个阴影那样欢欣鼓舞。
LLM时代,一切又不同了。以前的L3、L4这会迟早(预计2年内)被AI替代掉。可以自己开发并规划新项目的L5、L6尚有一口气,但也很快朝不保夕了。手写代码已经变成过去式,对于传统的程序员的职业生涯和未来发展,都要需要重新思索。
对孩子的教育,也要认真思考…