你已经完成了三门AWS相关的课程,还学习了十几份Docker教程,并掌握了相关知识。你知道Kubernetes是什么,也了解CI/CD的含义,能够毫不迟疑地解释“基础设施即代码”这一概念。

然而,当你将这些知识应用到实际工作中时,却没有任何成果回报。

这种经历在科技领域确实非常令人沮丧。你确实在努力学习、投入时间,但最终却看不到任何成果。你会开始怀疑市场是否竞争过于激烈,是否还需要再考一个证书,或者是否存在别人已经发现但你还不知道的隐藏途径。

事实上,原因比这些都要简单且更具操作性:招聘经理无法看到你在YouTube上观看的视频记录,但他们可以查看你的GitHub账号。大多数初学者注重的是学习过程,而被招聘的人则更看重能够证明自己能力的东西。

在这份指南中,你会了解到招聘经理在评估初级云技术或DevOps岗位的候选人时实际上会考虑的九个因素,并且会得到一份针对每个因素的具体、可行的90天行动计划。读完这份指南后,你将清楚地知道自己目前处于什么阶段,以及接下来应该采取哪些行动。

目录

阻碍初学者的三种学习模式

模式1:教程循环

第1周:你花了8个小时观看Docker相关的教学视频。第2周:你开始学习AWS课程,并完成了70%的内容。第3周:你觉得Kubernetes的相关内容很有趣,于是转而学习它。第4周:当你打开LinkedIn时,会疑惑为什么没有收到任何回复。

观看教程确实会让人产生自己正在取得进步的错觉。这种学习方式很轻松、被动,而且不会遇到任何失败的情况——没有任何东西会出错,也没有什么需要解决的问题。

问题在于,这种学习方式产生的成果根本无法让招聘经理进行评估。课程和证书只能说明你接触过哪些知识,而你的GitHub账户才能真正体现你的实际能力。

模式2:理论与实践的脱节

你可以流利地解释CI/CD的相关概念,也读过Kubernetes的官方文档,而且明白容器和虚拟机之间的区别。

但实际上,你从未真正将一个简单的应用程序进行容器化处理,然后将其连接到部署流程中,并最终部署到云服务器上,使其拥有可供他人访问的网址。

在面试中,“我理解其工作原理”和“我曾经开发过这个项目,这是链接”这两种回答是完全不同的。招聘经理每天都会听到数百名候选人说第一种话,但只有第二种回答才会让他们给你回电。

模式3:默默无闻的学习

这种学习模式可能是最痛苦的,因为你的确在努力学习,但却没有人知道这一点。你没有在GitHub上发布任何内容,也没有在LinkedIn上发文,更没有参与任何社区活动。你所做的只是将简历发送到招聘平台,然后等待系统自动筛选结果罢了。

残酷的事实是:人们往往是通过他人而被录用的。如果招聘经理看到了你在LinkedIn上分享的自己解决某个问题的经历,他们很可能会认真考虑你的简历;而那些通过招聘门户网站申请的人,则很难获得这样的机会。

招聘经理实际上在评估什么

我将接下来的这九个因素分成了三类:思维模式执行能力可见性。这些因素的排序很重要:思维模式决定了你的执行方式,而执行能力则是决定你是否能够被他人看到的关键。

分类 涵盖内容 相关因素
思维模式 你如何看待问题以及自己的职业生涯 因素2、7、8、9
执行能力 你实际完成并展示出来的成果 因素1、3
可见性 是否有人知道你的存在 因素4、5、6

让我们逐一分析这些因素。

因素1:工作成果证明(这是不可协商的要素)

如果从这篇文章中能得出一个结论的话,那就是:没有作品集就意味着不会被认真考虑。在所有申请者中,技术能力最强的那个人,如果没有实际成果作为证明,也会被忽视。

重点不在于用复杂的方案来给人留下深刻印象,而在于要证明自己能够将一个系统从零开始开发出来,然后将其部署到位、编写相关文档,并确保其能够正常运行。

以下是每个作品集项目在被视为完成之前必须满足的要求:

  • 已经成功部署:必须有一个可以分享的正式网址,而不仅仅是“在我的机器上可以运行”而已。

  • 拥有CI/CD流水线:代码变更能够自动经过测试并得到部署。

  • 基础设施配置是通过代码实现的:而不是在AWS控制台中手动配置的。

  • 具备监控和报警功能:在用户发现问题之前,你就能及时察觉到系统的异常情况。

  • 有详细的文档记录:README文件中应该说明该项目的功能、使用方法以及工作原理。

  • 项目代码公开托管在GitHub上:必须有真实的提交历史记录,以体现项目的迭代开发过程。

如果你的项目满足了以上所有六个要求,那就说明你已经具备了实际的工作成果;如果只满足四个要求,那么说明你的项目还处于进行中。在开始申请之前,请务必完成这些项目。

三个能涵盖所有需求的项目

你并不需要十个项目,只需要两到三个项目就能够充分展示你的DevOps技能。

项目1:全栈部署流水线

这是每个初学者都应该首先完成的基础性DevOps项目。

可以选择任何一个简单的Web应用,比如Python Flask应用程序、Node.js API,或者一个静态网站,然后使用Docker将其容器化。编写一个CI/CD流水线,使得每次向主分支提交代码时,系统都能自动进行测试、生成Docker镜像并部署到云服务器上。你还可以配置Nginx作为反向代理,并添加监控工具(UptimeRobot提供免费版本)。

所需工具:GitHub Actions、Docker、AWS EC2或Render.com、Nginx。

这对招聘经理来说意义重大:这个项目证明了你能够完整地自动化整个部署流程。招聘经理可以通过访问你的网址来验证系统是否正在正常运行,并查看你的流水线操作记录。

仅仅通过这个项目,你就比那些只有课程结业截图的申请者更具竞争力了。

项目2:使用Terraform实现代码化基础设施管理

编写Terraform脚本来配置一个完整的开发环境,包括VPC、公有子网和私有子网、带有适当安全规则的EC2实例,以及用于存储配置信息的S3桶。通过执行销毁和重新创建操作,可以证明这些代码确实是有效的。此外,还需要设置一个GitHub Actions工作流,在拉取请求时运行`terraform plan`命令,在代码合并到主分支时运行`terraform apply`命令。

工具:Terraform、AWS(或Azure/GCP)、GitHub Actions。

为什么这很重要:对于任何部署云基础设施的公司来说,掌握使用Terraform进行基础设施代码化管理都是一项必备技能。能够编写Terraform脚本、对其进行版本控制并实现自动化操作,说明你具备核心的专业能力。

项目3:监控与可观测性体系构建

使用Docker Compose部署监控系统:让Prometheus从应用程序及主机中收集各项指标数据,通过Grafana制作仪表盘来显示CPU使用率、内存占用情况、请求量以及错误率;同时配置Alertmanager,在阈值被突破时向Slack或电子邮件发送警报。将这个监控系统与你的项目1应用程序连接起来,这样当应用程序被部署后,监控系统就能立即开始对其进行监测。

工具:Prometheus、Grafana、Alertmanager、Node Exporter、Docker Compose。

为什么这很重要:大多数初学者的实践项目中并不包含任何与可观测性相关的内容。但这个项目能立刻证明你真正理解了生产环境下的工程原理,而不仅仅是部署流程。任何负责审核你项目的资深DevOps工程师或SRE都会注意到这一点,这会让你在竞争中脱颖而出。

GitHub个人主页上展示了三个带有描述性名称的DevOps实践项目仓库

因素2:系统级思维

这种思维方式才是真正将DevOps工程师与其他仅仅掌握了一些工具的人区分开来的关键。系统级思维意味着你能够纵观整个系统的全貌,而不仅仅关注当前正在处理的某个部分。

招聘经理在面试过程中会测试你的这种能力:你能追踪一个用户从点击按钮到看到响应的整个过程吗?同时,请解释在这个过程中每一层都发生了什么?

以下是Web请求的完整处理流程,也是每位DevOps工程师都必须了解的现代基础设施架构图:

步骤 层次 发生的情况及可能出现的错误
1 用户浏览器 用户输入URL地址,浏览器需要找到对应的服务器。
2 DNS解析 域名会被转换为IP地址。如果DNS配置错误,用户将无法连接到服务器。
3 CDN/边缘网络 请求首先会经过CDN(如Cloudflare、CloudFront),静态资源会从最近的边缘节点提供;SSL加密也在这一层完成。
4 负载均衡器 将请求路由到可用的应用服务器。如果所有目标服务器都处于异常状态,用户将会收到502/503错误提示。
5 计算节点/应用服务器 应用程序代码在容器中运行,或者在虚拟机上执行,业务逻辑也在这一层得到处理。
6 数据库层 应用程序会从数据库中读取数据或向数据库写入数据。查询速度过慢或磁盘空间不足都会导致响应延迟或系统崩溃。
7 缓存层 Redis或Memcached等缓存机制用于存储频繁访问的数据。如果缓存未命中,就会增加对数据库的负担。
8 响应返回 处理完请求后,响应数据会依次经过之前的所有层次,最终显示给用户。
9 日志记录与监控 上述的每一个步骤都应该生成相应的日志和指标数据。良好的监控系统能在用户发现问题之前就发出警报。

为什么在面试中这些知识如此重要呢?请看两位候选人如何回答这个问题:“请讲讲在生产环境中出现过什么故障的情况。”

候选人A:”网站出现了故障,无法正常访问。”

候选人B:”由于在上次部署过程中出现了内存泄漏问题,导致应用容器的内存不足,进而使得负载均衡器的健康检查失败。我们通过Grafana中的内存监控数据发现了这个问题,随即进行了回滚操作,并在容器配置中设置了内存限制。”

同样是同一件事,但回答却截然不同。正是这种系统级的思考方式才决定了最终的结果。

因素3:软件工程基础

许多初学者在还没有掌握这些工具所依赖的基础知识之前,就急于学习Kubernetes和Terraform。这样的学习方式虽然能让他们掌握一些看似复杂的技能,但实际上他们的知识结构并不牢固。

以下是一些真正重要的基础知识,如果你在这些方面存在欠缺,就应该尽快补上:

1. Linux与命令行

DevOps工具都是在Linux环境下运行的,CI/CD流程也是通过Linux容器来执行的。SSH是连接所有服务器的关键工具。如果你对使用命令行感到不适应,那就说明你还没有准备好应对生产环境中的实际需求。这不是个人喜好问题,而是一个必备条件。

首先从每天练习使用Linux开始吧。Linux基金会的免费入门资料是一个很好的起点。此外,freCodeCamp也提供了免费的Linux基础课程。

2. 网络基础知识

DNS、TCP/IP、HTTP/HTTPS、负载均衡、防火墙、VPC和子网等等,这些概念在所有的云架构中都扮演着核心角色。如果没有掌握这些知识,Terraform和Kubernetes就只是些无法理解的“魔法盒子”。请仔细研究上面提到的那些网络流程,直到你能熟练地记住它们。

这里有一门计算机网络基础知识课程,可以帮助你入门。

3. 脚本编写:Bash与Python

CI/CD流程本质上就是脚本编程,自动化操作也离不开脚本。如果你无法编写能够读取配置文件、调用API并妥善处理异常的Bash脚本,那么你的自动化能力就会受到严重限制。解决办法是每周编写一个简单而有用的脚本,用代码来解决实际问题。

这里有一份针对初学者的Linux Shell脚本编写教程,非常有用。

4. Git与版本控制

不仅仅是git commitgit push,分支策略、拉取请求、合并冲突处理以及版本的标记等,都是专业DevOps团队中必须掌握的标准操作。请把Git应用到各种场景中,包括你的个人学习笔记管理。有意识地练习使用分支机制来开展工作吧。

这里有一本关于Git基础知识的完整书籍(其中也涉及一些更高级的主题),这些知识是你必须掌握的。

5. Docker与容器

Docker是现代软件通用的打包格式。了解层结构、多阶段构建、卷、网络以及容器安全等方面的知识,是从事软件开发工作的基本要求。你开发的每一个项目都应该被封装成容器形式。建议亲手编写Dockerfile,而不是直接复制别人的代码。

这里有一门关于Docker与Kubernetes的实战课程,可以帮助你快速入门。

因素4:沟通能力

技术技能决定了你的发展上限,而沟通能力则决定了你达到这一上限的速度。对于初入DevOps领域的候选人来说,这一点往往被严重低估了。

即使两个候选人的技术能力完全相同,他们的职业发展结果也会因为沟通能力的差异而大相径庭。以下是实际中的一些例子:

架构说明能力:你能向从未见过你的项目的人解释它的运作原理吗?你能把架构图画在白板上,并详细说明你的设计决策及所做出的权衡吗?

清晰表达权衡因素的能力:“我选择X而不是Y,是因为……”这句话在技术面试中非常有用。它表明你明白每一个决定都有其优缺点,而且你是经过深思熟虑后才做出选择的,而不仅仅是照搬别人的教程。

书面文档的编写能力README文件就像是你的项目的“求职信”。一份写得好的README文件,其中包含清晰的安装说明、架构图以及各项决策的详细解释,能够体现你较高的专业素养——而这正是大多数初学者所缺乏的。

这里有一个简单的测试:打开你在GitHub上最近发布的项目,然后像招聘经理一样阅读其中的README文件。它是否能回答以下这些问题呢?

  • 这个项目是用来做什么的?你为什么开发它?

  • 它的架构是怎样的?

  • 如何在本机上运行这个项目?如何进行部署?

  • 你做出了哪些决策,为什么这样选择?

  • 如果继续开发这个项目,你会对它做出哪些改进?

如果你对上述问题中有两个以上回答“不知道”,那么在申请任何工作之前,请先重新编写README文件。这一简单的行动会显著提高你的应聘成功率。

面试中的沟通能力:招聘经理会在整个面试过程中评估你的沟通能力,而不仅仅是你给出的答案。他们会观察你说话时的思路是否清晰、你的回答是否有条理,以及你是否能够诚实地表达自己的不确定之处。

因素5:一致性胜过强度

招聘经理们善于通过各种线索来了解一个人的能力。他们会查看你在GitHub上的贡献记录、LinkedIn上的活动情况以及你的学习历程,甚至在阅读你的简历之前就已经对你有了初步的印象。

采用“狂热学习”的方式——周末花10个小时学习,之后却几周都不进行任何学习活动——所得到的GitHub数据根本无法反映真实情况。相比之下,每天专注学习30分钟,持续6个月,其效果远胜于每月学习10小时但断断续续的学习方式。在6个月的时间里,坚持每日学习的那个人总共投入了90个小时进行专注学习,而采用“狂热学习”方式的人只投入了60个小时,且所学内容的掌握程度也明显较差。

GitHub贡献图表,显示某人在12个月内持续进行学习并定期提交代码的情况

以下是培养学习习惯的一致性的方法:

  • 在一天中选择某个固定的时间段进行学习。30分钟的时间就足以取得进步。

  • 设定一个为期4周的学习目标,比如“使用Terraform构建并部署一个VPC系统,并编写相应的README文档”,而不是简单地规定“学习TerraForm”。

  • 记录自己的学习过程:包括学习时间、学习了什么内容、完成了哪些任务,以及哪些知识点让你感到困惑。

  • 当4周的学习期结束时,评估自己所取得的成果,并为下一次学习制定计划。

需要避免的做法是:在LinkedIn上公开宣称自己“正在全职从事DevOps相关工作”,但随后却消失6周不见。这种行为很容易被人注意到。只有那些真正能够坚持下去的人,才应该在公共平台上宣布自己的学习计划。

因素6:人脉网络与曝光度

这是大多数初学者最难以接受的因素,但它在缩短招聘周期方面确实能起到至关重要的作用。

大多数DevOps职位都是通过他人推荐、社区交流或LinkedIn上的互动来获得的。如果有 someone 看过你的工作成果,并为你提供引荐,这种帮助的效果远比你提交50份求职申请要大得多。

以下是三种既能提升曝光度,又不会让人觉得你在刻意表现自己的方法:

参与社区活动

加入那些DevOps工程师们经常交流的社区,比如AWS用户组、当地的DevOps聚会、DevOps Discord服务器,以及Reddit上的r/devops和r/kubernetes等社区。你不需要成为专家,只需提出具体的问题,分享自己真正了解的知识,并持续参与这些活动即可。经过3到6个月的时间,人们就会开始认识你的名字了。

在LinkedIn上发布内容

每周发布一次关于你所学到的知识、完成的项目,或者遇到的难题的内容。这些内容不是营销材料,而是真实的记录。比如这样一篇帖子:“这周我配置了Prometheus警报系统来监控Docker Compose应用程序的运行情况,下面是我遇到的一些问题以及解决方法。”这样的帖子会吸引招聘人员的注意,促进交流,并帮助你建立一份能够反映自己成长历程的档案。

在公开场合提出有价值的问题

当你遇到难题并解决了它之后,把解决方法记录下来,并发布在你最初提问的那个社区里。之后再回答别人针对同一问题提出的不同版本的问题。这样,你就能展现出自己是一个乐于助人、积极参与学习的人,而正是这类人才是招聘经理们想要招募的。

以下是具体可行的三个月发展计划:

时间阶段 行动安排
第1-2周 更新你的LinkedIn个人简介,内容可以是:“正在学习云技术/DevOps工程,使用AWS、Docker和Terraform进行开发”。主动联系20位DevOps工程师、招聘人员或招聘经理,并在加好友时附上简短的个人信息。
第3-4周 发布第一篇LinkedIn帖子,记录本周自己完成的工作或学到的知识。内容要真实具体,150到200字即可。
第2个月 加入一个相关社区,主动介绍自己,并每周回答一个问题。
第3个月 坚持每周发布一篇帖子,积极与他人互动。这样你的信息就会出现在招聘人员的搜索结果中。

到了第三个月,那些在你们所在地区搜索“DevOps”职位的招聘人员就会看到你的动态。许多优秀的初级DevOps岗位机会,正是通过这种循序渐进的方式获得的。

因素7:责任担当意识

这个因素更多体现的是实际行为,而非性格类型。招聘人员关注的是你是否能够完成自己开始的工作,而不仅仅是是否开始了某项任务。

以下是两者之间的区别:

招聘人员经常看到的情况 招聘人员希望看到的情况
“我启动了一个Kubernetes项目,但遇到了很多问题” “这是一个完整的项目。它已经部署在AWS上,配备了CI/CD流程,还能被实时监控,你现在就可以通过这个链接访问它。”
“我参加了Terraform培训,学到了很多相关知识” “我已经完成了学习任务,还把所学内容整理成了文档,并写了一篇帖子分享心得。”

责任担当意识包含三个方面:首先,必须完成工作——一个完整且简单的项目,其价值远超过十个不完整的复杂项目;其次,当出现问题时,要主动承担责任并解决问题,同时采取措施防止类似情况再次发生;最后,要主动学习,不要等待别人告诉自己该学什么。当你发现知识缺口时,要自己想办法弥补它。这就是职位描述中“具备独立工作能力”的真正含义。

因素8:商业意识

技术技能能让你获得工作机会,而商业意识则能帮助你在这个岗位上取得成功并加速职业发展。

招聘人员会重点考察这样一个问题:你能否将自己的技术决策与成本、系统可用性以及用户需求联系起来?基础设施相关的决策本质上属于商业决策。在大多数公司中,云服务费用通常是仅次于员工工资的第二大开支。一个配置错误的自动扩展组或被遗忘的大型EC2实例,可能会在短时间内造成数千美元的损失。

以下是一些值得熟练掌握的基准测试问题:

  • 如果你的公司提供了99.9%的服务水平保证,那么每月会有多少分钟的停机时间呢?(大约43分钟。)

  • 如果你将工作负载从按需使用的EC2实例转移到预留实例上,大概能节省多少成本呢?(大约40%到60%。)

  • 如果你的持续集成/持续部署流程每次构建需要45分钟,而你每天进行20次构建,那么这相当于每周让开发人员等待多长时间呢?

大多数初级候选人在进行面试时都无法流利地回答这些问题。那些能够脱颖而出的人,并不是因为这些问题很难,而是因为很少有人会真正去将基础设施与业务需求联系起来思考。

养成这样一个简单的习惯:无论是在项目文档中还是在面试中描述某个技术决策时,都要加入业务层面的分析。“我配置了自动扩展功能”这句话应该改为“我配置了自动扩展功能来应对流量高峰,这样不仅避免了过度配置带来的成本浪费,还使我们的每月云服务支出减少了大约X美元。”

因素9:学习能力

每个人都会声称自己是一个学习速度很快的人。在技术职位的申请中,这句话被使用得最为频繁。但如何才能让这个说法真正具有意义呢?

在面试中说“我学习能力很强”只是基本要求而已。关键在于你是否能够证明这一点。具体的证明方式可以是这样的:“我之前从未使用过GitHub Actions。但我需要为正在开发的一个项目搭建一个持续集成/持续部署流程。在48小时内,我就建立了一个可以运行测试、生成Docker镜像并部署到AWS上的有效流程。”

让这种说法具有可信度的关键在于:要提到具体的工具、具体的时间框架以及具体的成果。招聘经理实际上可以看到相关的GitHub仓库、提交记录以及那个已经投入使用的流程。

学习能力并不是指对许多工具只是浅尝辄止,而是指因为深入理解了相关的基本概念,所以能够迅速掌握新的工具。工具的名称每隔几年就会发生变化,但诸如网络技术、自动化、可观测性、可靠性这些概念却是永恒不变的。

要想真正证明自己的学习能力,可以每个月选择一种自己之前没有使用过的工具,按照其快速入门指南进行操作,完成一些简单的任务,记录下其中遇到的困难,并将这些内容分享出来。这样,你就可以拥有一份具体、有时间戳且详细的“学习成果档案”了。

你的90天行动计划

以下是一个具体的、循序渐进的计划,帮助你从目前的状况达到能够参加第一次DevOps面试的状态。

第1个月:打好基础

专心完成“工作证明”部分中提到的第一个项目。将其完整地构建出来并部署上线,获取实际的网址。在第一个项目满足所有六个评估标准之前,不要开始第二个项目。

除了完成项目的开发工作外,每天还要花30分钟练习Linux和Bash脚本编程。这并不是可选的,而是其他所有工作的基础所在。

第2个月:拓展执行能力,提升自身能见度

开始实施项目2(使用Terraform进行基础设施即代码管理)。在LinkedIn上发布第一篇帖子,内容不必过于精致,但必须具体明确。加入一个社区并主动介绍自己。

第3个月:完成作品集并记录所有细节

按照完整清单的标准完成全部三个项目。完善每个项目的README文件,添加架构图,优化你的GitHub个人主页,将你最优秀的三个项目置顶显示,撰写一份介绍自己及所开发作品的README文件,并附上你的实际项目的网址链接。

第4个月:有策略地投递申请

请在第四个月之前不要开始投递申请。在提交申请时,必须准备好能够证明自己能力的相关成果。每周重点提交五到十份高质量的申请,而不是盲目地发送大量申请。在每份申请中都附上你的GitHub账号以及你最优秀项目的网址链接。对于那些你与其中某些公司有社区联系的职位,可以在投递申请之前先联系相关人士。

使用电子表格记录每一份申请的情况:包括公司名称、申请的职位、申请日期、当前状态、最终结果以及任何备注信息。在提交了30份申请后,你就会拥有足够的数据来判断哪些方法有效,哪些方法并不奏效。

以下是90天学习计划的详细安排:

时间阶段 重点任务 里程碑
第1-2周 学习Linux基础知识,设置GitHub个人主页,开始实施项目1。 基础积累阶段
第3-4周 完成项目1的CI/CD流程配置并部署项目,获取实际运行网址,撰写README文件。 提交第一份能证明自己能力的成果
第2个月 开始实施项目2,在LinkedIn上发布第一篇帖子,加入一个社区。 提升自身能见度阶段
第2-3个月 完成项目2的开发工作,搭建监控系统(为项目3做准备),每周在LinkedIn上发文更新进展。 逐步积累发展势头
第3个月 按照清单标准完成全部三个项目,完善README文件和GitHub个人主页。 作品集准备完成
第4个月及以后 有策略地投递申请,继续在社交媒体上分享自己的学习成果并积极参与社区活动。 积极寻找工作机会

坦诚的自我评估:你目前处于什么阶段?

请仔细阅读以下每一条内容,并诚实地做出回答。这是为你自己准备的,与他人无关。

评估内容 如果答案是否,则应采取的行动
我能够从头到尾解释一个Web请求的处理流程(DNS → 负载均衡器 → 计算节点 → 数据库 → 日志记录)。 直到你能熟练地回忆起这个流程为止,继续深入学习相关知识。
我至少有一个已经部署完毕且具有实际运行网址的项目。 这是当前最优先的任务,其他任何事情都比这重要。
我的最佳项目配备了CI/CD流程,能够自动完成代码推送后的部署工作。 本周就为你的现有项目添加这一功能。
我曾经使用Terraform或CloudFormation等工具编写过基础设施相关的代码。 项目2应该是你接下来需要重点开发的项目。
我的项目都配有README文件,其中详细解释了项目的架构设计及各项决策的依据。 今天花一小时时间重新撰写你的README文件。
在过去的30天内,我一直在LinkedIn上分享自己的学习心得。 今天就发一篇帖子,记录你上周所完成的工作内容。
我至少属于一个DevOps社区。 本周就加入r/devops社区或AWS的Discord服务器吧。
我能够编写Bash脚本来解决实际的自动化问题。 在接下来的30天内,每天花30分钟练习编写脚本。
我能够清楚地解释自己所开发的项目、做出各项决策的原因,以及哪些地方可以改进。 针对每一个项目,反复练习把这些内容清晰地表达出来,直到你能流利地说出来为止。

数一数你给出的“否定”回答。每一个这样的回答都代表着一个具体且需要解决的问题,而不是那种模糊的“自己还不到位”的感觉。这就是这种自我评估与那种“我还没准备好”的焦虑情绪之间的区别——你其实并没有落后,只是还需要确定接下来应该优先处理哪些事情而已。

结论

现在你知道了一些大多数初学者还不知道的事情:

你与DevOps岗位之间的距离,并不是体现在拥有的认证证书、完成的课程数量,或者了解过的工具种类上。真正的差距在于你是否能够提供实际的工作成果、是否具备足够的可见性,以及你的执行过程是否具有连贯性。

招聘经理并不是在寻找那些什么都会的人,他们需要的是那些真正完成过具体项目、记录了整个开发过程、成功部署了系统,并且能够清楚地解释自己所做每一个决策的人。

这条道路并不神秘,只需要持续努力即可。完成两到三个符合所有要求的完整项目,把所有的步骤都记录下来,积极参与各种技术社区和LinkedIn上的活动,有策略地投递求职申请,并根据反馈不断改进自己的能力。

如果你需要一份能够支持你DevOps学习之旅的实用资料,其中包含了真实的Terraform模块、CI/CD工作流程模板、基础设施管理指南,以及在实际创业环境中被广泛使用的平台工程模式,那么《初创企业DevOps实践指南》正是为你这个职业发展阶段准备的。

你与第一个DevOps职位之间的距离其实比你想象的要小得多。真正的挑战在于如何将这些知识付诸实践——现在就开始行动吧。

Comments are closed.