我的职业生涯主要专注于基础设施,所需Specific的技术技能也随着时间而转移。在本文中,我将列出 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 的书精通 CloudForms 自动化(免费 PDF 格式提供)。使用 CloudForms 构建状态机和高级自动化工作流程有助于塑造我对 Ruby 内部构造的理解。
播客: 我还收听 Ruby on Rails Podcast 和 Ruby Rogues。
JavaScript
JavaScript 框架 和项目的生态系统继续以惊人的速度增长。从客户端 JavaScript 到服务器端框架,互联网的绝大部分都在 JavaScript 上运行。
FreeCodeCamp: JavaScript 是一种我正在继续学习的语言,主要通过 FreeCodeCamp。FreeCodeCamp 有一个出色的免费课程,提供真实世界的示例,并将学生推向超越典型的“输入这些单词并运行”的体验。随着您在课程中不断进步,您获得的规范性指导越来越少,取而代之的是给您完成的任务。我在我的旅程中学到最彻底的课程是这种“深入深水区”的教学风格。我再怎么强烈推荐它都不为过。
播客: 我还收听以 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 上的学习路径是另一个很好的资源,包括 精通 Google 的 Go。
C
C 语言是我尝试学习过几次的语言。每次我接触 C 时,我都没有任何特定的目标。我想学习这门语言,因为世界上很多代码都是用 C 编写的,而且这门语言中的许多结构在其他语言中也被重用。然而,当我加入红帽时,我很快就了解到一句在 FOSS 社区中流传已久的格言:最好的文档就是代码。当我试图理解 KVM、libvirt 和 QEMU 等项目时,我意识到我需要学习 C 才能理解在基本层面上发生了什么。
循序渐进学 C: 为了学习 C,我选择了 循序渐进学 C,事实证明这是一种独特的语言学习方法。我喜欢作者的写作风格以及对编码练习的务实态度。您可以免费在线阅读本书,或者购买本书以获取代码示例和电影文件。
我目前的工作重点是与客户讨论云解决方案,但我长期以来一直投入于 IT 社区,我感到有义务回馈社会。我在 2017 年关注的事情之一是帮助教育当前的 IT 人员了解市场趋势,以及如何参与到正在开始成为焦点的 IT 新世界中。我希望您能够利用本文中提供的一些资源,将您的简历上的“构建服务器”要点转变为“构建代码”。
您现在专注于学习哪些编程语言?请告诉我们对您的编程之旅最有帮助的资源。
15 条评论