我的职业生涯主要专注于基础设施,随着时间的推移,所需的特定技术技能也发生了变化。在本文中,我将列出 DevOps 的五大编程语言,以及在我将这些开发技能添加到我的基础设施工具包时,对我最有帮助的资源。
了解如何安装和堆叠服务器在这个阶段已不再是一项热门技能。大多数企业不再构建物理数据中心。相反,我们正在设计和构建托管在公共云环境中的服务能力。基础设施通过代码进行配置、部署和管理。这是 DevOps 运动的核心——当一个组织可以用代码行定义其基础设施时,数据中心中大多数(如果不是全部)任务的自动化就成为可能。
高级自动化实现了过去不可能实现的持续集成/持续交付 (CI/CD) 实践。CI/CD 工作流程使应用程序交付变得顺畅——开发人员可以将其代码推送到源代码存储库,基础设施会自动部署以支持测试流程,这些流程可以将应用程序一直推送到生产环境,而无需人工干预。技术人员爬到架空地板下插入新网线的操作不再是生产应用程序部署的关键路径。
基础设施团队现在正在将其能力从安装和堆叠服务器转移到支持 CI/CD 管道,这意味着要学习代码。以 YAML 构建的模板文件,以 Python 编写的基础设施部署脚本,以及通过 Groovy 中定义的管道部署的 JavaScript 应用程序。应用程序代码本身越来越接近基础设施。现在,应用程序开发人员可以在其应用程序中构建例程,通过基础设施 API 进行扩展和处理故障转移。这就是为什么我开始投入大量时间学习编码。
我决定专注于学习 DevOps 中涉及的开发语言,并确定了五种最相关的语言:Python、Ruby、JavaScript、Go 和 C。在这一点上,我绝不是一名全职开发人员,甚至不确定我是否可以称自己为业余爱好者。但感谢我在本文中提供的资源,我已经超越了基础知识的范畴。
Python
Python 已成为基础设施中的通用语言。它已被用于构建云基础设施项目,例如 OpenStack,甚至通过 Django 等框架支持 Web 应用程序。Python 是一种平易近人的语言,用途广泛。
Codecademy: 我在 Codecademy 开始学习 Python。Codecademy 的 Python 课程 提供了一个很好的入门。
Safari Books Online 培训: 从那里,我继续学习 Jessica McKellar 在 Safari Books Online 上的优秀 Python 入门 课程。Safari 服务很贵,但经常会有会员促销活动,可以为您提供高达 50% 的折扣。SafariBooks 还提供 O'Reilly 会议视频,包括讲座和实验室。这些讲座提供了一个机会,可以在每种语言中找到有趣的细分领域。
在线会议视频: 在线搜索,您会发现各种开发者会议上关于如何以您可能没有考虑过的方式使用语言的有趣讲座。例如,PyCon 会议视频 在 YouTube 上提供。
Ruby
Ruby 用于许多基础设施项目。ManageIQ 例如,是一个 Ruby on Rails 应用程序。在我在红帽的工作中,我经常和客户开玩笑说,使用 ManageIQ(和 CloudForms),用户只需 10 行 Ruby 代码就可以做任何事情。
Codecademy: 与 Python 一样,我的 Ruby 知识主要来自 Codecademy。
文档: 另一个帮助我从更实际的角度(即为了我的工作)理解 Ruby 的资源是 Peter McCowan 的著作《Mastering CloudForms Automation》(可免费下载 PDF)。使用 CloudForms 构建状态机和高级自动化工作流程帮助我形成了对 Ruby 内部构造的理解。
播客: 我还收听 Ruby on Rails 播客 和 Ruby Rogues。
JavaScript
JavaScript 框架和项目的生态系统继续以惊人的速度增长。从客户端 JavaScript 到服务器端框架,互联网的很大一部分都在 JavaScript 上运行。
FreeCodeCamp: JavaScript 是一种我正在继续学习的语言,主要通过 FreeCodeCamp。FreeCodeCamp 有一个优秀的免费课程,提供真实的示例,并将学生推向超越典型的“键入这些单词并运行 wheeeeee”的体验。随着您在课程中的进步,您得到的规范性指导越来越少,取而代之的是给您完成的任务。我在我的学习旅程中最彻底地学到的课程来自于这种“深入水域”的教学风格。我强烈推荐它。
播客: 我还收听以 JavaScript 为重点的播客,例如 JavaScript Jabber 和 FiveJS。
Go
Go 语言于 2009 年推出,自推出以来在市场上引起了很大的轰动。该语言的设计者专注于创建一种静态类型语言,该语言既具有人类可读性,又具有良好的规模性能。
golang.org: 我才刚刚开始接触 Go,从 golang.org 上的教程开始。
YouTube 上的 Google Developers 频道: 我还开始观看 Google Developers 频道 上的视频,包括 Go for Pythonistas、Get Started with Go 和 Go Programming。
Safari Books Online 培训: 我在 2017 年将更多地关注 Go,因为它支撑着许多重要的 Web 技术,例如 Docker、Kubernetes 和 etcd。Safari Books Online 上的学习路径是另一个很好的资源,包括 Master Google's Go。
C
C 语言是我尝试学习过几次的语言。每次我接触 C 语言时,我都没有任何特定的目标。我想学习这门语言,因为世界上很多代码都是用 C 语言编写的,并且这门语言中的许多结构在其他语言中都被重复使用。然而,当我加入红帽时,我很快就学到了 FOSS 社区长期以来流传的一句格言:最好的文档就是代码。当我试图理解 KVM、libvirt 和 QEMU 等项目时,我意识到我需要学习 C 语言才能理解在基本层面上发生了什么。
Learn C the Hard Way: 为了学习 C 语言,我选择了 Learn C the Hard Way,这已被证明是一种独特的语言学习方法。我喜欢作者的写作风格和对编码练习的务实态度。您可以免费在线阅读本书,也可以购买本书以获得代码示例和电影文件。
我目前的工作重点是与客户讨论云解决方案,但我长期以来一直投入于 IT 社区,我感到有义务回馈社区。我在 2017 年关注的事情之一是帮助教育当前的 IT 人员了解市场趋势,以及如何参与到正在开始成为焦点的 IT 新世界中。我希望您能够利用本文中提供的一些资源,将您的简历上“构建服务器”的要点转变为“构建代码”。
您现在专注于学习哪些编程语言?请告诉我们对您的编程之旅最有帮助的资源。
15 条评论