本文共 5400 字,大约阅读时间需要 18 分钟。
关注「实验楼」,每天分享一个项目教程
金三银四,谨以此文献给所有正在准备跳槽的你。
正文共:3680 字
预计阅读时间:10 分钟
六个月前,我辞掉了初级JavaScript开发者的工作,并去东南亚旅行了五个月。在回到英国后的一个星期内,我就拿到了三个正式Offer,并接受了其中一个Offer,这份工作的薪水差不多是我之前工作的两倍。这个过程并不容易,但却是非常值得的。下面是我的整个求职经历。
我的目标
我原本计划去东南亚旅行3-6个月,我也有信心在旅行回来后能够找到一份更好的工作。我之前做初级JavaScript开发的工作经历让我明白了如下三点:
我喜欢编程,不仅仅是我的个人爱好,也是我的职业兴趣。
我喜欢后台开发工作,因为不用涉及CSS和可视化的前端开发工作。
我不是很喜欢Angular开发框架。
理清了上述这些东西后,我为自己设定了旅行回来后理想的工作目标,以及为实现理想工作目标所必需做的准备工作。我的目标是成为一个中级职位的全栈工程师。
审视与调研
为了能够成为一名我目标中的合格的中层全栈工程师,以及我需要如何进一步提升自己的水平,我四处搜寻了一些我比较向往的工作招聘信息。我明白了他们对候选人的要求以及偏好。
通过我的调研,我发现这些工作招聘信息中绝大多数有如下要求:
对JavaScript有较为深入的理解
至少熟悉一种开发环境(通常是React或者Angular)
能够创建一个应用编程接口(REST API,通常是Express)
至少熟悉一种数据库技术(通常是MongoDB或者SQL)
制定行动计划
基于上述调研信息,我明白我需要在以下关键方面提升自己:
我需要读完《你不知道的JS》(You Don’t Know JS)这本书。这个系列的书曾经为我初步学习JavaScript知识提供了很大帮助,所以我觉得也应该对我学习更高阶的JS也会有不少帮助。
我需要努力提升自己前端开发的能力,至少熟悉一种前端开发环境。我简单对比研究了Angular, Vue和React这几种开发环境,并决定选择React。因为我之前接触过一点React,并且很喜欢;我不太喜欢Angular,而且要求使用Vue的工作并不是很多。
虽然我可以直接从头创建一个Express API,但我不是很有信心,而且我只会做一些很基础的东西。因此我需要全面强化自己这方面的能力,尤其我向往的目标工作又非常重视后端开发能力。
我可以坚持使用关系型数据库(比如PostgreSQL),也可以学习一种新的数据库技术。我最后决定学习MongoDB,因为这个数据库非常流行,并且可以让我的简历上多一种非SQL数据库技能。
由于当时我还不确定我要旅行多久,所以我制定的学习计划如下:
在读《你不知道的JS》这本书的同时,开始学习React 及Redux知识。
提升Express技能,并学习MongoDB。
用所学知识做开发练习,学以致用。
学习其他的东西。
我这样制定计划是有原因的。如果我三个月就结束旅行,并且完成了第一条学习内容,处于第二条学习阶端中,那么我依然能够找到一份中级职位的开发工作,只是可能主要是一些前端开发工作。如果我先学习完后端开发的话,那么三个月后我可能依然没有太多信心能够从事任何后端开发环境相关的工作;那样的话,就可能对任何一个中级开发岗位都是一个卡点了。当然我也可以尝试申请纯后端开发工作岗位,但是这些岗位似乎都要求更多的开发工作经验,而我又不达不到经验这块儿的要求。
学习React和Redux,读《你不知道的JS》
我之前通过Youtube视频学习和一些正常的网上教程学习过一点React知识,但是这次我决心要系统地学习一下。于是我从Udemy上购买了《React JS and Redux: 掌握网站应用开发》这个课程。这个课程非常不错,我之前积攒的一点React经验也很有帮助,但是我对Redux确实零基础。课程学完后,自我感觉已经可以创建一个比较复杂的网站了,并能熟练使用React的句法和格式,以及Redux的数据控制。
我学完这个课程大概花费了两周左右时间,这期间包括了一到两周平均要花费1-2个小时自我练习。我在亚洲旅行的时候正好赶上节假日,所以学习就不再是第一位的优先事项了。就像我只要有机会坐在笔记本电脑前就学习这个课程一样,我路上一有机会就读《你不知道的JS》,并读完了系列的后几本。我把在线Github版本的电子版书存在了手机上,这样我在旅行穿梭中就可以利用碎片化时间学习了。
由于有了一些实际开发练习经验,我这次读起来比我之前读的时候理解更多了。像Promises这种技术知识点,你如果从来没有使用过的话,会很难理解。
强化Express技能,同时学习MongoDB
现在我感觉前端开发已经随心应手了,是时候提升我的后端开发能力了。这一次我依然打算选择通过Udemy课程学习。因为我觉得这些课程是一个比较完整的学习体系,内容循序渐进并且能够覆盖开发工作的全过程。当然你也可以通过Youtube或者其他在线教程免费学习这些东西,但是它们并不能够如Udemy课程那样更好的覆盖全部的内容。
接下来是要选择哪一个课程了,Udemy上的课程有免费的,有付费的,而且有长有短。我最后还是决定为自己投资,购买课程(相对于这么大的课程信息来说,10美元算是一笔很小的投资)。最后我筛选出了大概三个课程,每个课程时长从7小时到25.5小时不等。一开始我比较倾向于7小时的那个课程,因为我可以在一到两周就学完,而且还可以很好的享受我的假期。那个25小时的课程明显要占用我更多的时间,但是应该覆盖了更多内容。在旅行的这个时点,我决定要一直旅行,直到花光我的银行存款;于是我就不在于时长长短,就选择了25小时的课程。
Node加上React:全栈网络开发(Node with React: Fullstack Web Development)
我其实之前对这个课程做过一个全面的测评,是个非常不错的课程。由于之前学习接触过React和Redux,这个课程中对React内容又重复了一遍。所以为了不浪费时间,你可以跳过你已经熟悉的内容部分,或者你可以直接2倍速播放,就当快速温习回顾了。
这个课程真正精彩之处是后端开发部分的讲解。它覆盖了非常广泛的内容,包括oAuth、事件处理,payments技术、开发密钥(API Key)处理、MongoDB、mongoose技术、以及高级部署等。
这个课程之所以这么长,是因为它非常细致地涵盖了非常多的内容。这既好又不好,我最后大部分内容都是以1.5倍速看完的。这个课程比我第一个学习课程长多了,但是我最终差不多用了一个半月成功学习完。
开始写作
当我在中国的时候,我决定写一篇文章,阐述在中国做开发有多么的糟糕。后来这篇文章被自由编程社区(Free Code Camp)的出版物收录,现在大约有1600多的阅读量,和791次点赞。我对有这么多人阅读并喜欢我的文章感到很惊喜。
上述是我的文章发布后30天的统计数据。那之后,我决定要写更多的文章,描述我的日常以及我发现的一些有意思的事情。这也让我在面试及采访的时候能有更多的话题可说。写博客也是一种很好记录你进步的方式,让你能够看到你进步的轨迹。
学以致用
现在我所有准备工作和工具都已具备,我要开始学以致用了。我现在已经旅行了三个半月了,并设想还可以继续旅行1-3个月。这也意味了,如果我想要回去后尽快开始工作的话,我就需要开始思考找工作的事情了。
为了申请工作,我首先需要更新我的简历和作品集网页了。这时候就用到了我这几个月来学习的成果了,用Node和React建立一个新的作品集网站。
我就是这样做的,下面这个就是我的成果。我之前就说过,我并不是个设计师,但是这个网站也运行良好。我甚至用了一个Wordpress API将博客内容存储在网站上。我知道我的设计功底很糟糕,于是我将它放到了reddit下一个网站设计子论坛。我收到了很多很好的建议,其中大多数都是建议我用几个月时间好好研究学习基础的网站设计知识。其中一点建议我确实采纳了,那就是利用已有的辅助引导程序。这样就生成了一个全新的网站,没有用到任何新技能,但是已经看起来不那么花里花哨了。
申请工作
我下一站旅行地是老挝境内一个偏远的攀爬区。我觉得这应该意味着有限的电力以及没有Wi-Fi网络。于是我在接下来两周的老挝旅行期间,就把我的笔记本电脑留在了曼谷。当我到达老挝的营地后,我发现那里竟然有4G网络!我买了一个当地的SIM卡(1.5GB数据流量需要2英镑,超出部分每GB需要89便士),就满足了一般性的上网需求。这个时候我意识到我回国之前还可以在老挝待两周,然后在中国待4周。是时候尝试申请工作了。
在接下来一个半月里,我申请了超过50个招聘岗位,通过电子邮件和Linkedin与大约25个人联系过,最后得到了5个面试机会。我找工作的过程主要是通过电子邮件,但是如果有人想直接通过电话联系,我也很推荐(我早就想到这个方法了)。
我认为通过一个真正的对话可以很大程度上提升你与对方的关系,并提高受邀面试或推荐工作的机会。如果你不想通过打电话或者Skype视频联系对方,也可以使用传统的电子邮件,不过我觉得那样你的成功机率可能会小很多。
打造更多的案例
其中一个面试中,让我为一个有着糟糕网站和极少客服服务能力的公司设计一个网站原型。我觉得这个很有趣,可以让我学习网站原型设计。我写了一系列关于如何构思网站原型的文章,并且具像化地制作了那些网站。
我最后又为处理退货订单,创建了一个在线智能聊天工具。我学习了在线智能聊天工具的工作原理,然后花费了大约一个星期才搞出来一个像样能够运行的版本。这个案例成果是我能够最终得到那个工作Offer的很重要的一个影响因素。
面试
现在我有5个面试机会,我需要把它们转化成最终的工作Offer。
(1)准备
我之前已经写过一些关于JavaScript面试准备和掌握面试流程的一些文章,我觉得那些文章已经涵盖的很全面了。
我清楚的知道我想重点强调哪些东西,如何回答关于自己弱点的这类问题,以及每个公司的回应。
(2)最后的面试
我其实一直比较擅长面试,虽然我天生有点内向的性格。我一直学习如何让自己表现的更加外向,更多地与面试官交流。如果你面试中也有表现的害羞和内向的话,那么我推荐你找本情商方面的书,并表现的更加自信。
我经历的四分之三的面试中都有技术笔试(其中有两个是在线笔试),而我之前的苦练准备也有回报。虽然其中有点疏忽,但是我还是积极转动大脑思考,并良好的完成了所有测试。
最后的Offer与谈判
我在前三个面试中,得到了两个offer。第四个面试结束后,我就感觉那家公司并不适合我,于是我当时就告诉对方,我不会考虑他们的offer。如果你也有类似情景,如果你不打算接受一家公司的offer,就尽量不要引诱他们了。
现在我有两家非常愿意雇佣我的公司的offer。谈判的时候到了。我一直不太擅长谈判或者为自己争取更多利益,但是我读了一些这方面的指导文章,然后就试着为自己争取利益了。
你可能这样想:“好吧,我不想抱有太高的期望,而且这个offer已经很不错了,我觉得应该接受”
打住,你还需要进一步谈判。
或者你这样想:“我不想一开始表现的过于贪婪,给我未来雇主造成不太好的第一印象”
打住,你还需要进一步谈判。
“但是这家公司很小,而且.....”
打住,不要继续说下去了,抓紧下一步的谈判吧。
工作offer谈判十大原则。我推荐所有正在找工作的人都读一读。
我这方面做的肯定不完美或者说没那么好,但是我确实通过一些行动为自己争取了。我有两个不相上下的offer,但是我更倾向于其中的一个。我先自己写了一个小纸条(几个缓解紧张的呼吸练习后),我就向我中意的那家公司的人事主管打去了电话:
您好,Dave。我打电话是想让你知道我现在想法。首先感谢您给我这个工作机会,我很高兴您认为我是公司的合适人选。我现在还有另外一个很不错的offer,我这周末做出最后决定后,我会下周一12点前告诉您结果。
其实有一点,我觉得如果能满足会让我更加倾向于接受您这边的offer。由于我无论我接受哪个offer,我都得搬家寻找新的住所,所以如果您这边如果能在搬家住所费用方面能给我提供一些帮助的话,那就最好不过了。
最后事情的进展虽然和上面说的不完全一致,但是它也帮助了我很多。我向他们表达了提供工作机会的感谢,告诉他们最后的决定日期,并且在没有要求更高工资的前提下表达了寻求其他方面利益的想法。
总结
我先弄明白了为了找到理想中的工作我都需要做哪些方面的准备。我利用这些信息制定了一个规划,并通过网上付费课程快速学习到了所需的技能。
我申请了数不清的工作岗位,最后得到了5个面试机会。我又通过讨价还价的谈判从最后两个offer中选择了我最喜欢的一家公司。我现在已经在这家公司工作两周时间了,而且我很喜欢这份新工作。
点击进入【实验楼小程序】
随时随地,学习编程
译者:达达
出处:36氪
链接:http://36kr.com/p/5125662.html?ktm_source=feed
推荐阅读:
转载地址:http://rkcmj.baihongyu.com/