(这篇文章经过了我与 Gemini 3 的讨论之后对观点有所补充。现在的文本不再是我的原文,而是 Gemini 3 将我的新观点加入原文后的新版本)
省流:
“你总要知道自己要做些什么吧?”
程序员到底在做什么?
有时候我甚至觉得,这个行业里只有两种工作:一种是不怎么考验智力的“搬砖”,另一种是极其考验智力但往往被视为“无意义”的“造轮子”。
大部分人都在做前者。每天处理具体的业务逻辑,写写 CRUD,修修边角料。这种工作与其说是在搞“技术”,不如说是在做“翻译”——把产品经理的人话,翻译成机器能跑的代码。
于是有人不甘心,想去做后者。去研究底层,去造轮子,去搞基础架构。但这又陷入了另一个怪圈:所谓的“硬核技术”,如果没有人用,那就是孤芳自赏的抽象废话。基础研究如同攀登珠峰,那是极少数天才的游戏;而对于大多数想靠代码吃饭的人来说,如果不通过“应用”落地,技术本身甚至无法产生供你生存的价值。
这就触及到了计算机科学(CS)一个让人尴尬的本质:CS 本身是空心的。
想想看,程序员这一职业,最核心的“独占技能”是什么?是写程序。
但这就像“会写字”一样。你会写字,不代表你是作家;你会写字,甚至不代表你能写好一份通知。
如果你只会编程语言的语法,只会调库,那你充其量是一个精通语法的“语言学家”。
但是,语言是为了表达而存在的。如果你脑子里没有“内容”,光有语言有什么用?
很多程序员的迷茫正源于此:我们花了大量精力去学习“怎么说话”(学各种语言、框架、模式),却很少去想“我们要说什么”。
所以你会发现,真正牛逼的成果,往往是“计算机 + X”。
前端开发,本质是“程序员 + 设计师/心理学”;
科学计算,本质是“程序员 + 数学/物理”;
推荐算法,本质是“程序员 + 统计学/商业逻辑”;
哪怕是做编译器、做云平台的那些大牛,他们的“X”是“系统工程”——他们的目标非常明确:我要让这一千万行代码跑得更快,让那一万台机器不至于因为一根网线断了就全盘崩溃。
王垠以前说过,CS 的本质是 PLT(编程语言理论)。这话乍一听像自吹自擂,但细想有几分道理。剥离掉所有应用层的东西,CS 剩下的确实就只有关于“计算”本身的抽象逻辑。但这玩意儿太冷清了,就像纯数学一样,容不下这个世界上几千万的从业者。
所以,别再被“计算机专业”这个名字骗了。
我们可能真的不该把“计算机”视为一个独立的、封闭的堡垒。计算机不是目的,它是手段。它是赋能万物的工具,是新时代的“笔和纸”。
这就能解释为什么很多科班出身的人最终活成了“码农”。因为他们真的只会计算机,只会摆弄这支笔,却不知道该用它画什么画,写什么书。
这行没什么前途吗?
如果你把自己定义为“写代码的人”,那确实没前途,因为 AI 写得比你快。
但如果你把自己定义为“用计算机解决问题的人”,那前途才刚刚开始。
我们要避免的窘境,是手里拿着锤子,却看不见钉子,最后只能在那研究锤子的金属成分。
真正的程序员,心里装的不该只是代码,而应该是一个他想要构建的、运行在现实世界里的系统。
不管这个系统是用来算核聚变的,还是用来送外卖的。 知道自己要“构建什么”,远比知道“怎么写代码”重要。