程序,先写在纸上
一个程序的大部分工作,其实是在纸上完成的。大学里老师就这样讲,可学生只想尽快写代码。等到参加工作,那张纸还是没有出现。如今,连 AI 也在重复同样的话:70%的工作在纸上。区别只在于,今后匆忙拼出的代码,将由它来写,而不是我们。
大学老师反复强调的事
到了大学高年级,学生与本专业老师的交流越来越多。数学分析、物理、化学渐渐退到身后——这些课在低年级时,总让人觉得多余。(其实它们很有用,不过那是另一个话题。)前面终于是软件开发,也正是大家当初选择这个专业的原因。偏偏这时,老师开始讲一些出乎意料的话。
学生却急着看到成果。想做出一个完整、能运行的东西,装到身边的电脑上。说不定,还能以几万卢布的价格卖给一家小公司:对方不太懂电脑,更不知道程序究竟是怎么来的。
老师却一遍遍地说:先画出来。做分析,画图,识别实体以及实体之间的关系。想清楚数据怎么存、怎么分布、哪些对象引用哪些对象。
学生觉得这些问题很奇怪。怎么存?放进数据库,不就行了?
都是工具的问题?
后来,做出的程序既不好看,运行起来也时好时坏。明明好像都做对了,那问题一定出在开发环境上。工具还不够完善,需要新的工具,能自动把一切画成“正确的样子”——也就是我们脑海里的样子。
但开发者理解问题的方式,并不是大学里教过的那套,而只是自己眼下能够做到的程度。逻辑很简单:给我一个工具,我就能改变世界。至于基础,没有人去想。基础还留在当年老师反复讲的那些话里。
AI 来了,却又重复了同一个故事
接着,响亮的新理念、新语言,以及一点就通的 AI 智能体出现了。故事再次重演。你自己没能画清楚、分析透、拆解好的东西,智能体照样把它写出来,只是更快。
如果脑中没有数据模型,智能体不会凭空替你把它想明白。它会迅速而自信地,为输入的那团模糊写出代码。
独立研究机构 METR 做过一个很有代表性的实验。经验丰富的开发者在自己熟悉的项目中处理真实任务:一部分任务使用 AI 工具,另一部分不使用。使用 AI 时,他们实际多花了19%的时间,却以为自己快了20%(METR,2025)。后来,研究者也说明,工具此后变得更强,这些数字已经过时(METR,2026)。但感受与现实之间的差距本身,就很值得思考:敲代码的速度,并不等于做出软件的速度。
纸上功夫,不是文牍主义
俄罗斯关于自动化系统建设的标准,把工作划分为八个阶段、近三十个步骤。调研、需求、概念方案、技术任务书、初步设计和技术设计。真正的程序开发,只是“工作文档”阶段中的一个步骤(GOST R 59793-2021,俄罗斯联邦技术调节与计量署)。制定这份标准的人,很清楚“直接开始写代码”的项目最后会怎样。
这里的纸,不是为了交差而堆起来的文件,而是思考发生的地方。实体、关系、数据流、责任边界——这些东西,用橡皮修改很容易,等系统运行起来再改,代价就高了。
最后还剩多少工作是写代码?
于是,问题又回来了:整个软件开发过程,究竟有多少是在纸上完成的?
过去常说,七三开。今天,代码交给智能体来写,纸上的工作也许会占到98%,甚至99%。
留给开发者的,是最重要的事——思考。正是当年大学老师反复强调的那件事。