你的工作不是编程:管理复杂度才是核心
h
henri
你的工作不是编程:管理复杂度才是核心
摘要
这篇文章挑战了程序员的传统认知,指出软件开发的真正瓶颈不在于编写代码,而在于人类理解复杂系统的能力。作者认为,仅仅通过更换技术栈(如 React 或 Rust)无法根治代码库质量差的问题。解决之道在于构建优质的抽象——即能够改变思考方式、隐藏次要细节并突出重要核心的 思想模型 。开发者的核心职责应当是管理复杂度,而非单纯地进行编码工作。
内容框架与概述
抽象的本质与价值
文章首先引用了 John Ousterhout 的观点,强调软件开发最大的限制是理解力。所谓的 烂代码库 往往是因为复杂度超出了人的理解范畴。作者定义了真正的 抽象 应该是 思想 而非代码本身。一个成功的抽象必须能改变开发者思考代码的方式,否则它只是一层徒增烦恼的 间接层 。
如何设计与重构抽象
在实践层面,作者建议从业务逻辑和数据模型中寻找抽象灵感。业务中已存在的概念(如订单、客户)通常是最好的起点。对于难以处理的陈旧代码,作者引用了 Sandi Metz 的建议:与其在错误的抽象上修补,不如先消除抽象并回归代码重复,从而在重复中发现更契合的逻辑。他强调设计抽象是一个需要反复试错的创造性过程。
程序员的真实角色
最后,文章总结了职业角色的转变:编程的本质是管理复杂度。通过不断发现复杂度、提取核心思想并进行封装,开发者可以从 溺水 的状态中解脱出来。如果能做好抽象的设计与精炼,实际的编码环节将会变得非常简单;反之,项目则会随着时间推移变得不可维护。
核心概念及解读
- Abstraction(抽象):一种隐藏非重要细节并强调重要信息的 思想模型 。它不仅是代码封装,更是一种简化系统认知负担的手段。
- Layer of Indirection(间接层):如果一个新引入的代码层没有简化思考过程或隐藏复杂度,仅仅是将调用转发到另一处,那么它只是无效的间接层。
- Complexity Management(复杂度管理):开发者通过设计、精炼和重新设计抽象来控制系统混乱程度的核心任务。
基本信息
| 原标题 | 作者 | 发布日期 |
|---|---|---|
| Your job isnt programming | Code and Cake | 2025-12-12 |