在当今的技术行业中,我们面临着一个日益严重的问题:过度抽象化正在侵蚀着技术人员的核心能力。越来越多的所谓”专家”只知道如何配置工具,却对底层技术原理一无所知。这不仅是当前的挑战,更是对未来的威胁。
抽象化的双刃剑
抽象化本身并非坏事。就像汽车的方向盘是一个抽象概念,让我们更容易驾驶;助力转向系统则是另一层抽象,进一步改善了驾驶体验。抽象化通常能提升生活质量,但正如丹麦谚语所说:
🇩🇰 丹麦谚语
过少和过多都会毁掉一切。
当抽象层出现问题时,如果没有人理解底层技术的工作原理,这种抽象还有什么意义呢?
利润驱动下的技术简化
技术行业完全被利润驱动,对其他因素关注甚少。为了尽快推出新产品或服务,我们需要更多的抽象化和自动化,更少的人力,以及更浅层的理解。
- 程序员 + 系统管理员 → DevOps
- DevOps → DevSecOps
- 专业分工 → 全栈整合
- 深度理解 → 工具配置
现在程序员和系统管理员已经不复存在,取而代之的是 DevOps 甚至 DevSecOps。行业试图将所有任务都塞进一个人的工作描述中:技术人员需要负责开发(Dev)、安全(Sec)和运维(Ops)。由于没有人能真正掌握所有这些技能,我们只能尽可能地自动化一切,以节省成本并避免不同技术部门之间复杂的人际交互。
结果是,现代技术人员只被教授如何使用特定工具,对底层技术知之甚少。
危险的趋势
技术变得越来越难以理解,但现代生活却越来越依赖我们使用的技术。当技术行业的理解水平降到大多数人甚至不知道如何修复他们使用的工具时,会发生什么?
人们已经习惯了抽象化的状态,认为这是正确的方法,并乐于通过添加更多抽象层来加剧这种混乱。
现代编程在很多方面都让我感到恐惧,他们只是一层又一层地构建,除了翻译什么都不做。
现实中的问题
什么都没有泄露,什么都没有被发现。这种情况可能持续数年而无人察觉,因为 GUI 面板显示一切正常。
更令人担忧的是,一些学生今天甚至不知道什么是文件和文件夹。
给技术学习者的建议
- ✅ 不要盲目跟风:永远不要只是跟随炒作或趋势
- ✅ 保持好奇心:不要只学习工具,试着理解底层技术的工作原理
- ✅ 动手实践:如果可能,至少尝试一次手动完成配置工具为你做的事情
- ✅ 阅读源码:如果可能,试着查看工具的代码。即使对代码的基本理解也很有价值
- ✅ 持续学习:保持好奇心,不断学习,实验,深入研究你感兴趣的技术
- ✅ 质疑一切:特别是那些对你来说没有意义的东西。不要假设别人知道得更好
- ✅ 建立实验环境:如果可能,建立一个家庭实验室,用它作为学习和试验的游乐场
工程师的态度
我想表达的观点不是每个人都需要从第一原理理解一切,或者你不应该使用任何工具。正如我所说,我们需要抽象化。此外,我们有专门从事不同领域的人,比如机械师修理卡车,司机驾驶卡车。
我要强调的是,对于从事技术工作的人来说,工程师对技术的态度具有重要价值。
在软件开发中,太多的专家被工具和自动化抽象掉并取代,越来越少的人理解他们工作层面下一层的任何东西。
这是一个重大问题,因为我们最终会达到很少有人能修复下层任何东西的地步。事实上,我们已经部分达到了这一点!
行业现状的反思
大约半年前,我遇到了一些前端 Web 开发人员,他们不知道可以在没有部署工具的情况下创建网站,也不知道即使网站接受付款也完全不需要 JavaScript。我问了一个当时在教 Python 编程课的朋友,他说:
💬 编程教师的观察
不要对此感到惊讶。这就是今天的水平。行业希望我们批量生产知道如何”按按钮”的人,而不是在更深层次上理解任何东西的人。
我知道总会有一些人对更深层次感兴趣,这不是重点。重点是,特别是在软件开发中,我们早就达到了添加太多抽象层而太少人理解他们在做什么的地步。行业正在搬起石头砸自己的脚。
结语
只有这样,我们才能确保技术行业的可持续发展,而不是走向一个没有人真正理解我们所依赖的系统的未来。
作为技术从业者,我们有责任不仅掌握工具的使用,更要理解工具背后的原理。这不仅是对自己职业发展的投资,更是对整个行业未来的贡献。
- 《Unix 编程艺术》- Eric S. Raymond
- 《代码大全》- Steve McConnell
- 《计算机程序的构造和解释》- Harold Abelson