实现梦想的软件工程工作需要什么

实现梦想的软件工程工作需要什么
他可能不是软件工程师,但完美地抓住了我的兴奋

甚至在我于2018年1月开始求职之前,我就知道我想在DigitalOcean工作。 文化,学习机会以及从事我所相信的产品的机会。这是我下一个职位想要的一切。

但是我知道这是一个漫长的过程。

DigitalOcean的工程质量和可伸缩性非常出色。

作为没有CS学位的软件工程师,我并不是纸面上的最佳人选。 此外,我仅六个月前移居纽约市,而我的人脉几乎nil

我需要证明我可以在不依赖任何字符串拖拽的情况下胜过高级学位的工程师。

我已经为我完成了工作。

快进8周

现在是2018年3月,我已经接受了DigitalOcean的邀请,可以在其纽约办事处担任软件工程师II。

实现梦想的软件工程工作需要什么
图片来源:giphy.com

在求职期间,我也取得了相当大的成功。

在我直接申请的74家公司中,我拥有:

  • 20个电话屏幕。
  • 15个技术屏幕。
  • 8次现场采访(安排更多)。
  • 7个优惠。

对于直接应用程序,响应率为〜27%,而将约10%的应用程序转换为报价。

所以发生了什么事?

好问题!

这篇文章将介绍这8周中发生的事情以及我如何能够获得理想的工作。

这些不会成为典型的“不要放弃!” 和“保持动力!” 我经常阅读的一些建议。 这些成语虽然不错,但并不是特别有用。

我将概述我为推销自己,准备面试以及与市场上其他工程师竞争而采取的详细步骤。

我希望阅读此书的人可以收集到一些有用的见解。 尤其是那些具有非传统背景的人。

警告:没有捷径

实现梦想的软件工程工作需要什么

如果您要搜索“ 如何在X个月内找到工作?” ,不是吗。

在过去的两年中,我致力于成为一名软件工程师。 其中包括自由职业者,作为Web开发实习生的简短时光以及以Launch School形式进行的深入自学。

我有一些关于如何自我提升的新颖技巧,但是掌握基础知识并没有替代品,甚至没有花哨的简历和求职信。

我已经知道这很困难。

如果由于缺乏经验和/或知识而在技术面试方面遇到麻烦,那么请这段时间专门解决这些精神鸿沟并研究核心原则。 我什至可以建议Launch School吗?

强大的工程基础将使您成为应聘者的90%。 本文旨在以此为基础并使其适销对路。

如果这听起来像您要找的东西,请进行足够的闲聊。

让我们开始吧。

1.建立一个坏蛋项目

实现梦想的软件工程工作需要什么
行动中的会议

我不是在谈论Trello克隆或其他CRUD应用程序。 每个人都有他们的投资组合。 我说的是一些需要认真研究并显示出您的技术才能的东西。

对于NitinElise和我自己来说,这就是Conclave 在2017年秋季,我们将Conclave作为Launch School Capstone计划的一部分进行了构建。

这是坏蛋。 这也需要很多工作。

我们在几周内花费了数百小时研究和建造Conclave。 这涉及阅读白皮书,筛选开源代码以及实现自定义数据结构。 我们甚至不得不为分散式系统设计自己的共识和冲突解决算法。

这听起来可能很多,但这很关键。

如果您梦想中的公司是知名的科技巨头,那么您将与CS毕业生竞争激烈。 虽然我们非传统的人无法与他们的血统书竞争,但我们可以在应用经验中击败他们。

即使您不想为四大巨头之一工作,一个坏蛋项目也很重要。 每个面试官都会询问您最近的项目和最大的挑战。

表明您已解决了并发和扩展等有趣的问题,将使您大放异彩。

2.炫耀坏蛋项目

一旦我们的团队建立了Conclave,就该炫耀它了。

我们编写了一个广泛的案例研究,并将其发布到Hacker News和Reddit。 我们还写了一个精简版,并在Medium上发布。

这不仅显示了我们用简单的术语解释复杂想法的能力,甚至导致一些公司与我们联系!

聚会

我总是听到关于您在找工作时应该参加聚会的建议。

您知道比参加聚会更令人印象深刻吗?

一口气说话!

实现梦想的软件工程工作需要什么
我在Javascript.NYC聚会上的演讲

在求职期间,我在两个本地JavaScript和Ruby Meetups上讲话。 这可能有几个方面的优点:

  1. 如果已录制,则可以将视频放在您的LinkedIn和网站上。 这对于任何查找您并将您与其他候选人区分开的经理人来说都是非常令人印象深刻的。
  2. 在Meetups上发表演讲可能是一个很棒的引荐产生者。

我知道许多工程师都不愿公开演讲,并且会不惜一切代价避免这样做。 但是请考虑一下上行空间。

有多少求职者可以说他们公开发表过演讲?

它表明您知道自己的知识,并愿意教给别人!

您是否愿意在您的同伴团队面前交谈30分钟,以每年约100,000美元的收益和福利?

3.加强领英和网站

您的LinkedIn个人资料是招聘人员向您的公司提出申请时的首选位置。 如果您没有,请选择一个。

我确保加强自己的LinkedIn个人资料,直到它达到“全明星”等级。 与“全明星”联系的可能性高40倍

无需描述我包括的所有内容, 而是可以自己寻找

我还订阅了Premium帐户,以便可以邮寄招聘人员(稍后会详细介绍)。

我的头衔应该是什么?

这是您可以与众不同的另一个领域。 获得一点创意。

基于我在全栈和分布式系统方面的经验,我把自己的头衔称为“全栈和分布式系统工程师”。

y,但独特。

如果您没有什么特别的想法,那么使用“软件工程师”或“ Web开发人员”就不会出错。

取得网站

实现梦想的软件工程工作需要什么

我已经听到所有后端后端工程师的gro吟声。

“为什么我必须创建一个网站? 我没有得到报酬使事情看起来漂亮!”

如果您正在寻找工作,那么您可能根本没有得到报酬。 在您签署要约信之前,您是营销人员,而不是工程师。

拥有网站并不是要显示您的前端能力,尽管可以。

网站是宣传自己和陈述故事的另一种方式。 当雇主在Google上搜索我的名字时,我想尽可能地控制他们看到的内容。

把事情简单化

我建我的网站使用辛纳屈,基本的HTML / CSS / JS,Heroku的,和我CodePen发现了一个有趣的背景渐变图案。

注意:我正在进行一些网站维护,因此当您阅读本文时,我的网站可能无法正常运行。

对于不愿使用HTML或CSS的人,GitHub上有很多Jekyll模板。

4.以相反的顺序向公司申请

在开始求职之前,我创建了很多对我感兴趣的公司。 然后,我根据喜好将此列表分为3组。

这些是我的“层”。

每个层次都决定了我何时申请以及我将为申请付出多少努力。 我的兴趣越大,我等待申请的时间就越长。

为什么最后要申请顶级公司?

招聘是一个非常不精确的过程。 有太多因素和变量无法控制。

实现梦想的软件工程工作需要什么
图片来源:giphy.com

神经,不完善的答案和简单的错误甚至可以使最高级的工程师失望。 不管您的计算机多么出色, 只有出色的访问员才能获得出色的报价

尽管模拟面试可以在一定程度上提高您的技能,但没有什么可以替代真实事物。 这就是为什么我要等我进行一些实习之前才推迟对我的首选公司的面试。

由于菜鸟失误,我没有收到第一个现场要约。 到我第八次上班时,这些错误越来越少了。

5.创建自定义的简历和求职信

这是我的简历

注意网址中的“ v37”吗? 这是我的简历的第37版。

我之前提到过,公司对我越感兴趣,那么在申请方面就会投入更多的精力。

但是,无论级别如何,我都为几乎所有应用程序创建了自定义的简历和求职信。 在为期8周的搜索结束时,我的简历有40–50个不同的版本

为什么要经过所有这些努力?

我从AngelList,LinkedIn Easy Apply和其他低收益策略开始了工作搜索。 我认为我需要**许多应用程序,但最终我会得到回应。

100次申请后,完全保持沉默。

实现梦想的软件工程工作需要什么
图片来源:giphy.com

后来我了解到,那些工作聚集者倾向于向垃圾邮件公司发送信息,以至于HR只是忽略了求职者。 我个人不推荐他们。

相反,我专注于直接应用于公司的职业页面,向招聘人员发送电子邮件以及制作独特的简历和求职信。

简历提示

很多 资源,如何写一份专业的简历。 虽然我的简历仍然需要工作,但以下三点对我有所帮助:

  • 我在顶部添加了“摘要”部分,以2-3句话总结了我的兴趣和经验。 这对招聘者很有帮助,因为他们可以快速浏览,并且高度可定制。
  • 我强调了我的个人项目。 我根据我申请的公司将它们混合搭配。 将它们托管在Heroku上是一大优势。
  • 我为每个职位描述都安排了“技能”部分。 我省略了后端位置的前端技术,反之亦然。 我想向我的潜在雇主证明我是担任该职位的完美人选,不包括我所展示的技能和技术。

求职信提示

求职信很棘手,我仍然要学很多。 我收到的最佳建议是创建求职信模板

求职信模板是一种平衡行为。 我想留出足够的空间进行个性化设置,因此每个版本都是唯一的。 但是我留下的空间越多,每封求职信所花的时间就越长。

自定义资产需要花费时间和精力,但会大大增加接收电话屏幕的机​​会。 我的大多数申请都没有得到推荐。 我的简历和求职信是我的主要卖点。

我一定要提及他们的工程博客(如果有的话)中最近发表的任何新闻或帖子,以表明我对公司进行了研究。

虽然很多人说求职信已经死了,但根据我的回应率,我只能假设招聘人员感谢您付出的额外努力。

关于何时申请的简要说明

实现梦想的软件工程工作需要什么
图片来源:giphy.com

我保留了星期一-星期三发送申请。 那是工作发布和人才搜寻最流行的日子。

申请新的职位清单是使我的申请在招聘人员或招聘经理面前的最佳方法。

随着一周的进行,获得回应的机会减少。 周末到目前为止是最糟糕的。

此外,在每月的第一天,Hacker News都有一个Who Who Hiring招聘信息。 这是寻找空缺职位的绝佳资源。 还有一些帖子会包含发给公司内部人员的个人电子邮件。 这可以让您完全绕过HR申请。

6.与其他工程师接触

实现梦想的软件工程工作需要什么
图片来源:giphy.com

从头开始在一个新城市中建立网络的想法可能会引起其他人的恐慌,但它使我激动。

我喜欢结识新朋友。

虽然我确定存在精心设计的网络策略,但我保持简单。

我在第1层列表中找到了公司的工程师,并通过LinkedIn发送了“连接”请求。 如果他们和我上同一所大学,那就更好了。

我写了一封便条,说我是这个城市的新手,最近完成了一个项目,并希望更多地参与社区活动。

简短而甜美。

工程师比陌生人更愿意与陌生人喝咖啡。 我能够见到DigitalOcean,Spotify,Datadog等公司的工程师。

我什至要在Google自助餐厅吃午餐。 检查清单中的一个!

“但是我讨厌网络!”

许多人不喜欢网络,因为他们认为网络不诚实和/或“狡猾”。

不一定要那样。

我没有参加这些视频群聊以寻求回报。 许多会议没有得到推荐,这很好。

我真的很想让自己参与到本地开发人员社区并与其他工程师交谈。 我向他们询问了他们的背景,当前项目以及编程之外的兴趣。

即使我已经受雇,我仍继续伸出援手。 每个人都有一个独特的故事,我喜欢听他们讲。

如果您在与其他开发人员会面时遇到麻烦,请记下Dale Carnegie的一些笔记。

查找拥有博客,播客或在会议上发表过演讲的工程师。 伸出手,对他们的工作表示真正的兴趣。 要求他们动动脑筋,谈论他们发现的某个话题,您会觉得很着迷。

您可能会对响应感到惊讶。

7.研究

实现梦想的软件工程工作需要什么
图片来源:giphy.com

活泼的求职信和推荐信可以有效地使我步入正轨。 剩下的就是我的技术印章。

由于我大学时没有主修计算机科学,因此我最薄弱的领域是算法,数据结构和系统设计。

我确保改变了这一点。

算法/ DS

为了对算法和数据结构有一个基本的了解,我阅读了《算法和数据结构常识指南》

为了利用我的基础知识,我在LeetCode上解决了大约100个问题。 我确保他们涵盖了我可能会在技术屏幕中遇到的不同主题:

  • 数组/字符串
  • 矩阵
  • 二叉树
  • 链表
  • 回溯
  • 动态编程
  • 位操作(这可能不会在面试中出现,但是学习起来很有趣)

我写下了在Google Spreadsheet中完成的大多数算法问题的思维模型,您可以在此处看到。

这有助于我更好地理解所涉及的解决方案和模式。 在现场采访之前,它还可以作为有用的复习。

实现梦想的软件工程工作需要什么
图片来源:pramp.com

除了LeetCode,我还进行了30 多次Pramp采访。 如果您不熟悉Pramp,它是一个“免费的在线Peer 2对等平台,用于练习技术面试。”

您可以同时练习算法问题和面试技巧。 我不能推荐它。

我还购买了一些白板墙胶带来练习白板采访。 它派上用场了。

系统设计

系统设计访谈是对某人是否已掌握基础知识的真实测试。 不要以为你可以走进去半屁股。 采访者可以检测到BS。

系统设计不仅可以帮助您确定您是否会获得要约,而且还可以决定该要约的利润。

认真对待。

像许多工程师一样,我在设计大规模生产系统方面没有太多的第一手经验。 为了准备,我向那些做过的人学习。

我发现的最佳资源是“进行系统设计面试” 它具有许多详细的案例研究,这些案例研究易于理解并涵盖了常见的场景。 80美元的价格很值得。

还有大量的免费资源:

我还从以前的Launch School Capstone毕业生撰写的案例研究中学到了很多东西。 它们涵盖的主题是访谈中的常见主题:

最后,如果您愿意,请阅读白皮书 我阅读了有关DynamoDBCassandra的内容,以增进对NoSQL数据库的理解。

白皮书可能是技术性的,也可能是冗长的,但向本领域顶尖的人学习是最好的方法之一。 任何寻求后端或全栈角色的人都应该考虑它们。

8.做深工作

我很喜欢其他工程师说他们在找工作时每天学习8至12个小时。 我的比赛公开承认他们进入面试已经筋疲力尽。

实现梦想的软件工程工作需要什么
图片来源:giphy.com

我知道我知道。 那不是他们想说的。 但是,给我看一个在求职时学习了8个小时以上的人,然后给我看一个在时间安排上很糟糕并且很可能会精疲力尽的人。

Cal Newport在《 深度工作 》中概述了专家每天可以做的最“专注的工作”是大约4个小时。 对于普通人来说,甚至更少。

这并不是说某人不能“工作”超过4个小时。 我看到人们一直在“工作”超过10个小时。 他们完成的数额值得商bat。

什么是“专注工作”?

对我而言,我将其定义为超出舒适水平的集中且无干扰的工作。

跟随教程? 没有。

阅读博客文章? 没有。

练习您已经看到并知道如何解决的问题? 都不是。

实现梦想的软件工程工作需要什么
图片来源:giphy.com

尽管这些很有趣,但在我有很短的时间内,他们对我的进步还不够。

为了提高面试技巧,而又不花所有的空闲时间,我做了很多工作。 这里有些例子:

  • 花一个小时练习纸上或白板上的挑战性问题(阅读:比以往更困难),或让朋友测试一下。 普拉姆也可以。
  • 花20至30分钟进行一次模拟系统设计采访。 将您的答案与官方案例研究进行比较,然后重试以改善答案。
  • 使用第三方API是否感到不舒服? 花费2-3个小时来构建与GitHub交互的程序。 奋斗吧。 尝试重新调用有关REST,API和HTTP的所有知识。 对于您不知道的所有内容,请在Google / StackOverflow上搜索。 做笔记,这样您就不会忘记。

有几天我完成了两个或多个这些任务。 其他日子,我专注于一个。

重要的是要确保我消除了所有干扰。 这使我的学习时间限制在4到6个小时,从而有更多的时间申请,结识和放松。

不学习新技术

有些人可能为此而奋斗,但您不应在有限的时间内学习新的语言或框架。

现在是时候磨练您已经知道的东西了。

像对待音乐之旅一样对待即将来临的面试。 音乐家会通过学习新歌来为即将到来的表演做准备吗?

一定不行!

他们将时间用于微调曲目,并确保每个音符都完美无缺。

那是你必须做的。

一家伟大的高科技公司不会在乎您知道哪种语言。 他们相信您可以学习工作中需要的任何技术。 花时间完善您拥有的工具。

9.利用工作机会

这是我找工作中最有益的一步,也是最困难的一步。

我花了大约5.5个星期才得到我的第一份工作。 接下来的6周是接下来的2.5周。

怎么样?

杠杆和时机。

我的第一个提议打开了许多门。 这不仅使我与其他公司的谈判地位更好,而且使整个过程加快了10倍。

实现梦想的软件工程工作需要什么
图片来源:giphy.com

我让其他所有公司都知道,有人提出另一项报价。 我问,如果他们仍然对我感兴趣,可以简化他们的流程。

下一步是给我曾申请但未收到回复的公司的招聘人员发送电子邮件。 我让他们知道我仍然有兴趣,但有长期报价。 如果他们认为我很合适,那我就需要走上快速通道。

这是LinkedIn inMail派上用场的地方。 并非每个招聘人员都检查他们的inMail,所以我也将Clearbit用于直接电子邮件。

从招聘者的角度来看,我是理想的候选人。 另一家公司审核了我,并确认我知道自己的知识。 我还通过搁置其他报价来证明我对招聘公司的热情。

招聘人员喜欢热情的应聘者。

大多数地方可能需要3周到几个月的时间才能面试候选人。

有了要约,周转时间可能短至一周。

即使您的第一笔报价来自您梦想中的公司,也值得推迟您的接受以改善谈判立场。 他们可能不喜欢这样,但这取决于他们。

这是你的职业和你的未来。 做最适合您的事情

最后说明:要好

实现梦想的软件工程工作需要什么
图片来源:giphy.com

在面试中有很多关于善良和充满活力的说法。 许多向我报价的公司都将我的热情和积极性作为决定性因素。

我坚信,开几个玩笑并使面试官微笑可以弥补一些不太理想的答案。 对于我内向的人和内向的人,我建议您将焦虑变成激动

感谢您阅读这篇冗长的文章!

我知道申请工作是一个困难的过程。 我希望这些信息可以帮助非传统的应聘者发挥他们的才能,并教他们如何出售自己的技能。

祝所有求职者好运。 如果您有任何疑问或疑虑,请随时与下方联系或发表评论。 我会尽力回答。

现在出发,开始构建一些Badass项目! 我期待很快在我附近的聚会上看到他们。

From: https://hackernoon.com/what-it-took-to-land-my-dream-software-engineering-job-17c01240266b