[#]: collector: (lujun9972)
[#]: translator: (beamrolling)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-11285-1.html)
[#]: subject: (How to transition into a career as a DevOps engineer)
[#]: via: (https://opensource.com/article/19/7/how-transition-career-devops-engineer)
[#]: author: (Conor Delanbanque https://opensource.com/users/cdelanbanquehttps://opensource.com/users/daniel-ohhttps://opensource.com/users/herontheclihttps://opensource.com/users/marcobravohttps://opensource.com/users/cdelanbanque)

如何转职为 DevOps 工程师 
======

> 无论你是刚毕业的大学生，还是想在职业中寻求进步的经验丰富的 IT 专家，这些提示都可以帮你成为 DevOps 工程师。

![](https://img.linux.net.cn/data/attachment/album/201908/30/171751rodhw6wko6fkkwkq.jpg)

DevOps 工程是一个备受称赞的热门职业。不管你是刚毕业正在找第一份工作，还是在利用之前的行业经验的同时寻求学习新技能的机会，本指南都能帮你通过正确的步骤成为 [DevOps 工程师][2]。

### 让自己沉浸其中 

首先学习 [DevOps][3] 的基本原理、实践以及方法。在使用工具之前，先了解 DevOps 背后的“为什么”。DevOps 工程师的主要目标是在整个软件开发生命周期（SDLC）中提高速度并保持或提高质量，以提供最大的业务价值。阅读文章、观看 YouTube 视频、参加当地小组聚会或者会议 —— 成为热情的 DevOps 社区中的一员，在那里你将从先行者的错误和成功中学习。 

### 考虑你的背景 

如果你有从事技术工作的经历，例如软件开发人员、系统工程师、系统管理员、网络运营工程师或者数据库管理员，那么你已经拥有了广泛的见解和有用的经验，它们可以帮助你在未来成为 DevOps 工程师。如果你在完成计算机科学或任何其他 STEM（LCTT 译注：STEM 是<ruby>科学<rt>Science</rt></ruby>、<ruby>技术<rt>Technology</rt></ruby>、<ruby>工程<rt>Engineering</rt></ruby>和<ruby>数学<rt>Math</rt></ruby>四个学科的首字母缩略字）领域的学业后刚开始职业生涯，那么你将拥有在这个过渡期间需要的一些基本踏脚石。 

DevOps 工程师的角色涵盖了广泛的职责。以下是企业最有可能使用他们的三种方向：

* **偏向于开发（Dev）的 DevOps 工程师**，在构建应用中扮演软件开发的角色。他们日常工作的一部分是利用持续集成 / 持续交付（CI/CD）、共享仓库、云和容器，但他们不一定负责构建或实施工具。他们了解基础架构，并且在成熟的环境中，能将自己的代码推向生产环境。
* **偏向于运维技术（Ops）的 DevOps 工程师**，可以与系统工程师或系统管理员相比较。他们了解软件的开发，但并不会把一天的重心放在构建应用上。相反，他们更有可能支持软件开发团队实现手动流程的自动化，并提高人员和技术系统的效率。这可能意味着分解遗留代码，并用不太繁琐的自动化脚本来运行相同的命令，或者可能意味着安装、配置或维护基础结构和工具。他们确保为任何有需要的团队安装可使用的工具。他们也会通过教团队如何利用 CI / CD 和其他 DevOps 实践来帮助他们。
* **网站可靠性工程师（SRE）**，就像解决运维和基础设施的软件工程师。SRE 专注于创建可扩展、高可用且可靠的软件系统。

在理想的世界中，DevOps 工程师将了解以上所有领域；这在成熟的科技公司中很常见。然而，顶级银行和许多财富 500 强企业的 DevOps 职位通常会偏向开发（Dev）或运营（Ops）。

### 要学习的技术

DevOps 工程师需要了解各种技术才能有效完成工作。无论你的背景如何，请从作为 DevOps 工程师需要使用和理解的基本技术开始。

#### 操作系统

操作系统是一切运行的地方，拥有相关的基础知识十分重要。[Linux][4] 是你最有可能每天使用的操作系统，尽管有的组织会使用 Windows 操作系统。要开始使用，你可以在家中安装 Linux，在那里你可以随心所欲地中断，并在此过程中学习。

#### 脚本

接下来，选择一门语言来学习脚本编程。有很多语言可供选择，包括 Python、Go、Java、Bash、PowerShell、Ruby 和 C / C++。我建议[从 Python 开始][5]，因为它相对容易学习和解释，是最受欢迎的语言之一。Python 通常是遵循面向对象编程（OOP）的准则编写的，可用于 Web 开发、软件开发以及创建桌面 GUI 和业务应用程序。

#### 云

学习了 [Linux][4] 和 [Python][5] 之后，我认为下一个该学习的是云计算。基础设施不再只是“运维小哥”的事情了，因此你需要接触云平台，例如 AWS 云服务、Azure 或者谷歌云平台。我会从 AWS 开始，因为它有大量免费学习工具，可以帮助你降低作为开发人员、运维人员，甚至面向业务的部门的任何障碍。事实上，你可能会被它提供的东西所淹没。考虑从 EC2、S3 和 VPC 开始，然后看看你从其中想学到什么。

#### 编程语言

如果你对 DevOps 的软件开发充满热情，请继续提高你的编程技能。DevOps 中的一些优秀和常用的编程语言和你用于脚本编程的相同：Python、Go、Java、Bash、PowerShell、Ruby 和 C / C++。你还应该熟悉 Jenkins 和 Git / Github，你将会在 CI / CD 过程中经常使用到它们。

#### 容器

最后，使用 Docker 和编排平台（如 Kubernetes）等工具开始学习[容器化][6]。网上有大量的免费学习资源，大多数城市都有本地的线下小组，你可以在友好的环境中向有经验的人学习（还有披萨和啤酒哦！）。

#### 其他的呢？

如果你缺乏开发经验，你依然可以通过对自动化的热情，提高效率，与他人协作以及改进自己的工作来[参与 DevOps][3]。我仍然建议学习上述工具，但重点不要放在编程 / 脚本语言上。了解基础架构即服务、平台即服务、云平台和 Linux 会非常有用。你可能会设置工具并学习如何构建具有弹性和容错能力的系统，并在编写代码时利用它们。

### 找一份 DevOps 的工作

求职过程会有所不同，具体取决于你是否一直从事技术工作，是否正在进入 DevOps 领域，或者是刚开始职业生涯的毕业生。

#### 如果你已经从事技术工作

如果你正在从一个技术领域转入 DevOps 角色，首先尝试在你当前的公司寻找机会。你能通过和其他的团队一起工作来重新掌握技能吗？尝试跟随其他团队成员，寻求建议，并在不离开当前工作的情况下获得新技能。如果做不到这一点，你可能需要换另一家公司。如果你能从上面列出的一些实践、工具和技术中学习，你将能在面试时展示相关知识从而占据有利位置。关键是要诚实，不要担心失败。大多数招聘主管都明白你并不知道所有的答案；如果你能展示你一直在学习的东西，并解释你愿意学习更多，你应该有机会获得 DevOps 的工作。

#### 如果你刚开始职业生涯

申请雇用初级 DevOps 工程师的公司的空缺机会。不幸的是，许多公司表示他们希望寻找更富有经验的人，并建议你在获得经验后再申请该职位。这是“我们需要经验丰富的人”的典型，令人沮丧的场景，并且似乎没人愿意给你第一次机会。

然而，并不是所有求职经历都那么令人沮丧；一些公司专注于培训和提升刚从大学毕业的学生。例如，我工作的 [MThree][7] 会聘请应届毕业生并且对其进行 8 周的培训。当完成培训后，参与者们可以充分了解到整个 SDLC，并充分了解它在财富 500 强公司环境中的运用方式。毕业生被聘为 MThree 的客户公司的初级 DevOps 工程师 —— MThree 在前 18 - 24 个月内支付全职工资和福利，之后他们将作为直接雇员加入客户。这是弥合从大学到技术职业的间隙的好方法。

### 总结

转职成 DevOps 工程师的方法有很多种。这是一条非常有益的职业路线，可能会让你保持繁忙和挑战 — 并增加你的收入潜力。

--------------------------------------------------------------------------------

via: https://opensource.com/article/19/7/how-transition-career-devops-engineer

作者：[Conor Delanbanque][a]
选题：[lujun9972][b]
译者：[beamrolling](https://github.com/beamrolling)
校对：[wxy](https://github.com/wxy)

本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

[a]: https://opensource.com/users/cdelanbanquehttps://opensource.com/users/daniel-ohhttps://opensource.com/users/herontheclihttps://opensource.com/users/marcobravohttps://opensource.com/users/cdelanbanque
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/hiring_talent_resume_job_career.png?itok=Ci_ulYAH (technical resume for hiring new talent)
[2]: https://opensource.com/article/19/7/devops-vs-sysadmin
[3]: https://opensource.com/resources/devops
[4]: https://opensource.com/resources/linux
[5]: https://opensource.com/resources/python
[6]: https://opensource.com/article/18/8/sysadmins-guide-containers
[7]: https://www.mthreealumni.com/
