学习 IT 基础知识
在现代、云和抽象驱动的工程文化中,IT 基础知识处于什么位置?
最近,我和一位同事讨论了系统管理员/DevOps/IT 行业,我们开始惊叹于如今实际需要用到我们刚入行时学到的技能是如此之少。似乎每年都会出现新的工具、抽象层或服务,让您不再需要了解这项或那项技术的运作方式。当您想要的所有软件都已预先打包、测试并准备好安装时,为什么还要从源代码编译?当您可以直接指向预配置的数据库服务时,为什么还要弄清楚数据库是如何工作的?当您可以从轨道上核弹摧毁一台发生故障的 Linux 服务器,然后生成一台新的服务器,并希望问题消失时,为什么还要排除故障?
这并不是说自动化不好,或者抽象不好。当您自动化重复性任务并使复杂任务变得更容易时,最终您可以用更小、更初级的团队完成更多的工作。我非常乐意从我的发行版中获取经过测试和验证的上游内核,而不是花费数小时做同样的事情,并希望我记得包含所有正确的模块。您编译过现代 Web 浏览器吗?这不好玩。能够使用集中式配置管理工具将自己从工作中自动化出来是很方便的。
当我的同事和我讨论过去的好时光时,让我们担心的不是现代技术使事情变得更容易,或者过去的方法过时了——学习新事物是我们最初投身这个职业的原因——而是在许多方面,现代技术掩盖了太多底层发生的事情,我们发现自己很难想出如何建议刚入行的人在现代 IT 行业中发展职业生涯。那些教我们计算机、网络和 Linux 工作原理基础知识的在职培训机会变得越来越少,甚至根本不存在。
我进入 IT 行业的故事与许多在 20 世纪 90 年代中期到 21 世纪初开始职业生涯的同事相似。我最初在一个小型企业担任混合型 IT 和系统管理员的多面手职位。我做了所有的事情,从安装和排除 Windows 桌面故障,到设置 Linux 文件和 Web 服务器,再到铺设和压接网线。我还运行 Linux 桌面,在那些日子里,它对您隐藏的底层知识很少,因此无论您是否愿意,您都会立即接触到网络、软件和硬件基础知识。
作为“计算机专家”,接触并负责所有这些技术,您很快就会明白,您只需要深入研究并弄清楚事物是如何工作的才能修复它们。正是这种经验巩固了 Linux 系统管理员和网络技能,随着我从帮助台过渡到全职 Linux 系统管理员,我继续发展这些技能。然而,如今,小型企业更倾向于将他们的大部分 IT 功能外包给云,而系统管理员可能真的不需要了解几乎任何关于 Linux 或网络如何工作才能管理 Linux 服务器(甚至可能从 Mac 管理它们)。那么他们如何学习底层发生的事情呢?
这种现象并不局限于 IT 行业。现代艺术家、作家和音乐家也常常没有受过历史教育,也不擅长他们技艺的基础知识。虽然科学领域的职业似乎仍然强调对过去一切的深刻理解,但在许多其他领域,我们似乎满足于跳过课程的这一部分,而只关注新的事物。然而,当涉及到 IT 时,问题不在于您需要理解基础知识才能找到一份好工作——您不需要——但是当出现问题时,如果不至少在某种程度上理解幕后发生的事情,几乎不可能排除故障。当您自己无法解决问题时,您只能重新启动、重新生成或致电供应商的支持热线。如果不了解过去的技术及其特性和缺点,当行业新手说服您他们刚刚发明了这些技术时,您更有可能重蹈覆辙。
幸运的是,Linux 的开放性仍然为我们提供了一种摆脱这个问题的方法。虽然您可以使用现代 Linux 桌面和服务器,而几乎不需要了解计算机、网络或 Linux 本身是如何工作的,但与其他系统不同,如果您愿意查看,Linux 仍然会向您展示幕后发生的一切。您可以设置运行与互联网相同的服务的复杂 Linux 服务器网络——所有这些都是免费的(并且借助虚拟化的力量,所有这些都可以从一台机器上完成)。对于愿意深入研究 Linux 的有抱负的工程师来说,您将拥有卓越的知识,并比所有同行都更具优势。