写在国庆的早晨。在这举国同庆的日子里,身边的人或许都收到了满意的录取通知,或许都成双成对欢喜地出游了,我却还是回到了熟悉的工作室,继续默默地追寻我的江湖梦。离开江湖也有一段时间了,在江湖的日子却又历历在目。

梦开始在大一那年。那时候偶尔会上淘宝和天猫买点东西,不过对阿里巴巴这家公司一点都不了解。身边有从阿里实习回来和我们分享经验的学长学姐,至今印象最深的当属阿里的武侠文化。马老师很喜欢金庸的小说,所以他给公司定了个规定:每位员工都要取一个花名(经过多年验证,这真的是消除隔阂的最好方式)。我自幼就很向往金庸笔下的江湖,最欣赏的英雄人物从最初的段誉,到后来的乔峰,再到现在的杨过和黄岛主,也反映了我人生的不同阶段。自此,我开始关注阿里巴巴这家公司。而后,不经意间在犀牛书上看到了翻译团队——淘宝前端技术团队,在鸣谢的名单上有很多名字,我唯独记住了两个,一个是赵泽欣(小马,后来在子柳的《淘宝技术这十年》中再次登场),一个是王保平(玉伯,曾经在前端界叱咤风云的人物,后来成为了我老板的老板的老板)。我对阿里背后神秘的技术团队产生了莫名的好感,并开始 google 关于阿里前端的一切,学习他们的技术,关注他们的动态,渴望有一天可以加入他们。

大二那年的暑假,看到天猫团队在招实习生,那时刚考完期末试,上 github 搜了个简历模板,匆匆忙忙做了份简历就投了过去,然后万万没想到第二天我就收到了来自天猫前端工程师的面试电话,没有一点点防备,人生中的第一次求职面试就这么失败了。失败的原因主要总结为两点:没有经验以及太飘。没有经验主要体现在:自我介绍一句话,没有任何亮点;不知道面试大概考察的范围,招架不住;实时写代码容易紧张,然后思路全无;全程几乎处于被动的状态,面试官一问一答。太飘则主要体现在对工具的认识只停留在 API 的层面,没有深入去了解其背后的实现原理,这是大多数初学者的通病。所以,求职切记打无备之战,一定要做好万全的准备再去迎战。在面试前最好先找学长学姐或者最好是职场老鸟来帮自己进行一次 mock interview,现场面、电面、视频面以及在线编程都要尝试一下,避免面试时出现尴尬的情况。自我介绍一定要精炼,将自己最擅长的一面展示出来,因为面试官都会从你的自我介绍开始发问。然后对于有明确答案的问题,一定要点到为止,切记答非所问。对于开放式的问题,尽可能将自己了解的一切技术细节都说出来,切记守口如瓶,因为这是你加分的最好机会。至于在线编程,不要急着去想代码怎么实现,先分析问题,和面试官交流解题思路,这也是一个得分点。然后在面某个团队之前,一定要先对这个团队做全面的了解,包括但不限于了解他们的技术栈,了解他们所负责的业务,通过社区去收集一下面经也是很有必要的,通过面经你可以查漏补缺。最后一点就是很多技术新人,甚至是工作多年的老鸟都有的通病——使用工具只停留在 API 的层面,没有试图去了解工具背后的实现原理,至今仍然记得面试官一句“你知道 Vue.js 是怎样实现响应式更新的吗”把我给问哑了。考察工具的原理一方面是出于业务的需要,B 端的产品对性能要求可能不高,但是像天猫这样的 C 端产品对性能要求是非常高的,使用工具只是方便了我们进行团队协作以及项目后期的维护和扩展,但是涉及性能优化的时候就需要对工具的原理了如指掌才行。还有一方面就是为了考察候选人的潜力以及热情,当没有工具的时候你是否能够将工具的思想迁移到其它领域,还有作为一名工程师,你对技术是否有热情,是否有 dig 精神(这是后来从玉伯老板那里 get 到的),这一点可以刷掉 99% 的人(不是 80%),因为从无知到认识一门工具到使用一门工具再到了解工具原理这个过程是很漫长很枯燥的,你可能不只是看几篇博客就行,这需要你写很多代码,并且读很多代码才行。所以,在学习的过程中要将 dig 精神进行到底,不仅仅是技术,产品、设计如是说,学会将一件事做到极致,而不是达到某个指标。然后万事俱备的话,剩下的就只能看运气了。在合适的时间遇到合适的面试官的话,恭喜你,you are the one。

大三那年的寒假,碰上玉伯、苏千、死马众人在微博刷招聘动态,那时候内心有点小激动,但是这一次我沉住气了,我扪心自问:Are you ready?不能再像第一次那么亏了。这一次我选择好好复习,毕竟春招还没开始。一个月后一次偶然的机会,我看到帅哥在 CNode 发的一张贴子,然后苏千在下面顶贴了,然后这是个千载难逢的好机会,这次我毫不犹豫了,投。有了前面天猫失败的经历,这一次果然得心应手了,蚂蚁和之前天猫的面试标准差不多,都是通过你过往的学习经历以及工具的原理来考察你的潜力和热情。第一轮面试毫无意外地通过了,不过通过第一轮的考察貌似因为我缺乏 Node 的实践经验,所以第二轮安排的面试官几乎只考察我前端的基础,然后也毫无意外地通过了。只是面试官是个妹子,一直让我产生一种错觉——是不是根据前面的面试记录让某个业务部门的前端工程师来面我,后来这妹子成了我老板的老板(像这种美貌与智慧并存而又不失可爱的女中豪杰蚂蚁还有很多哦哈哈)。然后经过两周漫长的等待,终于收到的录取意向书,也算是圆了我过去两年的江湖梦了。

果不其然,蚂蚁这边还是比较扁平化的。在这里虽然等级制度分明,同一个组里面可能会有下至实习生,上至研究员的员工,不过平时大家相处得很融洽,不会听到 X总、X经理的称谓,实习生也有可能会坐在鲁肃和阳老师旁边,还有踢球的时候管你是 p 几,开心就好。然后蚂蚁的文化是包容的,这里的人都很有个性,你会看到逗比可爱的啸生、一个月换一次发色帅气的绯一、爱写小说的段子手愚道、没有头发却成天扎小辫子的子朔、喜欢 rap 的老王、在你工位旁踩着电动踏板车飞过的风一样的男子(至今仍不知道那是谁)等等。也正因为这里都是充满个性的人,要想在蚂蚁立足,你必须学会 stand out,展现出你的才华,否则你只能在沉默中出局。蚂蚁既像一家创业公司又不像一家创业公司。和大多数的创业公司一样,蚂蚁没有实习生的培养制度(不像淘宝和天猫),实习生几乎都是上岗就要支持业务,没有任何项目经验的同学来蚂蚁可能会比较难适应。然后和大多数创业公司一样,这边新兴的产品团队都没有规范的研发流程,计划经常会 delay,感觉一团糟。虽然是 B 轮的公司,但是感觉蚂蚁更像是一家上市公司,大家其实都没有统一的目标和方向,每个部门都在搞自己的基础建设,感觉就像集团一样老气,完全感受不到朝阳企业那股热血和朝气,以及产品快速迭代的快感。所以我觉得蚂蚁更适合那种有丰富的工作经验,可以独当一面的职场老鸟,集团(B2B、淘宝、天猫等等)更适合那些容易迷失方向的职场新人。

在蚂蚁的这段日子最大的收获或许是认识自己以及学会做好业务。刚入职的时候老板就希望我们在工作中要注意做好技术的沉淀,反馈给团队以帮助其他业务开发者。可惜没有做好这一点,或许是因为对业务的理解太肤浅,不够深刻,又或许是自己还太嫩,实践经验不足。一开始由于没有规范,代码毛病很多,以前在学校是处于野蛮生长的状态,代码写得很随性,但现在情况不一样了,你写的代码最后是要上线的,然后你的代码若干年后可能还会交给其他人来维护或者重构,所以代码质量一定要高标准保证。然后要紧记的是,在创业公司,人人都应该是产品工程师,不是切图仔,也不是 CRUD 机器,你对你的业务应该要有充分的认识,例如你参与的是支付业务,你是否了解支付系统的架构、你是否知道完成一笔交易涉及到哪些接口和服务、你是否知道每个接口和服务目前都面临着哪些问题或痛点等等。尝试从架构师的角度去看待问题,而不仅仅是为了完成交付来开发界面和接口。很可惜对于这一切我都后知后觉。在蚂蚁比较难忘的要数和源哥一起合作的日子了,源哥会毫不吝啬地和你分享他过去几年的职业经历以及给你将来的职业规划建议,最终没能和源哥共事还是深感遗憾。

离开,并不意味着失败,反而让我的梦越来越清晰。还记得曾经的我是多么的热爱生活,敢爱敢恨,有交心的朋友,会刷动态,会开黑,会撸狗,会陪爸妈逛街,会写点小游戏,会为了让 GNOME 可以轮播 Taylor 的壁纸还有 FIFA 挂机而写脚本等等。而过去这一年,这一切都与我渐行渐远,为了生计,我选择了远离生活。刚开始的我对技术还是抱着来之不拒的态度,想做什么就学习什么,或许没有什么成就,但我很享受这个过程。而过去这一年,以解决将来的就业问题为由,我给自己打上了前端的标签,并自欺欺人地认为自己“热爱”技术。但当我踏入江湖的时候,我突然释怀了,我其实没有那么喜欢技术,过去这一年我只是漫无目的地被技术奴役罢了。写到这里,我不禁想起鱼老板说过的一番话——“技术只不过是浮云,生活才是真正的追求,我相信热爱生活的人,技术不会差到哪里”。当你真正扎根生活的时候,你会发现你所热爱的一切最终都源自生活。如果可以重来,我会选择向约翰·卡马克或者伊隆·马斯克学习,而不再是丹尼斯·里奇,因为我不是科学家,我只想通过技术让我的生活变得简单。

梦,源于生活,亦止于生活。