+8613426109659
webmaster@21cto.com

编程世界已经发生了变化,程序员的学习成长也发生了变化

技术人生 0 16 1天前
图片

我还记得我决定成为一名程序员的那一刻:

那是在 1985 年,收音机里播放着杜兰乐队的《狂野男孩》,当时的我必须做出一个重要的选择:“选计算机还是摩托车?”

在 14 岁时,这是一个艰难的选择。一方面,你可以在脑海中意识到什么是喜欢数学的男孩的自然进化,那就是理解什么是计算机科学,并做像《战争游戏》这样的电影中描绘的任何一个孩子都能够做到的事情;另一方面,买一辆摩托车,在街上自由飞驰,可以去任何你想去的地方,向女孩们展示你不再是书呆子刻板印象中的自己。

这是一个艰难的选择,令人痛苦,我思考了好几个月,但就像我一生中所有最好的选择一样:本能地,以一种完全随机的方式。

于是,计算机获胜了。

经过几个月的等待,当我成功说服我的父母这是一个不容错过的选择时,我拉着我的父亲购买了它。

我父亲认识一个人,他开了一家“Olivetti 商店”,这在 80 年代意味着处于计算机世界的中心,而第一个提议就是“Olivetti Prodest”。

我当时还年轻,对编程一无所知,但我确定相信一件事:Prodest 是个错误的选择。大家都有 Commodore64,难道我也可以买一台 Prodest 吗?

图片

Commodore64计算机(图片来源:WikiMedia)


我花了好几天时间说服父亲,Prodest 不会有未来。“Commodore 才有未来,它才是未来的计算机。”

现在回想起来,我明白这种说法是多么没有根据,除了那个时期的打击广告外,我没有任何数据支持。

我不记得购买的那一天,我只记得安装时的喜悦:它涉及连接电源和显示器,实际上是一台黑白电视。

第一天我非常沮丧:他们送给我一个游戏作为礼物,而我却花了一整个晚上玩它。

我以为我会睡个好觉,但那天晚上我却无法合眼,喜悦、兴奋和失望交织在一起。在那个年纪,疑惑总是多于确定:我为什么要浪费整个晚上去玩游戏,而不是去当“程序员”?毕竟,我甚至不知道这意味着什么,但我确信这不是玩,而是别的什么。

接下来的几天,我把那本手册反复看了好几遍:一本A5大小的活页夹,封面是条纹的,上面印着Commodore的标志。我好像还记得纸张上的油墨味道,但也许这只是我的错觉。

从那时起,就开始了多年的错误、尝试、预期的成功和失败。

从一种语言到另一种语言,从一种计算机到另一种计算机,从一个操作系统到一个操作系统,从一个库到一个库,从一个框架到一个框架。

这是一段持续数十年的旅程,每天我都会学到新的东西,每天我都明白学习永无止境。

但那都是过去时了,是永远不会再回来的浪漫过去:现在编程已经开始不一样了。

今天成为一名程序员


如今,成为一名程序员已经完全失去了 80 年代和 90 年代的魅力。

学习编程语言曾经意味着拥有一份工作,而今天它有时意味着拥有一个可以帮助你解决部分问题的工具。

编程语言不再是目的地,而仅仅代表着一条没有尽头的道路的第一步。

这一方面使许多年轻人对从事编程职业感到沮丧,也让他们面临一系列过去不存在的挑战,让他们越来越常常感到能力不足,害怕无法胜任任务。

选择悖论与表现焦虑


如今,有抱负的程序员不再需要在计算机和摩托车之间做出选择,而是要在数十种语言、数百种框架和无数的职业道路之间做出选择:前端、后端、移动、数据科学、人工智能、DevOps,而且市场每天都会发明一个让每个人都感到措手不及的新缩写词:DevSecOps、FinOps 等等。

就像巴里·施瓦茨(Barry Schwartz)在他的著作《选择的悖论》(2004)中所指出的,过多的选择反而会导致决策瘫痪与不满。在编程世界中,这种现象尤为明显:根据 Stack Overflow 开发者调查,目前活跃使用的编程语言超过 80 种,而且新的框架还在不断地涌现。

这种丰富不再是一种富裕,它并不意味着我们可以做任何事情,而是一种让程序员感到越来越没有准备的方式:无论他们选择哪条道路,最终陷入一个价值不大的利基市场的风险越来越大。

这就是为什么程序员应该逐渐脱离技术部分,专注于解决问题的态度,这是一种具有一定程度交叉学习的实践,应该有助于解决选择最佳语言的悖论。

对于 80 年代额头上长着一撮浓密胡须的人来说,最常问的问题是“我怎样才能让这个精灵动起来?”,然后变成“哪种技术可以保证我在未来 5 年内保有一份工作?”,现在开始转变为“我怎样才能在不断发展的世界中保持领先地位?”

如果这还不够,想想互联网社区带来的压力。如果说 80 年代的比较仅限于几个朋友或杂志,那么如今 GitHub、LinkedIn 或 Twitter 等平台不断曝光成千上万其他开发者的作品,助长了人们的“冒名顶替综合症”。

以下是该症状的一些解释(来自于DeepSeek):

图片
图源:chat.baidu.com

大多数的 IT 专业人士在其职业生涯中至少经历过一次冒名顶替综合症,而程序员受到这种现象影响尤其严重,因为我们的工作具有协作性和公开性。

你总是感觉自己落后了一步,没有时间去阅读和思考去尝试。比如在此时,在北京郊区的地下室里,一个开发团队创建了一个有望彻底改变开发世界的工具,而你,一个仍然被同事欺负的可怜程序员,感觉自己越来越落后了。

人工智能的影响


实际上说的这些还不够,现在GitHub Copilot、ChatGPT、Gemini 或Claude等基于人工智能的工具的出现正在改写规则。

如果说它们一方面可以加速开发并帮助克服障碍,另一方面也面临着培养一代只懂“问”却不懂得“做”的程序员的风险。这种风险在于失去对原理机制的深刻理解,将批判性思维交给机器。

而你学习的是使用工具,而不是从头开始解决问题。

正如《人工智能现状》报告中所强调的那样,几乎所有开发人员都在使用基于人工智能的编码工具,但只有一小部分人声称完全了解这些工具如何生成他们的解决方案。

如果我们查看 OpenRouter 一段时间内关于 AI 使用情况的统计数据,我们会注意到这些工具的采用率急剧上升,查询和交互的数量也呈指数级增长。

事实上,人工智能已经成为我们日常工作伙伴,是任何程序员生活中必不可少的工具。

但随着时间的推移和他们的发展,越来越明显的是,程序员注定会迷失在他们必须检查的代码海洋中,无法控制地增加我们天生的不足感。

比尔·盖茨表示说:

Programming will remain a 100% human profession, even a century from now code languageJavaScript(编程仍将是一项100%完全人类的职业,即使一个世纪以后,例如现在的代码语言:JavaScript。

这句话显明程序员们仍然充满希望。

需要怎样才能不迷失?


然而,尽管如此,编程的核心并没有改变。它不是语言,不是框架,也不是人工智能。

你的内心依然充满好奇,渴望理解,渴望不断发明新事物,但又不局限于无限地重复我们已经学到的东西。

以去中心化消息应用程序 BitChat 为例——它的创建需要对网络协议和密码学的深刻理解。探索新技术的好奇心和迎接新挑战的决心促成了它的实现:但它的核心是如何编写的呢?通过人工智能,在一个周末的振动编码中,但如果没有人类的思维支持,那么(到目前为止)没有任何人工智能能够想出它。

图片

去中心化消息应用BitChat

(图片来源:https://github.com/permissionlesstech/bitchat

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

另一个方面是面对无法找到的 bug 时的韧性。程序员会先用蛮力攻击,然后反思、研究,再从新的角度重新解决问题,直到找到可接受的解决方案。目前,AI 拥有的只是巨大的蛮力,它们会竭尽全力,但对于压缩问题或需要整体产品愿景的问题来说,但这并不是最佳方法。

对于当今的程序员来说,真正的挑战并非学习最新的技术,而是学会如何应对各种噪音。请你学会选择一条道路,并全心全意地走下去,而不被“不惜一切代价追求新事物”的狂热所分心。

新工具是一种帮助,但不是逃避思考的捷径,但必须吸收才能最大限度地利用。

要想成为当今的程序员,你必须首先学会像 1985 年的那个孩子一样:专注于一个目标,好奇地探索“盒子”里面的东西,并准备阅读手册,即使今天这本手册和整个网络一样大。

来回想一下比尔·盖茨曾经说的,我们希望他的这句话不再是个理由:

640K ought to be enough for anybody!

原作:Matteo Baccan 

编译:洛逸

来源:

https://www.codemotion.com/magazine/it-careers/the-world-of-programming-has-changed-and-with-it-the-way-to-become-a-programmer

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。