大一那年的一月份左右,我开始自学编程。五月份,我在旧金山一家知名公司获得了实习机会(后来被邀请毕业之后回来全职工作)。
我想说,获得一个软件工程实习机会是很难的,你得不断地申请,准备技术面试。我很理解其中的困难,毕竟我给 700 多家公司投了申请最后才获得一份实习工作。
但是,如果你对自己严格要求,并且采用正确的学习方法,那你完全有可能通过自学进入软件开发行业。我想分享一下我的自学经验。
步骤 1:学习基础
如果你刚入门 , freeCodeCamp 和 CodeCademy 是最好的资源。
这两个平台用尽可能简单的方式帮助学员理解,教给学员入门编程所需的绝对的基础知识。我建议你从 CodeCademy 开始,选择你想学习的语言。
了解你自己的兴趣所在,然后选择一门相应的语言,这样学习起来会更有效率。
例如,如果你打算进行前端开发,那么 freeCodeCamp 上的 Web 课程将特别有用。 在这篇文章里我也主要讨论前端方面的学习经验。
我做了什么
就个人而言,我一直对前端工作更感兴趣。而对于前端开发者来说,深入了解 JavaScript,HTML 和 CSS 无疑是最重要的。
所以,我花了一周时间自学 CodeCademy 的 JavaScript 语言入门课程。这门课完全免费,而且内容解释对初学者来说很容易理解。为了提高学习效率,我会定期记录自己学到的知识和不懂的地方,然后经常看看笔记,以免忘记。
HTML 和 CSS 学起来相对容易。我在 freeCodeCamp 学习完整的 Web 设计课程。这是最棒的免费学习资源之一。如果你完成了整个课程,你将了解 Web 开发的基础知识。
课外阅读我推荐《 前端开发人员手册》,它是前端开发者最完整的资源清单,其中资料需要数千小时阅读时间。它将教你 Web 开发应该知道的所有技巧,并且是免费的。
步骤 2:创建项目
几周后,你应该要准备创建一个小项目了。如果你没有丰富的经验,那么项目可以为你的简历加分不少。freeCodeCamp 提供了很多项目案例,你可以从一些小项目开始练手。
如果你不知道应该做什么项目,那么可以在网络上搜索项目构思,也可以看一些 GitHub 仓库,从别人的代码中学习。
在你创建好项目并且完成测试之后,请把源代码放到 GitHub 上。这至关重要,因为你没有经验,你所应聘的公司会通过这些代码来看你的技术实力。记得展示高质量的代码和文档。
我做了什么
我获得实习机会的时候,做了 4-5 个项目。我首先是从另一个学生的 GitHub 仓库 fork 他的一个游戏 app,学到很多,并添加我自己的代码。接着我慢慢做一些复杂的项目。
- 各种小型游戏,例如 Minesweeper,都用 React 制作并用 CSS 设置样式。
- 一个地图,用 Javascript 和 Mapbox 制作。
- 一个 social app,可让用户展示自己的最佳照片,并在 Heroku 上通过 Node.js 和 Mongoose 实现了前后端。
步骤 3:申请工作
我在这方面的经验最多,因为我申请了很多工作。关于求职和面试过程,我的最佳建议是:
- LinkedIn,Glassdoor 不是你的朋友。招聘人员在这些网站上会收到很多的申请,他们通常使用 ATS(应用跟踪系统)来过滤掉所有简历。如果你没有任何以前的经验或令人印象深刻的项目,那么通过筛选的机会就非常渺茫。
- 一封好的求职信会让你脱颖而出。请不要将一封相同的求职信反复发送给每家公司,请确保没有语法错误。
- 比较好的方法是直接在公司的网站上进行申请,或者给招聘人员发电子邮件(如果公司规模很小,你可以直接给 CEO 发)。如果公司没有公开电子邮件,你通常可以猜到,比如:hello@companyname.com,或是 name@companyname.com 。与你通过 Indeed / Glassdoor 提交简历相比,直接发给公司的简历,被查看的机会要高得多。
- 不要脸薄。公司可能会用各种原因拒绝你,而招聘人可能会骗你,这是正常的。如果你的简历吸引力不大,面试的机会就较小。继续申请,不要放弃。
步骤 4:面试
请务必提前做好准备,有许多线上资源教你如何进行技术面试,我推荐你阅读《Cracking The Coding Interview》。
技术面试压力很大,Leetcode 提供了许多实践性问题,你可以提前参考。
需要注意的一件事:我面试过的公司经常就我做的项目问我如何实现之类的技术问题,并问我有关的技术问题。这是他们测试你是不是作假的方法,因此请你为此做好准备。
我做了什么
我完全搞砸了我的第一个面试,很难堪。
我意识到自己对技术问题的准备不足。我开始每天在 Leetcode 学习 2 至 3 个小时。最重要的是不要在单个问题上花费太长时间。你面试的时候时间有限,练习的时候也应该给自己限时,一个简单的问题 10 分钟,一个中等难度的问题 20 分钟。
如果你不能及时解决问题,不要灰心,查看解决方案并尝试理解它,标记你无法解决的问题,并在一周后重新尝试。
面试还会考验你的沟通能力,你可以在练习问题可以大声说出自己的想法来做准备。一开始听起来可能很奇怪,但是当你习惯说出来时,在面试中会少些尴尬。
资源:在哪里可以找到入门级的工作和实习
你可以试试这些平台:Glassdoor,Indeed,Angellist,Linkedin。
尝试找到实习机会很是困难,没有简单快捷的方法。
freeCodeCamp 的社区很棒,在我找工作的过程中为我提供了很多帮助,接下来我也会成为一个贡献者,回馈社区。在实习之后,我做了这个应用程序作为我的项目,一个每天刷新的编译公司及其实习/入门级工作的列表,这些列表可以按位置,标签,学期等进行过滤。我将在之后的文章中对其进行详细说明。
结论
找到你的第一份工作/实习可能会是一个漫长的令人沮丧且乏味的过程,但是,你会积累很多经验,然后觉得这个过程是值得的。
这是我实习后做的项目与我最初自学时做的项目的比较。
完全不同!
这就是为什么我认为在实习期间花费的时间完全值得,如果没有在实习阶段得到的指导和积累的经验,我应该做不出这个项目。该项目帮学生,自学成才的开发者和应届毕业生找到实习机会和入门级职位,你可以在这里查看。
如果你有任何疑问,可以加我微信(alyssay1234),给我留言。
祝大家好运!
非营利组织 freeCodeCamp.org 自 2014 年成立以来,以“帮助人们免费学习编程”为使命,创建了大量免费的编程教程,包括交互式课程、视频课程、文章等。线下开发者社区遍布 160 多个国家、2000 多个城市。我们正在帮助全球数百万人学习编程,希望让世界上每个人都有机会获得免费的优质的编程教育资源,成为开发者或者运用编程去解决问题。
你也想成为 freeCodeCamp 社区的贡献者吗?欢迎了解 招募丨freeCodeCamp 翻译计划。