如何作为一名自学成才的程序员获得第一份工作

2025-05-24

如何作为一名自学成才的程序员获得第一份工作

几年前,我在 Dev.to 上写了一篇文章,名为《成为程序员的疯狂秘诀》(您可以在这里阅读:https ://dev.to/bytebodger/one-crazy-trick-to-become-a-programmer-j8k )。从那时起,我收到了无数有志于成为程序员的人发来的电子邮件和评论,他们至今仍在问我如何进入专业编程的世界。因此,我最终决定更进一步,提供一些更详细的建议,帮助大家入门成为一名专业开发人员。

需要明确说明的是,我仍然坚持我在那篇原文中所写的所有内容。那篇文章的“灵魂”在今天和 2020 年一样适用。但我也承认,原文有点……油嘴滑舌。它也非常笼统——反复强调着“多写代码!”这句简单(但很实用)的口头禅。

最近,很明显有些人不太确定如何将那篇文章里那些老生常谈的陈词滥调转化为具体的、可操作的全职工作步骤。所以我想更进一步,尝试提供更有针对性的建议。

我也将这篇文章专门针对自学人群。我这样做的原因很简单:

我完全是自学成才。我从未参加过编程训练营,也从未上过任何一门编程课程(无论是大学还是其他学校)。我那不起眼的脑袋里装的都是因为,在某个时候,我不得不独自坐下来,弄清楚这些东西是怎么运作的。所以,我想你可以说,我对其他自学成才的开发者有点好感。

当然,我知道有些拥有计算机科学学位的人也在为获得第一份真正的编程工作而苦苦挣扎。如果你也属于这群人,那么本文中仍然会有一些切实可行的智慧建议供你参考。但我的目标受众是所有没有接受过正式应用程序开发培训的人。

我也会主要从前端开发的角度来写这篇文章。但我认为这些经验教训也同样适用于自学成才的后端开发人员。只需将我提到的一些技术替换成更适合您场景的技术即可。

那么...让我们开始吧。


图片描述

技能与经验

我的“多写代码”口号(出自原文)的核心在于,没有人能凭空赋予你经验。经验只能随着时间的推移而积累。但技能可以自己掌握。而作为一名程序员,提升技能的唯一方法就是……多写代码。

但我不会用整篇文章来反复强调这句咒语。我会建议你在寻找第一家能给你带来经验的公司时,可以做一些事情来提升你的技能。

首先,要打造你面向雇主的形象,重点突出你的技能,而不是你的经验。这意味着你的简历应该以技能为中心。你的网站也应该以技能为中心(稍后会详细介绍……)。你承担的任何个人项目都应该以拓展你的技能为重点。总而言之,你应该不断思考如何才能为你的工具箱增添更多工具。

例如,我看到很多新手开始深入学习 React。这很棒!React 开发者的需求量很大,所以扎实掌握这个库是明智之举。但这些开发者中有很多除了React 之外几乎什么都不会。

你用过 jQuery 吗?(是的,这项技术虽然有点过时了,但它仍然被广泛使用,并且可以教你很多关于某些核心 JavaScript 概念的知识 - 比如匿名函数。)

你对 JavaScriptTypeScript 的熟悉程度如何?如今,它们在职场上几乎可以互换使用。如果你精通 TypeScript,但有人让你用纯 JavaScript 编写代码(反之亦然),你可能会感到不自在,那么这可能会成为你的负担。

您是否尝试过其他框架,例如 Angular、Vue 或 Svelte?

Node 怎么样?毕竟,它也是 JavaScript。但令人惊讶的是,许多所谓的 JavaScript 开发者在 Node 应用面前却束手无策。

我完全理解,作为这个领域的新手,应对前端/JavaScript 开发中所有这些不同的“角度”可能会让人感到无比畏惧。我并不是要求你独自成为 JS/TS/React/Angular/jQuery/Node/Vue/Svelte 的超级英雄。但是,你在简历上(以及希望在面试中)自信地展示的这些技能越多,你的成功率就越高。

重点在于,你不可能凭空捏造一份完整的工作经历。所以你需要尽一切努力,确保自己至少拥有全面的技能。你需要找到方法来丰富你的简历,而不是仅仅依赖简历中最耀眼的一点——一份完整的工作经历。这就是为什么你需要如此努力地充实你的技能清单。


图片描述

不要吝惜 HTML/CSS

我本可以把它放在上一节,但我还是把它单独列出来,因为在我看来,现代代码训练营文化催生了一小批新开发者,他们对自己的 JavaScript 技能感到相当满意,但对 HTML/CSS 却只有基本的了解。HTML/CSS 很容易让人觉得像是事后才想到的。但它应该是你的首要考虑。

没有 HTML/CSS,就没有 Web 应用。如果你对每个演示挑战的回答都是把所有内容都扔进一个文件,<div>然后随便加几个样式属性,潜在雇主一眼就能看出来。

你对 Flexbox 有多自信?Bootstrap 呢?你知道“响应式设计”是什么意思吗?你能搭建一个响应式网站吗?曾经有一段时间,这些挑战可以推给设计团队。但如今,雇主们希望他们的前端开发人员能够完全熟练掌握 HTML/CSS 的各个方面。


图片描述

拥有 GitHub 存在

如果您还没有 GitHub 帐户,请立即注册。

不……说真的。如果你还没有 GitHub 账号,那就别再读这篇文章了,赶紧去创建一个吧就现在。

你可能会想:“我没什么东西可以存到 GitHub 账户。” 没关系。第一步就是要有一个 GitHub 账户。

为什么这很重要?因为你没有任何工作经历可言。所以你唯一能做的就是开始记录你的代码历史。

也许你现在没有任何代码库。但从今天开始,每次你完成编程挑战,或者运行一些简单的网页演示,我都希望你在 GitHub 账户下创建一个新的代码库并存储在那里。这些代码库里的代码可能不是最漂亮或最先进的。甚至在经验丰富的开发者看来,它们可能看起来非常业余。但你知道更糟糕的是什么吗?没有公开的代码库来推荐给潜在的雇主。

坦白说,我拖延了很多年才注册 GitHub 账户。(虽然这对我来说不是什么大问题,因为在 GitHub 出现之前,我已经是个资深开发者了。)我以前在本地机器上玩过几十个小型测试/演示应用程序,但从未把它们放到 GitHub 上。不过,这些小应用程序至少能证明你的技能和你能做的工作类型。

GitHub 账户还有另一个(看似显而易见的)好处。它会迫使你更加适应git(如果你还没有适应的话)。在现代开发中,git拥有 GitHub 账户并非“锦上添花”,而是一项核心技能。作为一名开发经理,一个连基本git命令都学不会的 JavaScript 专家对我来说几乎是无用的。

(附注:去年,在亚马逊,我们团队中有一个人,他没有任何基本git技能,但还是设法被录用了。他只待了整整两个月。坦率地说,我很惊讶他能坚持那么久。)


图片描述

开设 AWS 账户

现在你已经拥有了 GitHub 账户,接下来可以开设一个 AWS 账户。如果你担心费用,不用担心。开设账户是免费的。他们的大多数服务第一年都是免费的。即使过了第一年,除非你开始托管种子文件或进行其他高流量活动,否则你的费用也应该非常低。

我目前在 AWS 上有四个站点。我的月账单通常约为 8 美元。

也许你认为你不需要 AWS,因为你没有托管/构建公共网站/应用程序。但我告诉你,即使你决定启动第一个小型实用程序,它也能让你的生活变得轻松很多。

使用 AWS Amplify,我可以创建一个新的 GitHub 代码库,上传一些基本代码,然后将该代码库连接到 Amplify,几分钟内即可在网络上发布。如果您想要为应用程序注册自己的域名,可以直接在 AWS 上使用 Route 53 购买,并在不到一小时内即可上线。Amplify 甚至会为您所有的 Amplify 网站免费提供 SSL 证书。

一旦你将 GitHub 代码库连接到 AWS Amplify 账户,每次你将新代码推送到该代码库时,它都会自动构建并部署你的最新代码到公共网站。非常简单,而且成本低廉。

这不仅能让你快速便捷(且经济实惠)地启动任何项目,还能让你熟悉 AWS 生态系统,这对许多潜在雇主来说是一个很大的卖点。即使你目标公司不使用 AWS,在简历上写明你熟悉 AWS 也会很有面子。

需要明确的是,AWS 本身就是一头庞然大物。我并不是要你成为 AWS 忍者。我只是建议你使用 AWS,因为它可以让你 A)丰富简历,B)快速发布任何你想公开展示的产品。当然,你不一定要使用 AWS。还有其他云计算解决方案可以为你提供类似的功能和体验。具体选择哪个平台取决于你自己。


图片描述

构建东西

现在你已经有了一个 GitHub 账户来存放你的代码,还有一个 AWS 账户来部署你的代码,你需要一些……代码。是的,这基本上是我“写更多代码”口号的延伸。但同样,如果你没有正式的工作经历,你至少需要一些方法来展示你的技能经历。

如果你不确定要做什么,那就从你的个人作品集网站开始吧。你还没开始做,可能是因为你没有什么值得一提的作品集。但即使你的网站上只有你的简历和一些关于你自己的小知识,这也是让你在公众面前展现自己编程能力的良好“第一步”。

这里需要注意一点:不要敷衍了事地打造你的个人网站。花些时间好好打磨它。即使内容可能略显单薄,也要尽量让它看起来美观。关注性能和可访问性等细节。(提示:你可以使用 Lighthouse 为你的网站生成性能/可访问性报告。)就在上周,我面试的一家公司的招聘经理(我预计几天后就会收到录用通知)在面试过程中告诉我,他打开了我的网站,对它的高评分感到惊讶。他说他经常为求职者这样做,但通常分数都很差。

但是,即使你的个人网站已经上线运行,也不要停止开发。开发点东西吧。我根本不关心你开发什么。我的目的不是为了炫耀你是世界上最伟大的程序员。我的目的只是向潜在的雇主证明,你确实是一名程序员

我甚至不在乎你是不是在创建静态网站。比如为你的教堂、你的龙与地下城小组,或者……其他什么地方建个网站。这或许并不那么有趣或引人入胜。但你总得有个开始。这样你就能学到东西——即使你正在构建的东西并不那么具有挑战性。

当然,如果你能构建一些能更好地展示你全部编程技能的东西,那就更好了。你可以发布一些简单的实用程序。你可以发布一些利用/扩展公共 API 的东西。你甚至可以建立一个包含编程教程的网站。我不在乎你构建什么。只要能构建一些东西就行。并确保在与潜在雇主交谈时,你可以炫耀它。


图片描述

利用你正在构建的一切来充实你的简历

假设你过去两年一直在努力找一份“真正的”编程工作。在此期间,你一直在做个人编程项目,也为朋友/同事开发网站/应用程序。与此同时,你还做着服务员的工作来维持生计。很多人会在简历上这样写:



EXPERIENCE:

2021-Present
Waiter @ Joe's Chicken Hut
Responsibilities: Spitting in food; Angering customers; Taking smoke 
breaks;


Enter fullscreen mode Exit fullscreen mode

换句话说,他们不会在简历上写任何与编程相关的内容,因为他们没有“真正的”编程工作。但你的简历应该这样写:



EXPERIENCE:

2021-Present
Self-Employed @ My Awesome Digital Solutions, LLC
Responsibilities: Launched a new website for a local faith-based 
organization; Forked ChatGPT to create an interactive tool for 
interview preparation; Developed a utility for managing Spotify 
playlists; Partnered with local dev users group to craft coding 
tutorials;
Technologies Used: TypeScript, JavaScript, HTML/CSS, Bootstrap, 
jQuery, GitHub, AWS, REST, GraphQL, React, Redux

2021-Present
Waiter @ Joe's Chicken Hut
Responsibilities: Spitting in food; Angering customers; Taking smoke 
breaks;


Enter fullscreen mode Exit fullscreen mode

如果你在想“但我没有因为这些项目拿到报酬”,那你就完全误解了重点。即使你过去两年在 My Awesome Digital Solutions, LLC 的总收入只有 27.83 美元,也没关系。只要你确实做过简历中列出的项目,你就没有撒谎——一点也没有。而且,在简历中写明同时完成的工作经历也完全没有问题。很多人经常这样做。

那么,别人怎么知道你真的用你提到的技术做过这些项目呢?因为它们在 GitHub 上,而且可能可以通过一些公开的 URL 查看。


图片描述

为开源项目做贡献

在开始本节之前,我坦白承认这个建议很难。大多数开源项目都由一群敬业的高级开发人员核心团队维护,他们对软件包了如指掌。有些社区不仅极其封闭,而且对于那些尚未深入研究过软件包的人来说,甚至可能不知道从何入手。虽然理论上我们都应该为开源贡献一份力量,这很好,但在实践中,如果你还没有深入研究过开源项目,那么即使是一行代码获得批准并合并到项目中,也可能非常困难。

那么,我为什么要告诉你这么做呢?尤其是在你自己经验不足的情况下?原因有二:

首先,深入研究成熟的开源项目是你在正式从事编程工作之前了解“生产代码”的少数途径之一。我所说的“生产代码”是什么意思呢?

嗯,有一个令人讨厌的小秘密,大多数人在你刚开始学习编程时都不会告诉你:你在大多数实际代码库中看到的“生产代码”通常与你接触过的任何代码都不一样。这听起来可能有点吓人,但事实确实如此。

当你浏览教程时,所有内容都会被“简化”到尽可能简单的程度。这样做是故意的,因为如果我要演示一个单一的、有针对性的原则,我不希望教程被大型应用中常见的各种花哨功能“弄得一团糟”。我只想说明我想要演示的那个有针对性的原则。

当你试图教授一个简单的概念时,这完全说得通。但当人们第一次接触到“真正的”代码时,这可能会让他们头晕目眩。

我亲眼目睹过这种情况。我见过一些好不容易找到工作的新人,他们第一天上班就以为自己知道“真正的”代码是什么样子。然后,他们接触到我们开发的庞大而复杂的真实生活应用程序。结果……他们彻底迷失了方向。事实上,我见过有些人几天内就辞职了,因为他们觉得自己完全力不从心。

有时,上线的应用看起来异常复杂,因为它们是由许多不同的开发者历经多年拼凑而成的遗留应用,以至于它们已经变得一团糟。但即使是应用,或者即使是精心维护的应用,其代码对于新手来说仍然可能极其难以理解。这是因为这些新代码并非简单的教程。它是一个真实的上线应用,其中嵌入了大量不同的“钩子”和依赖项。

如果你想避免第一次有人把你扔到实时代码库(或编程面试)中时那种巨大的震惊,那么几乎没有什么办法。因为公司不会轻易把他们的代码库交给你学习。

一种绝佳的方法,无需在公司受雇,就能了解“真正的”代码是什么样子。那就是加入开源项目。开源项目的复杂程度通常与企业应用程序一样高。而且,你无需在任何地方受雇就能开始适应它。一切都在 GitHub 上公开发布。

我希望你涉足开源领域的第二个原因是,它可以极大地提升你的简历。例如,假设你成功将一个只有一行代码的拉取请求合并到 React 项目中。坦白说,即使做到这一点也相当困难。但如果​​你真的做到了呢?好吧,你可以非常诚实地说,你现在是React 项目的贡献者了。这会给你的简历增添一笔亮色,你不觉得吗?

当然,你的“贡献”可能只有一行代码。但谁在乎呢?你仍然可以坦诚地说,你实际上是 React 项目的贡献者。


图片描述

考虑代码相邻角色

这个建议可能有点刺耳。如果你已经瞄准了程序员的职位,你可能不会考虑从事质量保证、业务分析师、数据分析师、桌面支持或项目经理的工作。但有时,这可能是你迈出第一步的途径。

我曾在许多开发团队工作过,从未见过公司从外部招聘任何新人。这种情况发生并非因为有人想惩罚你。而是因为新人可能会成为团队的负担——浪费其他开发人员的时间,并可能引入糟糕的代码。

但我多次看到,公司内部某个人虽然严格意义上来说并不是编码,但只要证明 A)他们在另一个职位上确实是个好员工,并且 B)他们确实具备编码技能,就会被批准加入开发团队。

想想看。如果乔是“从街上”找到我们的,而且他的简历清楚地表明他以前从未做过程序员,那么我们有理由相信他可能不适合这种环境,我们可能需要在极短的时间内把他带走。

但如果 Joe 已经在我们公司工作(担任其他职位),并且我们经常与他互动,我们就可以随时与他沟通。我们可以看看他目前的工作是否涉及编程。即使他根本不从事任何编程工作,我们也可能更愿意承担风险,因为我们已经认识他,并且了解他的工作方式。

我并非只是在理论上告诉你这些。在公司的第一份工作是“网页内容编辑”。当然,严格来说,我是在做网站的工作。但(最初)我不允许修改任何代码。我只是个编辑,负责更新静态文本

但当我被聘用担任这个职位时,我已经独立编写代码好几年了。当网站上出现一些通常需要几周甚至几个月才能让IT部门修复的问题时,我告诉他们:“嗯,你知道吗……如果你愿意,可以帮你修复?” 虽然花了一段时间,但最终他们意识到我的确知道自己在做什么。当我离开那家公司时,我的正式头衔是“应用程序开发人员”。


图片描述

博客

我知道这个建议并不适合所有人。有些人就是不喜欢写作。但写博客真的非常有用。

首先,它能提升你的公众形象。一个从未被录用、无人知晓的候选人,往往不如一个在科技博客上发表过丰富经验的候选人有价值。

其次,仅仅是写博客本身,往往就能让你对所讨论的问题有更深入的理解。博客读者社区就像你的“小黄鸭”。我可以告诉你,我曾多次在 Dev.to 上撰写关于某个软件概念的博客,我自认为已经完全理解了这些概念——但当我试图在正式文章中解释清楚时,却发现我的逻辑存在缺陷。

即使解释问题本身并没有凸显你逻辑上的缺陷,评论者很可能会发现。你知道吗?这很好我通过阅读自己博客上的评论学到了一些很棒的技巧!这些扩展的知识必将助你找到一份开发工作。

你可能会觉得,因为你才刚入门,所以写编程博客很傻。但博客甚至不必只是告诉全世界编程是怎么回事。博客甚至可以变成一种开放式的问题,用来解答你正在努力解决的问题。


图片描述

推销您的服务

当你申请空缺职位时,你已经处于极大的劣势。发布招聘信息的公司通常都提供高薪,所以他们有充分的理由挑剔。而且,仅仅是发布招聘信息就意味着必然会有大量的申请人。而且几乎所有申请人都比你更有资格(至少在纸面上是这样)。

但并非所有工作都是从招聘广告开始的。如果你密切关注,有时你可以某人推荐你。在这种情况下,你不会与其他申请人竞争——因为没有其他申请人

想象一下,你认识一位小企业主,你看到他正在为手动流程而苦苦挣扎。然后,假设你提议为他开发一些工具来实现这些流程的自动化——假设他雇佣了你。

这有可能奏效吗?没有。不过问问也无妨。谁知道呢……

需要明确的是,即使那位小企业主真的同意雇佣你,薪水也可能低得可怜。但很可能仍然比你现在的工作收入高。在这类职位上证明自己一年左右之后,你的简历会更有吸引力,你就能凭借这份工作在薪水更高的公司获得更好的职位。


图片描述

不要放弃

总而言之,我只想说,我明白。真的明白。找到你的第一份编程工作真的很难。尤其是当你脖子上挂着“自学成才”的沉重负担的时候。我知道我在这里写的东西并不是什么灵丹妙药即使你按照我建议的去做,它仍然会很……难。

我只能说:继续提升你的技能,提升你的公众影响力,并继续你的项目。机会就在眼前,即使有时很难发现。

祝你好运!

文章来源:https://dev.to/bytebodger/how-to-get-your-first-job-as-a-self-taught-programmer-1m1c
PREV
我是个冒名顶替者
NEXT
我是如何被亚马逊录用的