编程世界的变革:从Commodore64到AI时代的开发者困境

本文回顾了从1980年代至今编程世界的演变,探讨了现代开发者面临的技术选择悖论、AI工具冲击以及职业挑战。文章对比了不同时代的编程学习方式,分析了当前开发者需要具备的问题解决能力和持续学习态度,并讨论了AI编程工具对开发者的深远影响。

编程世界的变革:从Commodore64到AI时代的开发者困境

我依然记得决定成为程序员的那一刻:1985年,收音机里播放着Duran Duran的《The Wild Boys》,我面临着一个重要选择:“电脑还是摩托车?”

在14岁的年纪,这是个艰难的选择:一方面可以实现一个喜欢数学的男孩的自然进化,理解计算机科学是什么,做《战争游戏》等电影中描绘的任何孩子都能做到的事情;另一方面,买一辆摩托车,在街道上自由驰骋,去想去的地方,向女孩们展示自己不再是书呆子 stereotype。

艰难的选择与编程启蒙

这是个痛苦的选择,思考了数月,但像我生命中所有最佳选择一样:本能地,完全随机地。电脑赢了。

经过数月的等待,当我也说服父母这是个不可错过的选择后,我拉着父亲去购买。父亲认识一个拥有“Olivetti商店”的人,在80年代这意味着处于计算机世界的中心。第一个提议是“Olivetti Prodest”。

我年轻,对编程意味着什么完全一无所知,但我确定一件事:Prodest是错误的选择。每个人都拥有Commodore64,我怎么可能应该拥有Prodest?

这里也需要各种日子来说服每个人Prodest没有未来。“而Commodore有,它是未来的电脑”。事后我明白这个说法多么没有根据,我没有任何支持数据,除了那个时期铺天盖地的广告。

从错误中学习的编程之旅

我不记得购买的日子,只记得设置时的喜悦:包括连接电源和显示器,实际上是一台老旧的黑白电视。

第一天我很沮丧:他们送了我一个游戏作为礼物,我整晚都在玩。我以为我会睡得很好,但那晚我无法闭眼,混合着喜悦、兴奋和失望。在那个年龄,你总是有比确定性更多的疑问:为什么我浪费了整个晚上玩游戏,当我想成为“程序员”时?毕竟,我甚至不知道这意味着什么,但我确定不是关于玩游戏,而是关于不同的东西。

在接下来的几天里,我多次阅读手册:一个A5格式的活页夹,带有条纹封面和Commodore标志。我想我仍然记得纸张的气味,但也许只是记忆的幻觉。

从那里开始了多年的错误、尝试、假定的成功和失败。从语言到语言,从电脑到电脑,从操作系统到操作系统,从库到库,从框架到框架。一个持续数十年的旅程,每天我学到新东西,每天我明白你永远不会停止学习。

但那是过去,一个永远不会回归的浪漫过去:现在编程是不同的东西。

当今成为程序员的挑战

今天成为程序员已经完全失去了80年代和90年代的魅力。曾经学习编程语言意味着有工作,今天它只意味着拥有一个帮助你解决部分问题的工具。

编程语言不再是目的地,而只代表一个没有尽头的路径的第一步。这个方面阻止许多年轻人追求编程生涯,也使它们面临一系列过去不存在的挑战,将它们置于一个越来越感到不足的世界,一个害怕无法胜任的世界。

选择悖论与性能焦虑

今天,一个有抱负的程序员不再需要在电脑和摩托车之间选择,而是在几十种语言、数百个框架和无数职业道路之间选择:前端、后端、移动、数据科学、AI、DevOps,每天市场发明一个新的缩写,每个人都感到准备不足:DevSecOps、FinOps等等。

正如Barry Schwartz在他的书《选择悖论》(2004)中观察到的,过多的选择可能 paradoxically 导致决策瘫痪和不满。在编程世界,这种现象特别明显:根据Stack Overflow开发者调查,有超过80种活跃使用的编程语言,新框架不断涌现。

这种丰富不再是财富,不意味着我们可以做任何事,而是一种让程序员越来越感到准备不足的方式:无论他们选择什么路径,最终陷入价值不大的 niche 的风险越来越可能。

这就是为什么越来越需要脱离技术部分,专注于问题解决的态度,这是一种具有跨学习程度的实践,应该帮助解决选择最佳语言的悖论。

对于那些在80年代额头有浓密刘海的人,最常问的问题是“我如何让这个精灵移动?”,然后变成“哪种技术能保证我未来5年的工作?”现在开始转变为“在一个不断发展的世界中,我如何保持最新?”

如果这还不够,想想在线社区创造的压力。如果在80年代比较仅限于几个朋友或杂志,今天像GitHub、LinkedIn或Twitter这样的平台不断暴露数千其他开发者的工作,助长冒名顶替综合征。

大多数IT专业人士在职业生涯中至少经历一次冒名顶替综合征,由于工作的协作和公共性质,程序员特别容易受到这种现象的影响。

人工智能的影响

好像这还不够,基于AI的工具如GitHub Copilot、ChatGPT、Gemini或Claude正在重写规则。一方面它们可以加速开发并帮助克服障碍,另一方面它们风险创造一代知道“问”但不知道“做”的程序员。风险是失去对机制的深入理解,将批判性思维委托给机器。你学会使用工具,而不是从零开始解决问题。

正如“AI状态”报告强调的,几乎美国的所有开发者都使用基于AI的编码工具,但只有子集声称完全理解这些工具如何生成解决方案。

如果我们查看OpenRouter关于AI使用随时间变化的统计数据,我们不禁注意到这些工具采用的 dramatic 增加,查询和交互呈指数增长。

事实上,AI已成为我们日常的工作伙伴,任何程序员生活中必不可少的工具。但随着时间的推移和它们的进化,越来越明显的是,程序员注定会迷失在他们必须检查的代码海洋中,不可控制地增加我们天生具有的不足感。

尽管如此,比尔·盖茨声明:

编程将保持100%的人类职业,即使一个世纪后也是如此

一个迹象表明我们可能可以安心睡觉。

不迷失需要什么?

然而,尽管一切,编程的核心没有改变。不是语言,不是框架,不是AI。

核心仍然是好奇心,理解的欲望,总是发明新东西,不限制自己无限重复所学。

以BitChat为例,一个去中心化消息应用程序。它的创建需要深入理解网络协议和密码学。探索新技术的好奇心和面对新挑战的决心导致了它的实现:但它的核心是如何编写的?通过AI,在一个周末的 vibe coding 中,但没有项目背后的人脑,没有AI(截至目前)能够想到它。

能够将问题分解成微小部分的逻辑仍然是AI必须学习的艺术,是多年进化的结果,我们日复一日地试图模仿。

另一个方面是面对找不到的错误时的坚韧。程序员用蛮力攻击,然后反思、研究并从新点重新接近问题,直到找到可接受的解决方案。目前AI只有巨大的蛮力,它们试图用尽,但也许不是压缩问题或需要整体产品愿景的最佳方法。

也许,今天程序员的真正挑战不是学习最新技术,而是学习管理噪音。学习选择一条路径并专注跟随,不被“不惜一切代价新”的狂热分散注意力。

新工具是帮助,不是避免思考的捷径,但它们必须被吸收才能最大程度利用。

要成为今天的程序员,你必须首先学会像1985年的那个孩子:专注于一个目标,好奇发现“盒子”里面有什么,准备阅读手册,即使今天那个手册像整个网络一样大。

回想比尔·盖茨,让我们希望他的话不会变成像短语一样的meme:

640K对任何人都应该足够了!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计