大一那年的一月份左右,我开始自学编程。 五月份,我在旧金山一家知名公司获得了实习机会(后来还被邀请毕业之后回来全职工作)。

我想说,获得一个软件工程实习机会是很难的。你得不断地申请,准备技术面试。我很理解其中的困难,毕竟我给 700 多家公司投了申请最后才获得一份实习工作。

但是,如果你对自己严格要求,并且采用正确的学习方法,那你完全有可能通过自学进入软件开发行业。 我想分享一下我的自学经验。

Code Academy

步骤 1:学习基础

如果你刚入门 , freeCodeCamp 和 CodeCademy 是最好的资源。

这两个平台用尽可能简单的方式帮助学员理解,教给学员入门编程所需的绝对的基础知识。我建议你从 CodeCademy 开始,选择你想学习的语言。

了解你自己的兴趣所在,然后选择一门相应的语言,这样学习起来会更有效率。

例如,如果你打算进行前端开发,那么 freeCodeCamp 上的 Web 课程将特别有用。 本指南将主要侧重于前端。

我做了什么:

就个人而言,我一直对前端工作更感兴趣。而对于前端开发者来说,深入了解 JavaScript,HTML 和 CSS 无疑是最重要的。

所以,我花了一周时间自学 CodeCademy 的 JavaScript 语言入门课程。这门课完全免费,而且内容解释对初学者来说很容易理解。为了提高学习效率,我会定期记录自己学到的知识和不懂的地方,然后经常看看笔记,以免忘记。

HTML 和 CSS 学起来相对容易。我在 freeCodeCamp 学习完整的 Web 设计课程。这是最棒的免费学习资源之一。 如果你完成了整个课程,你将了解 Web 开发的基础知识。

课外阅读小编推荐《 前端开发人员手册》。 它是前端开发者最完整的资源清单,含数千小时的阅读时间。它将教你 Web 开发应该知道的所有技巧,for free。

步骤 2:创建项目

几周后,你应该要准备创建一个小项目了。如果你没有丰富的经验,那么项目可以为你的简历加分不少。freeCodeCamp 提供了很多项目案例。你可以从一些小项目开始练手。

如果你不知道应该做什么项目,那么可以在网络上搜索项目构思,也可以看看一些 GitHub 仓库,从别人的代码中学习。

在你创建好项目并且完成测试之后,请把源代码放到 GitHub 上。这至关重要,因为你没有经验,你所应聘的公司会通过这些代码来看你的技术实力。展示高质量的代码和文档。

我做了什么:

我获得实习机会的时候,做了 4-5 个项目。我首先是从另一个学生的 GitHub 仓库 fork 他的一个游戏 app,学到很多,添加自己的代码。接着我慢慢做一些复杂的项目。

  1. 各种小型游戏,例如 Minesweeper,都由 React 制作并由 CSS 设置样式。
  2. 一个地图,用 Javascript 和 Mapbox 制作。
  3. 一个 social app,可让用户展示自己的最佳照片,并在 Heroku 上通过 Node.js 和 Mongoose 实现了前后端。
image-14

步骤 3:申请工作

我在这方面的经验最多,因为我申请了很多工作。 关于求职和面试过程,我的最佳建议是:

  1. LinkedIn,Glassdoor 不是你的朋友。 招聘人员在这些网站上会收到很多的申请,他们通常使用 ATS(应用跟踪系统)来过滤掉所有简历。 如果你没有任何以前的经验或令人印象深刻的项目,那么通过筛选的机会就非常渺茫。
  2. 求职信是一把双刃剑。 如果做得正确,它可以使你与其他候选人真正区分开。 但是,它也可能会使你的处境恶化。请勿将相同的一般求职信发送给每家公司,因为招聘人员会知道。 最后,请确保没有语法错误。 一招打错就足以使招聘人员拒绝你。
  3. 比较好的方法是直接在公司的网站上进行申请,或者过招聘人员发电子邮件(如果公司规模很小,你可以直接给 CEO 发)。 如果公司没有公开电子邮件,你通常可以猜到,因为它几乎总是 hello@companyname.com,或是 name@companyname.com 。 与你通过 Indeed / Glassdoor 提交简历相比,公司查看你的简历的机会要高得多。
  4. 不要脸薄。 公司可能会用各种原因拒绝你,而招聘人可能会骗你。 这是正常的。 如果你的简历吸引力不大,面试的机会就较小。 继续申请,不要放弃。

步骤 4:面试

image-15

请务必做好准备。 在线上有许多资源教你如何进行技术面试。阅读的话你可以尝试《Cracking The Coding Interview》。

技术面试压力很大。 Leetcode为实践提供了许多很好的问题。

由于它们广为人知,你不太可能会得完全相同的问题。 面试官通常有一堆不在网上发布的问题。 但是基本思想保持不变,比如你怎么都应该掌握好数据结构和 BigO。

需要注意的另一件事:我面试过的公司经常就我做的项目问我如何实现之类的技术问题,并问我有关的技术问题。 这是他们测试你是不是作假的方法,因此请为此做好准备。

我做了什么 :

我完全搞砸了我的第一个面试。 很难堪。

我意识到我对技术问题的准备不足。 我开始每天进行 2 至 3 个小时的 Leetcode。 最重要的是不要在单个问题上花费太长时间。 你面试的时候时间有限。 练习的时候也应该给自己限时,一个简单的问题 10 分钟,一个中等问题 20 分钟。

如果你不能及时解决,不要灰心。 查看解决方案并尝试理解它。 标记你无法解决的问题,并在一周后重试。

由于面试还会考验你的沟通能力,因此你可以在练习问题可以大声说出自己的想法来做准备。一开始听起来可能很奇怪,但是当你习惯说话时,在面试中会少尴尬。

资源:在哪里可以找到入门级的工作和实习

你可以试试这些平台:Glassdoor,Indeed,Angellist,Linkedin。

尝试找到实习机会很是困难,没有简单快捷的方法。

image-16

freeCodeCamp 的社区很棒,在我找工作的过程中为我提供了很多帮助,接下来我也会成为一个贡献者,回馈社区。在实习之后,我做了这个应用程序作为我的项目,一个每天刷新的编译公司及其实习/入门级工作的列表。这些列表可以按位置,标签,学期等进行过滤。我将在下一部分中对其进行详细说明。

结论

找到你的第一份工作/实习可能会是一个漫长,令人沮丧且乏味的过程。 但是,你所获得的经验使其完全值得。

这是我实习后做的项目与我最初做的项目的比较。

Internship Website
My first project ever

完全不同!

这就是为什么我认为在实习期间花费的时间完全值得,如果没有在实习阶段得到的指导和积累的经验,我应该做不出这个项目。

该项目帮学生,自学成才的开发人员和应届毕业生找到实习机会和入门级职位。 你可以在这里查看

我努力改进,欢迎任何反馈。如果你有任何疑问,请随时向我发送消息。也可以加我 wx alyssay1234.

祝大家好运!