从刀耕火种到 AI 编程:工具越强,人越需要判断
人类曾经用双手翻土,后来学会借助水、风与牲畜的力量;马车让路变短,汽车重新定义了距离;手工生产走向流水线与工业自动化,让一个人的劳动可以撬动庞大的生产系统。信息时代,我们把知识、协作和交易搬进网络。今天,AI 开始参与写作、设计和编程。
每一次跃迁,都把某种原本费力的事情变得容易,也带来了新的问题:当工具替我们完成更多动作,人该负责什么?
我不敢想象百年、千年,甚至亿万年后的人类会以什么形态存在。如果那时人类仍在,也许我们早已无法用今天的职业和设备描述自己。但至少此刻,AI 编程已经给出一个清晰的提示:写出代码的成本正在下降,理解系统、定义目标和检验结果的责任却没有消失。
过去学开发,常从语法和框架开始:JavaScript 怎么写,Java 的类如何设计,Go 的并发如何使用。如今 AI 能迅速生成组件、接口和测试,我们更需要先问:这段代码属于系统的哪一层?浏览器负责交互,Web 或 BFF 负责编排,Java、Go 等服务承载业务规则,PostgreSQL 保存交易和关系数据,运行环境决定它们如何交付和观察。先看清地图,工具才有位置。
同样是 JavaScript,运行在浏览器与 Node.js 中,能接触到的世界并不一样。浏览器有 DOM 和用户事件,服务端能处理文件、环境变量与后台任务。React 组织界面,Next.js 提供应用框架,Node.js 提供一种服务端运行时。AI 可以把它们写进同一个项目,却不会因为代码通过编译,就自动分清职责。遇到 window is not defined,关键不是让 AI 再试一个写法,而是先确定代码实际运行在哪里。
页面也有自己的时间线。CSR、SSR、RSC 解决的约束不同:交互、首屏内容、搜索可见性、客户端代码量,都需要取舍。服务器返回 HTML 后,用户可能已经看见按钮,却还不能点击;浏览器加载脚本并完成 Hydration,页面才获得相应的客户端行为。让 AI 设计页面,要说明服务端与客户端的分工;出了问题,再沿着 HTML、脚本加载、Hydration 和事件绑定逐层排查。
数据流也一样。fetch 与 Axios 都能发送 HTTP 请求,选择取决于项目怎样组织鉴权、超时、重试和错误处理。状态管理也不该从选 Redux、Zustand 或 React Query 开始,而要先问数据属于谁:弹窗开关属于局部界面,筛选条件可能属于 URL,远端数据来自 API,订单的最终事实在后端数据库。若把这些生命周期不同的数据全塞进一个 Store,AI 只会更快地扩大混乱。
一次 GET /api/user 背后,可能经过浏览器、网关、BFF、Java 或 Go 服务、缓存和 PostgreSQL。Java 适合承载复杂业务与长期维护的服务,Go 常用于并发请求与轻量服务;选型仍要看团队、约束和已有系统。PostgreSQL 不只是“存一下数据”:表结构、事务、索引与权限共同决定数据是否可靠。每一层都有契约和失败方式。浏览器不应直接持有数据库权限;请求失败时,要沿状态码、日志和调用链定位问题。
LAMP 的形态一直在变。Linux、Apache、MySQL、PHP 曾是一套典型的 Web 组合。企业应用里,Java 与 .NET 又成为重要支柱:应用服务器、分层架构和框架承载了更复杂的业务。今天,一种务实的组合是 Linux、前端 JavaScript、Node.js、Go、PostgreSQL 及扩展。技术名会变,运行环境、请求入口、业务规则和数据存储的职责仍需讲清。
技术也会退下舞台中央。JSP、Classic ASP、VB6、ASP.NET Web Forms 曾经承载大量应用;今天的新项目已有不同选择,但旧系统仍在运行。它们的主流位置变了,并非一夜消失。JSP 仍有规范,Visual Basic 仍受 .NET 支持,Web Forms 仍属于 .NET Framework 技术体系。AI 能协助迁移,却不能替我们判断兼容成本与数据风险。
即使代码写完,工程仍未结束。package.json 表达依赖意图,lockfile 固定解析结果,包管理器安装物料,构建与测试验证交付产物。AI 能迅速添加依赖,却不能替团队保证版本一致、来源可信、部署可复现。“我电脑能跑”距离“系统可靠运行”,还隔着一整条工程链路。
回看这十个基础问题,它们指向同一种能力:知道代码在哪里运行、何时执行、数据归谁、请求经过哪里、失败如何被观察、结果怎样被证明。今天的组合也不是固定配方:Node.js 可承担 Web 服务或构建任务,Go 可承载后端服务,PostgreSQL 可以通过扩展机制增加能力。与 AI 协作时,我们给出目标、边界、契约和验收标准,再让它加速实现;出了偏差,就带着证据修正。
从借助自然之力到借助机器,再到借助 AI,人类不断把力量交给工具。我们无法预言遥远未来的形态,却可以决定今天怎样使用这份力量:先理解边界与取舍,再让 AI 把想法带到现实。