首页 > 科技 > 一个理想主义者的求职故事(秋招已拿阿里+美企等校招offer)

一个理想主义者的求职故事(秋招已拿阿里+美企等校招offer)


我不太写一些解题经验,但其实挺愿意和大家说说我的思考;我少与人谈起求职中的选择与挣扎,因为三言两语说不清。在这里,分享一个理想主义者的求职故事。

一、个人奋斗:“野路子”技术栈

编程起点在高一——准确地说我是一个文化课还不错的正经「NOIPer」,巅峰(至今)水平无限接近「省一」的样子。

熟悉的人知道,算法竞赛是一个脑力决定上限,体力决定兑现的运动项目。在兑现自己“天赋”的过程中,会进入一种“迷幻”的心流:是怜悯众生的淡淡忧伤,是唯有算法高的“冷漠”。之所以“半途而废”,一方面正因为本就玩世不恭、不想变得更“冷漠”,另一方面我不认为经典算法还有突破性的工作的机会留给我做——理论计算机改变世界的事还是留给WJMZBMR 这样的人……

后来靠文化课走到了灯红酒绿夜夜笙歌的五毛场文秘学院和冷冷清清凄凄切切的西南某高校面前。我终究是一个“技术”人,对于依托着闵行开发园丰富资源的诱惑,果断选择了灯红酒绿夜夜笙歌——这是“野路子”的起点。

第一年通识教育,即灯红酒绿夜夜笙歌;第二年因为一些强外部原因,选择学了一年物理;第三年进入大数据学院,才算学习了“一些”机器学习、分布式系统的“正经”课程——准确地说只有两三门,更多课程是概率与统计。

于是,我成了久疏战阵的算法老兵、三年上了两门课的数据伪科学家、没学过数据库和网络的非主流 Web 全栈工程师——谁能料到我读完Flask 源码没多久,Python Web 就凉的透彻心扉了。

二、历史进程:工作or出国?

但我并没有担心,因为:

1. 大部分技术人都是走在变得“不正经”的路上。

2. 我并没有看起来的那么“不堪”,身边也没有人敢说我是“野路子”的,因为课程之外的学习与项目,补足了那些短板。以 data science 为例,一年级第一次跑 miniimagenet,二年级参加了几次 kaggle,——对技术的热爱是没有跑偏的。

3. 在贸易战之前,一直是做着出国的准备,没有迫切的依托专业知识就业的需求。甚至基于对自己的了解,在课程之外更加“野路子”:做过嵌入式开发、区块链、投资助理、咨询顾问……

因为一些强外部原因,排除了在国内继续深造的选项;因为历史进程,基于我的教育背景、生长环境与社会关系,情感上无法接受“毕业后在第一世界的世界第一强国工作,寄钱到第三世界的未来世界第一强国”,于是“颤颤巍巍”地准备就业。

所以说,人啊,就是不知道……

三、小的选择:engineer or scientist?

或许因为程序员“沉默寡言”,IT 行业内的信息差巨大:在民企快乐奋斗的人、在外企快乐养老的人、在民企痛斥奋斗的人……不同角色对行业情况的认识常出现彻底相反的情况。

很多人不知道 pivotal 这样的存在,很多人觉得 BAT 的技术就是使用框架的熟练度——我也曾一度以为领英只是一个业务公司。

对于信息的有限性,一是更要保持透明。很多时候并不是没有听到反对,而是靠躲进错觉弱化自己不愿意相信的东西。也正在因为热爱,尤其难保持冷静客观;二是扩大获取信息的维度和质量。学生很难通过社交获取全面的信息来源,像【编程剑谱】这样的平台提供的从业者一手信息就显得尤为重要——尤其就互联网大厂而言。

四、技术 or 业务?

如果选择 IT 行业是前提,我面临的第一个选择并不是做算法或做开发,而是做技术还是做产品,甚至是 front or back office——“国定路现男友”的外号不是白叫的,课程外的经历也打磨了我的产品能力。

除去技术人那份合理的骄傲,我选择技术而非产品或解决方案很多是出于外部因素。且不谈把最大的爱好作为工作的合理性,“社会人”很难依靠不稳定的主观能动性,是从“生活所迫”中汲取的无与伦比的力量。

“如果我这样的人不去做技术,那么谁还会去做技术”、“如果我这样的人去做了别的,那么谁还会相信技术”——是这样的声音让我我不得不给我的朋友们「打个样」,有力量去成为一名优秀工程师。当然,另一方面收入起点也稍高一些。

五、Scientist or engineer?

从热度看,这个选择也许很多人是下意识地,“想什么呐,快去做算法”——甚至把做开发当作「曲线救国」。

我选择做engineer是因为我“做不了” scientist。我的 ml 的应用技术栈主要有两个部分,一是 dataming,更偏向业务;二是 mpp system、CUDA 编程一类。对于视觉、自然语言或者图谱这样的细分,虽然都撸过 demo,但缺少领域知识。

之所以发展出这样的技术栈是因为我对复杂程度较高的机器学习模型的 SaaS 闭环的落地场景不看好,可用的服务十分依赖非自动化的调试。在工作内容上,实现部分的比例并没有开发高。(现在看近半年AutoML、what-if tool 和 MLflow 类似的工具的快速发展带来一些新的可能性……)。

平台层面,工程通用性做的好的岗位十分稀缺。我对于不考虑一致性可用性的离线分析又没有兴趣,加上对 ml 算法较平坦的学习曲线的逆反心理,就选择了主攻职业发展深度和应用场景更成熟的开发岗位。回过头来看,engineer 的另一个好处是不需要高的研究型学历。至于是 data engineer、ML enginee r还是 backend engineer,校招的划分粒度并没有那么细致,实际工作中的角色划分也可能会不太一样。

选择偏向服务器端开发,对我意味着失去了不知道是劣势还是优势的两门课的经验,放大了没学过数据库、网络、操作系统课程的「三无」。

六、认识社会:春招找实习

盘算完,就“狼狈”地开启春招了,一些私交不错的朋友对于我找工作、做开发的决定也表现出前所未有的热情、给予实质性的内推——也导致了我的更加“狼狈”。

连夜翻了两遍《剑指offer》《程序员面试金典》找感觉,就参加了 google 上海的实习面试。google 确实不一般,上来直接手写了两百行的 dp。我呈现了自己整个思路形成、演进、验证的过程,产生了拿 offer 的错觉。但之后久疏战阵的问题还是暴露了出来,在复杂算法设计和问答状态上都有所发挥,却在简单的字符串匹配上遗漏了一种 case…后来通过一些特殊渠道得到了反馈,虽然总体 positive,也证明了自己的能力,但是竞争太激烈了。

和 dream company 失之交臂,我痛定思痛,让朋友内推了 MSRA 苏州的 RSWE 岗位。朋友疑惑地,“你一个上海人,怎么就跑到苏州去了?

”抛去宏观的部分,在战术方面,这是我利用外部条件打破供需框架做的第一次尝试——到了面试日,果然周围大多数都是浙大的同学。这次面试的题面比较简单,一二轮考察了 LRU cache(因为没有学过计算机体系与操作系统,所以我自己构建了一个特殊的数据结构…)的实现和二分的变种,顺利到达终面。

但是去苏州的弊端也在此体现出来,精力受到了早起和舟车劳顿的限制,也因为做的准备并不那么充分,遗漏了 edge case。

和最享盛名的两家公司失之交臂,又没有充裕的时间重新准备,我在抓紧做题找回熟练度的同时,也开始重新思考春招的意义和自己的状况。

在阅读了编程剑谱《带你深刻认知在校期间的几种实习!》一文后,我把「春招实习转正」作为了首要目标,而不是“刷简历”。后来自己也感受到了,在春招中,大多数公司的面试题都很基础,偏向于考察你解决问题的思路的完整性和熟练度而不是通过难度筛选。操作难度比秋招不知道低到哪里去了,所以我在投递具体岗位的时候也更谨慎务实了一些。

面试改进层面。在 MorganStanley 的终面中,因为全英文面试、面试时间长,我疲惫得只能在作答时多次重复自己的英文表达。我认识到和在苏州一样,我在精力分配和耐久上有所欠缺。在后续的面试中,尽可能选择了远程或者提前到面试地点附近休息。

最后拿到的 offer 都是 remote 面试或是离学校近的:SAP Lab、蚂蚁金服和某家核心产品更迭很慢的美国公司的开发实习 offer。

认知改进层面,折戟多次后,修正到了自己过去“top3学校里可能最好的学院的学生,应该被哄抢”的心理。

面试体验上,蚂蚁金服的实习面试经过了六轮,有手写快排,有聊做过的项目,也有分布式系统设计。值得一提的是,在超长跨度的面试中,阿里的工程师几乎会挖掘到你所有技术方向的掌握程度,而不是传统的岗位导向。

说起来见过的 hr 里面,埃森哲的颜值基本没有对手。

七、实习经验

最后选择了 SAP,一方面是出于对宏观情况和学业状况的考量,另一方面获取了强外部信息——通过阿里的实习面试,即使不去实习,也有可能获得转正机会。

实习所在的组恰好赶上了 reorg,导致我长期处于手头无事可做和可做的事可有可无的状态。所以在工作内容上没有什么特别值得一提的,仅和大家分享一下一些认识上的转变。

通用软件领域的宽泛性决定了并没有“师徒传承”这样的紧密纽带的存在,所以你能做什么、你能学到什么,基本取决于主观成分。一家成熟的公司能够把核心业务的功能交给实习生开发,一定是因为实习生获取了信任,而不是老板主动给予的信任。在具体的操作层面,需要的是从售前到售后的业务层面的通盘思考,而不是局限在特定功能的实现与性能的调校。

如果你过了一定的岁数,就会意识到真正交往前,很难知道一个人究竟是不是适不适合你。同样的道理,只有真正到了产业内,才能有机会知道大家究竟在做什么。

保持对自己看到的信息的开放透明,会修正自己的一些“执念”与先入为主的在进入产业之前给自己做的心理工作、思想斗争的一系列“幻觉”。

八、学习路径:培训班vs科学家

吃了春招熟练度的亏,就是马不停蹄的准备秋招。刷了三十题左右的 leetcode medium 找回感觉,然后在 poj 刷了大概 50 题。

除了基础的算法能力的打磨,对领域知识的深度挖掘,其实有比较容易陷入的误区。

在专业化程度提高、稀缺性变大的过程中,也会严重的限制自己的选择面;精力有限的情况下,又容易忽视其它方面的基础知识的查漏补缺。对于校园招聘而言其实是不利的。

我的准备是针对「端到端」核心能力的打磨。

具体来说,算法层面,能够从问题抽象建模做到工程落地;数据层面,能从数据采集做到 storyline 的构建;应用层面,能从需求分析做到交互设计。

以此为抓手针对求职查漏补缺,于有了可以参考的技术边界。不会浪费精力在不太可能在笔试面试中出现的技术细节与旁支,专注于泛领域中例如网络中“输入 url 回车发生了什么”这样的核心问题。

跳出算法、基础知识、项目的传统框架,如果尝试对技术分层,例如,数学、模型、算法、代码、工程、设计、架构…培训班 or 自学,通常是从应用到原理的路径,而在学校里反之。对就业而言,培训班和学校谁更有优势?其实不管哪里,绝大多数人都只能停留在某一层或两层之间横向发展。

如果在此之上,能够具备端到端的纵向能力,就是常说的T型人才。在细分下会有优势,如果纵向连线的同时,注意三四个层面连接点的横向发展——兼顾了就业的选择面,就是求职之「王」。

当然,如果知识还停留在随便搜一篇公众号文章读一下就能进步的水平,那也不要考虑“路径”了。

九、再战秋招

真正到了秋招,才发现“实习转正”这一决策的高明之处。尤其对外企而言,秋招开放的 hc 极其有限——并不是你做的不好,而是机会实在少。

在阿里加面三轮,合计九轮之后,我相当于总共拿到了两个“实习转正”的 offer。加面过程中主要问的是实习中的项目情况,非常细节。

其它准备就是从谱哥处学习了简历写法。外观上自己设计了一套排版原理。内容上借鉴谱哥的简历,把具体的技术内容与项目情况细化到知识点。

当然在具体操作中,把十页知识点发给面试官就是愣头青了。写得足够详细,可以引导面试官的发问,但面试官也可能觉得你只会这些东西。比较体面的方式是根据简历要求做一个总结性的发过去,有条件再在面试中附上具体掌握的知识点。

投递方面,值得一提的还是对供需关系的固有框架的打破。某美企校招宣讲会,我跑到同济和该公司分布式计算负责人谈笑风生。他笑着,“你一个复旦的学生,怎么跑到同济来了”,给了我终面直通卡。

因为民企已经拿到了蚂蚁金服,没有继续投递。秋招竞争激烈的另一个表现是,外企今年常问和各自业务相关的系统设计题。例如 ebay 的实时日志,amazon 的商品管理。最后除了「实在机会少」而石沉大海的 msra,另外拿到了某两家美企的 offer。秋招就波澜不惊地结束了。

当然,既然我还没毕业,那理想主义者的求职故事就没有结束。

十、大的选择:理想主义与现实

之所以要谈谈理想,是因为面临过太多选择。

IT 行业的快速发展,背后是过去百年数学和物理的进步的积累。底层学科的发展减速、动力逐渐偏向应用学科,和新能源新材料相比,data incentive 是否能够创造、推动产业快速发展、IT技术是否在近的未来依然能够和三十年前一样充满魅力,都是未知数。

国际层面看,中美博弈长期论调下,如何在发展路径尚不成熟的 996 民企和整体上外企核心业务远离中国且几乎没有增量的外企中选择和生存。之前考虑去苏州和选择去 SAP 实习也是因为那时的中美贸易摩擦高峰。在战略相持阶段,重要的不是选边站,而是加大自身的筹码。

国内城市中心化进程加快。上海作为金融中心,相比未来可能的科技中心深圳与杭州相比,并没有那么多新的机会,在上海找一个有靠谱业务背靠的不搬砖的开发工作真的不易。

行业内部看,新需求的产生主要来源于“爱”而非“科技”。换言之,软件也好互联网也好,技术不是动力因素而是实现手段。新技术如 IOT 的产业化也还需要时间。

从生活方式看,是一心寻觅自己想做的事业,全身心的投入进去,还是同时间运营着多个 sideproject,亦或是曲线救国甚至更多地享受生活。具体操作中,面对这些选择的关键是知道自己究竟想要什么。

我之所以选择 it 产业,不是因为它发展快,而是因为它变化快——它能让我有可能能影响到很多的人。那么我需要去掌管着 apache 顶级项目、能够持续出好用的东西的地方看看;我之所以选择做技术,不是因为赚钱容易,是因为做“技术”难——难在只有技术方法可以在数据变现时保护个人隐私,那么我需要到大型项目的地方学习产品;我之所以国内只看蚂蚁,是因为国家未来金融数字化基础设施任重道远——远在效率、技术可控,那么我需要参与通用性与安全兼顾的实践。

如果我真正想做那件事,那我在哪儿,我在做什么,我是不是在做适合我做的事,这些都不重要。重要的是我在去做那件事的路上。

如果你不知道想做什么,那么很可能只想赚钱;如果里里外外都想挣钱,那么一样可以走出一条路。

如果你很清楚自己的方向是什么,那因为或大或小的现实,走点弯路也没什么,甚至有时候需要有意在平坦的路面上曲折前行。

十一、“方法论”总结:像追妹子一样找工作

道:明确的目标会给予力量和指引,我的目标让我觉得我比很多人更有力量。

法:具体目标是建立关系,而不是秀肌肉。过去的经历证明现在的能力,现在的能力决定能做的事情,现在的决心决定未来能把事情做的怎么样。脱离关系谈能力和态度,就好像在说“我有钱有腹肌,你为什么不喜欢我?”

术:充分的准备。非技术层面主要是如何让个人材料尽量过关斩将,比如走一些非常规路径、扯下脸皮 network。能力上,通过端到端的打磨,有方向性地补足自己的短板;态度上,针对目标的业务场景与偏好进行一些匹配。至于心态调整、谈判技巧相较而言倒是细枝末节了。


本文转载自编程剑谱(ID:jp_learner_it)| 作者:svlitlec

仅做分享(观点仅代表作者本人),如有侵权,请联系删除。

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/248096.html