不知道发在这个版对不对,这篇文章记录了我转行的大致经过和心态的变化,希望对另一些正在经历同样过程的人有些许帮助。
-------------------------------------------------------------为什么转行------------------------------------------------------------
我的专业是材料化学,在读博期间就已经发现科研不是真爱了,有想法想要转行,但是一方面老板平时push得很紧,另一方面真心不知道自己到底喜欢干啥,所以也仅仅限于有想法,没有啥实际行动。我17年毕业,17年初开始试着投简历,参加学校Career fair找工作,海投的简历基本没收到回复,校招面试参加了三四个,拿到一个startup的实习。说实话,我找工作的时候,没有尽全力,因为不擅长人际交往,基本没有找内推。还有一点很重要的原因是,我觉得自己博士阶段的工作比较trivial,感觉没有培养出对自己的能力和工作真正的认同感,这样很难convince自己和别人我有passion和capability。
毕业找工作的不顺利让我想到要转行,虽然我一度在纠结这算不算是另一种形式的逃避。。。
我自己的优点是学习能力比较强,缺点是对生活和工作缺少规划,有一点“小富即安”的心态,如果当前状态还过得去,就不会想着主动做些什么事情去改变,再者人际交往能力比较欠缺,所以不太能够从别人那里快速获得有价值的经验,很多信息都是我一点点在网上慢慢收集到的。
在转行这件事情上,我其实感觉自己转得很任性,我之前并没有太多编程经验,只是本科的时候上过C语言,当时对这门课根本不感兴趣也不重视,到后来C语言上机就很痛苦,基本不太会。后来我博士期间的一次组会,一个组员问了我一个问题,说他读到一篇paper,报道用machine learning的方法,通过一堆fail的实验数据,成功预测出可行的recipe,问我同样的方法可不可以用到我自己的材料合成过程中。那个时候,我对machine learning一无所知,根本答不上来这道问题,但是我对材料合成当中try and error的模式比较厌恶,觉得如果有一个方法可以更省事地screening出条件,那很不错啊。另一点原因是我身边有很多CS领域的从业者,工作待遇比较好,就感觉,既然想要转行,反正也不清楚自己喜欢什么,那就转个待遇好的吧。还有一点原因是,我从小到现在一直算走得比较顺,运气和机遇都不差,基本没有尝试过自己特别想要达成什么愿望,然后通过个人努力和规划一点点实现,我越来越觉得这样让我的生活很没有方向感,让我不清楚自己能力的边界在哪里,也让我对自己的未来没什么掌控感和安全感。所以我想通过用自己的主观能动性去实现某件事情来改变这种随遇而安的现状。
---------------------------------------------------------------转行初期------------------------------------------------------------
我开始做转行准备是2017年六月份,也就是毕业前期,之前就听说转CS需要刷题,可我总觉得,只刷题不知道基本原理肯定不行。所以找到一篇文章,讲学习CS的系统路径:https://github.com/ossu/computer-science#prerequisites,开始按照这篇文章列出的课程选课上。 在这之前,我上过,对语言有基本了解。后来上了 - Andrew Ng (Coursera) 和 Build a Modern Computer from First Principles: From Nand Tetris Part I- Coursera (Core systems) (其实这篇路径文章总结的非常好,但是这要求一个长期的系统学习的过程,对我这种转专业,想在一两年内找到工作的人,有点远水解不了近渴。不过空闲时间里,我还是想照着这个list一点点慢慢积累, 我后来知道这两门课其实不是我目前急需学习的内容,我当时最需要上的算法和数据结构,不过这些课程的学习至少让我知道自己并不讨厌编程)我后来实习的公司是做电池的,需要用python来处理批量数据,几周电池测试的数据用python script一会儿就能分析完,这让我觉得,即使以后不做CS,会编程对工作也会很有帮助。那时候我靠自学,比较快的上手能自己写写小程序分析数据并做可视化,虽然很初级,但是也蛮有成就感的。
2017年10月初,在湾区实习期间,开始用leetcode刷题,每天只能刷一两道题,见到的题基本上都是不会的,所以开始补上算法和数据结构的课,选的是经典的是Cousera上Princeton的算法课,这门课程的算法是用Java实现的,我不会java,所以本来想不学具体implementation,只学算法概念,然后再试着用python去实现;后来发现这样不行,不懂java语法,不去做implementation理解起算法来很吃力。还记得第一章的作业是用Union Find去simulate Percolation threshold,现在看起来很routine, 但当时看到这个作业真是一脸懵逼。。。课程和作业难度挺大的,特别是对我这样几乎零基础的人,不过内容真心很棒,讲得很实用,coding风格也非常值得学习。我是用了三个月的时间(11/2017 - 02/2018)上完了课程的上部分,后来陆续吧下半部分也上玩了。遇到看不懂的code就自己一行一行跟着打一打,实在理解不了就先放下继续往下看,写作业之前再复习下本章内容,作业写不出来就去搜别人的答案,第一遍做到80分过关能submit就好,继续往后上,上到后面发现前面的内容就变得有点基础了,然后回来二刷,把作业做到100。我自己的作业答案在这里https://github.com/Self-Learner-DD。我后来面试的时候,把这门课配套的那本Algorithm小红书来回看了三遍,感觉对我算法的熟悉和掌握上非常有帮助
---------------------------------------------------------------转行中期------------------------------------------------------------
18年2月份的时候,转行的想法还不是很坚定,更多的是一种骑驴找马的心态。17年12月份结束了实习,找了个博后的坑,实习的时候,学了很多电化学的知识,对储能前景也看好,博后的组也做相近的方向,那个时候觉得自己的本专业不见得需要完全放弃,两手抓也可以。但是很快,实验又开始进入琐碎的试错阶段,而且想要两手抓,经历真的跟不上,转行的心情又稍微坚定了一点。
我在转行这件事上,对外人一直讳莫如深,怕被身边的朋友认为是异想天开,所以只是自己在网上找相关的信息。网上对于CS转行的信息太多,而且差异很大。一些人靠自学,一批人上boot camp,还有一部人读了CS的master。看了之后感觉更混乱,一度觉得自学可能真是一条不太切合实际的路。那时身边虽然有一些数学和物理专业的同学和师兄师姐转行了,但感觉别人至少数理基础好,做的方向也跟理论计算多少有点关系,所以感觉他们的例子对我不太有借鉴作用。2月底的时候,我听说以前本科班上的几个同学都转行去了FLAG, 心想不能再埋头苦干、闭门造车了,所以找了转行的同学打听了一下,他们转的都是SDE,没有系统上过CS的课,而且都说重点就在刷题。一个刷题花了一年零两个月,另一个半年多。这下子心里就比较定了,既然是靠刷题这样的应试技巧,他们能做到,我也就能做到。 从2月底开始密集刷题,这时候我已经有上算法课打下的基础了,很多题虽然还是不会做,但理解答案不成问题,同时同学推荐了某网课(不打广告了),上了一下,还是有帮助的,帮忙总结了题型和常见题型的解法。这时进度是这样的 (2/27/2018 - 67/756) (3/2/2018 100/756)(4/6/2018 - 267/776)(4/24/2018 - 340/788)(6/13/2018 - 467/816。刷题顺序的话,我一开始是按题号刷的,发现有些题太难,后来按AC率刷,偶尔按题号刷,有时候跟着网课按题型刷,5月份的时候开始按tag刷,发现之前按AC率刷其实很多知识点没顾及到,比如greedy 和bit manipulation;我感觉一开始可以按AC率刷,基本上由初级中等难度的题开始,积累一定的刷题量和解题方法之后,再按tag来刷,一方面可以帮助扫除盲点,方便做总结,另一方面是有时能够惊喜的发现原来一些题还有另外截然不同的解法,比如subsets那一题除了用常用的backtracking,居然也能用bit manipulation. 我可能是刷题刷得比较多的,L eetcode上显示刷了700多提,再加上刷各种面经提,应该刷了八九百题吧, 刷了几遍我也不记得了。不过感觉刷题多少才够这种问题本来就是因人而异的,不用去找标准,我觉得刷题主要就是为了让你能够熟悉常见的算法、数据结构、题型、和解题思路,学会怎样分析问题,这样即便面试的时候遇到没见过的题,也能够有大致的思考方向。
后来我意识到光刷题也不行啊,简历上没东西,连面试都拿不到,网上搜了下,很多人会去udemy跟课程做一两个Project,所以我也在上面找了个web development的项目(很便宜,10刀的样子),跟着做了起来,链接是:https://www.udemy.com/the-web-developer-bootcamp/ 我从四月初开始做这个项目,项目本身不难,但是东西很繁杂,加上之前没有接触过,所以感觉内容太多,从前端的HTML, CSS, JavaScript, 到后端各种框架,module,我上到3/4的时候,觉得记不住那么多东西了,只能跟着tutor码code,觉得这样很没意义,所以六月份的时候又从头开始上了,有点浪费时间。项目简历这一点上,其实我大致是认同项目是为了简历服务的,做项目首要的目的是填充简历,我之前的同学说他找实习的项目就是本科(非CS)课上用Matlab写的作业,自己稍微润色修饰下,我表示非常吃惊,我都不知道上哪找我的本科作业了。所以其实像我这样做是很没效率的一种做法,不过我做事情就是比较慢,抠细节。我密集准备项目的时间大概是一个半月,从6月中旬到8月,做了三个项目,有两个是Udemy上找的,一个是慕课网的项目,我之前的刷题帖上都有信息,找找就能找到。
四月份找了个没有做实习就拿到full position的转行同学讨教经验,得到的信息是
(1)尽量在毕业满一年之前找工作,这样针对New grad的面试会比社招简单
(2)对经典面试题要非常熟悉,同样的题最好知道多种解法,能在短时间内写出简洁bug-free的代码 (这点要求有点高了, 后来我面试的时候,感觉还是更注重交流和思路,很多公司并不太要求bug-free…)
(3)做项目之前,最好明确今后找哪个方向的SDE,前端?后端?全栈?Machine Learning?其中Web的缺口最大
(4)了解你所用的programming language的各种basics和标准库的数据结构的底层实现,比如priority queue, JVM, gabbage collector这些
(5)跟同期找工作的人简历沟通,越多越好,多交流求职信息,8,9月份放出的opening最多,要抓住timeline(这点我做得不够好,没联系到很多同期找工的人,而且投简历求职也听拖延的)
(6)充分利用地里的资源(非常感谢地里提供的各种信息,和内推机会)
(7)开朗一点,不要害怕寻求帮助
---------------------------------------------------------------转行后期------------------------------------------------------------
8月底,我的简历基本成型了,也积累了一定的刷题量,可是心里还是没底啊,不敢投简历,更不敢投大公司,怕拿了面试没准备好浪费了机会。现在想想真是naive,面试哪有那么好拿。。。期间又在家颓了好多天,9月初,眼看着要错过opening 最多的timeline了,开始硬着头皮投简历。大公司是不敢投的,一开始先投的小公司,在linkedin以及Indeed上找的,我认识的人少,所以大部分是海投的,一些在地里找了内推。大部分投出去的简历是没有回音的,隔了一周开始陆续收到拒信,一个店面和OA都没有,那段时间应该挺消沉的,消沉到投简历也不积极,每天可能就维持基本的刷题量吧。
后来知道有些公司是会先广发OA,再看简历了,比如coursera, LinkedIn, Twitter, SAP。 拿了OA,至少有事做,也可以当练手,所以我就把这些全投了, 都拿到了OA,精心刷了OA面经,题也全做出来了,不过最后都然并卵了,SAP一开始答应给onsite,后来又反悔了,不过如果没有别的机会,还是推荐去试一试,就当刷题练手了。
就这么到了10月份,我Google的同学开始催我投Google了,可是我连个小公司的面试都没经历过,真心没底啊,所以又开始拖。拖到最后,在10月底投了,经过一些波折,拿到了面试,timeline是这样的:
10/19 refer;11/02 通知给电面;11月16号电面,后来临时被cancel;重新约到11/27;11/29通知给onsite;1/15号onsite;1/28通知要加面;2/1号加面;2/11号通知过了HC。
给个timeline就是为了说明,其实从通知面试到真正去面试,这中间还有很充分的时间来做针对性的准备,大家不要害怕投了简历之后,没准备好浪费机会,尽早投简历,尽早拿面试,然后有针对性得去准备。我确定拿到店面之后,就开始总结地里的电面面经,确定onsite之后,开始总结onsite面经,另外的时间用来总结leetcode题型,复习简历项目,看Algorithm小红书,和上一些别的课程。
我最后求职的结果是投了100+份简历,拿了4个OA,两个HRcall,两个技术店面,两个onsite,两个offer。面经在之前发的帖子里。
投简历的话,尽量找内推,认识的同学,或者地里的内推也挺靠谱的。内推比海投的回复率真的高出太多,我的两个店面+1个HRcall都是内推得来的,海投就拿了个HR call,还没有下文了。如果有机会去学校的career fair应该也很好。
面试的话,除了刷题,有个mindset我觉得挺有用,就是面试前告诉自己“I’ve already got the job, all of this is just formality",这是我从这个姑娘的YouTube 视频里学到的(https://www.youtube.com/watch?v=4plu0nLyb_s)。这种mindset其实有他的道理,因为公司既然愿意给你面试机会,也就你的resume是符合qualification的,之所以要面试,就是要证明你是一个“real person”,你可以back up 你在resume上的statement,你可以get along with other people in the company. 带着这样的心态往往可以让人更自信,然后在观念上,会让自己像一个已经入职的新人一样展示出对公司各个层面的curiosity。
另外的建议是要学会跟面试官沟通,拿到题目之后,别急着动笔写题,一开始要跟clarify题目的细节要求,然后阐述自己的思路,征求他的意见,问是否可行是否需要改进;如果没有完整的解题思路,就讲一些相关的点,比如自己对题目的理解,用哪种data structure做input, output的representation,如果思路被卡住了,也可以和面试官沟通是在哪里被卡住了,面试官一般会给一些提示的,就是至少表明you are on the right track吧。我一般会等我的整体思路被面试官认可之后才开始写code。写完code,面试官会要求你分析时间空间复杂度,run test什么的,再根据他们的要求来就好。如果有可能的话,找已经入职的朋友帮忙mock一下,应该挺有帮助的。
---------------------------------------------------------------心态和过程----------------------------------------------------------
从2月份坚定转行信念到最后,准备的过程中我大部分都是一个人,没有能够找到小伙伴一起,四月份的时候,经转行同学提醒,要充分利用地里的资源,所以开始经常逛一亩三分地,发现地里的资源真的很丰富,公开课,简历,面经,内推,面面俱到,很多比较精华的内容是需要积分才能看到的,不过积分很容易攒,新人报道,回帖发帖,每日签到都能拿积分。我自己的刷题记录贴在这里http://www.1point3acres.com/bbs/thread-424621-1-1.html;我曾经试图在地里找刷题小伙伴,但是效果不是特别好,虽然建了一个群,但是并不活跃,也没有太大帮助。所以如果有大腿抱,或者有小伙伴能抱团当然好,但是这最终这还是件私人的事情,需要自己一步步规划,自律,坚持。我其实不是一个特别自律的人,中间也有过焦虑沮丧到不想起床,不想出门,只想无脑看综艺的时候,中间为了克服焦虑,看了戴尔卡耐基 how to stop worrying and start living, 没看完,只是有一句话印象比较深,“live one day at a time",就是说不要为未来的事情而焦虑,focus在当下,就算遇到了特别大的困难,如果只是想着“咬咬牙,挨过今天就好”,那么应该也就不会太难,然后是下个今天,下下个今天。。。不过如果真颓了也就算了,不要太责怪自己,内疚和自责是种挺负面,很容易带来内耗的能量,前路挺艰难,还是要打点好心态,轻松前行。
------------------------------------------------------------------现状----------------------------------------------------------------
我现在已经入职将近一个月了,还在熟悉公司内部工具和组里业务的阶段。现在我感觉到的是,刷题与目前工作的相关性真的有限,相反我之前做过的项目和看过的书对工作的帮助更大。比如我之前做的项目用的是Spring框架,用到了java annotation和dependency injection来实现Spring框架的inversion of control. 虽然现在公司不用Spring framework,但是公司应用的框架也用到了相似的依赖注入的方法,所以之前的经验就让我能更快的理解现有的框架。再比如我之前看一本叫Design data-intensive application的书,有一节是讲data encoding的,介绍了protocol buffer,就是我现在每天都要用的东西。所以虽然为了拿面试和offer,我们需要刷题,不过如果有时间的话,我也还是建议转行的小伙伴多上上课,补补基础,多了解一些相关的知识。
最后祝大家的付出都能获得回报!

材料化学博士后-谷歌offer的转行总结 -- 转自一亩三分地相关推荐

  1. python算法工程师-从材料硕士到算法工程师的转行之路,有三不建议

    原标题:从材料硕士到算法工程师的转行之路,有三不建议 作为一名从传统行业成功转行算法工程师的老人,经常会有想转行互联网,或者是算法工程师的朋友询问我转行的经验.为了能够帮助到更多希望转行的朋友,特在此 ...

  2. 日本计算机科学家谷歌评审,高一被清华姚班录取, 高三委拒谷歌offer, 一个重度网瘾少年到理论计算机科学家的蜕变...

    原标题:高一被清华姚班录取, 高三委拒谷歌offer, 一个重度网瘾少年到理论计算机科学家的蜕变 今年的理论计算机顶会FOCS,一位来自浙江湖州的小伙子陈立杰一口气中了3篇论文,还拿下了最佳学生论文奖 ...

  3. 高一被清华姚班录取,高三委拒谷歌offer,一个重度网瘾少年到理论计算机科学家的蜕变...

    全世界只有3.14 % 的人关注了 爆炸吧知识 去年3月15日,ACM 计算理论年会(STOC)Danny Lewin 最佳学生论文奖揭晓,获奖论文作者为来自麻省理工学院的陈立杰和来自 Weizman ...

  4. 3个月内通过7轮面试,程序员拿到谷歌offer后却被女友威胁......

    提到国内著名的互联网公司,相信你一定能够罗列出很多,但在世界范围内,能够做到屈指可数的互联网公司,或许还是比较少的,比如谷歌 最近,有一位读者在职场论坛发了这样一个帖子"程序员花3个月时间通 ...

  5. 计算机在材料化学中的应用大纲,材料化学-《材料研究方法》课程教学大纲

    <材料研究方法>课程教学大纲 一.<材料研究方法>课程说明 (一)课程代码: (二)课程英文名称:Research Methods of Materials (三)开课对象:材 ...

  6. 计算机在材料化学中的应用论文,【多媒体技术论文】网络多媒体技术在材料化学中的应用(共2815字)...

    [摘要]<材料化学>是一门由材料科学与化学两大类学科形成的新兴交叉学科.本文结合<材料化学>课程的教学实践和体会,通过分析课程教学中存在的问题,针对材料化学学科特征和研究内容. ...

  7. 高一被清华姚班录取,高三委拒谷歌 offer,一个重度网瘾少年到理论计算机科学家的蜕变!......

    点击上方"五分钟学算法",选择"星标"公众号 重磅干货,第一时间送达 去年3月15日,ACM 计算理论年会(STOC)Danny Lewin 最佳学生论文奖揭晓 ...

  8. 高一被清华姚班录取,高三委拒谷歌 offer,一个重度网瘾少年到理论计算机科学家的蜕变!...

    点击上方"五分钟学算法",选择"星标"公众号 重磅干货,第一时间送达 去年3月15日,ACM 计算理论年会(STOC)Danny Lewin 最佳学生论文奖揭晓 ...

  9. CP2K+Gaussian+LAMMPS+ReaxFF计算材料化学系列四大专题。

    背景: CP2K是一款较为强大的AIMD计算程序,免费开源,可高效并行.由于CP2K在做DFT时可以速度非常快地计算成千上万个原子的体系,因此在大规模模拟体系中经常被一些学者用到.比如计算原子数达到一 ...

最新文章

  1. 微软小冰作词又作曲,网友:要出道的节奏吗?
  2. 阿里安全开源隐私计算新技术:计算速度快20倍,通信成本低2倍,已登安全顶会...
  3. 防火墙(6)—— -d的用法
  4. JS 获取浏览器信息,给出友情提示,避免部分兼容性问题
  5. 极其简便的PHP HTML DOM解析器PHP Simple HTML DOM Parser/有中文手册
  6. wireshark协议插件开发--官方文档中文翻译
  7. 百度强化学习之Policy learning
  8. 【Hadoop】HDFS三组件:NameNode、SecondaryNameNode和DataNode
  9. Bailian4118 开餐馆【DP】
  10. spring oracle数据源配置,spring的多数据源配置(spring+ibatis + oracle环境下)
  11. 高速无人驾驶车辆防滑移MPC控制 学习笔记(未完结)
  12. 计算机打字键盘亮怎么设置,电脑键盘灯亮无法打字怎么解决?
  13. ZigBee技术[转]
  14. 干货 | 做外贸必须掌握的小知识
  15. Android实用视图动画及工具系列之九:漂亮的图片选择器,高性能防崩溃图片选择工具
  16. 30天自制操作系统——第二十三天窗口操作
  17. 假设某台式计算机的内存容量为256,计算机二级试题与答案
  18. 怎么把单个的pdf文件合并在一起?怎么把几个单独的pdf文件合并为一个?
  19. 果蔬超市管理系统的设计与实现
  20. 牙膏不只可刷牙——32不寻常用途!!

热门文章

  1. 南核目录2020pdf_最新版CSSCI来源期刊目录及增减变化!
  2. android9的手机,Android9.0全面适配18:9刘海屏,全面屏安卓手机即将大规模上市
  3. 【2008级的一些事】为妹妹选专业
  4. text、html、val、attr(Jquery取值方法)
  5. DeepLAC论文笔记
  6. 浅谈基于流媒体转发技术的IP数字监控系统
  7. 欧洲杯:葡萄牙连送乌龙球,遭德国4-2大逆转,下一场葡萄牙对战法国会有怎样的结局呢?
  8. 报错信息 terminate called after throwing an instance of ‘std::cad_alloc‘ what():std::bad_alloc
  9. shell awk 交互程序 (一个英语生字测验的程序)
  10. 2013年04月02日