标签 Go语言 下的文章

从“键盘牛仔”到“规范工程师”,AI 浪潮下的程序员身份危机

本文永久链接 – https://tonybai.com/2025/10/12/the-programmer-identity-crisis

大家好,我是Tony Bai。

“我是一个程序员。一个编码者。一个键盘牛仔……这是我的乐趣,也是我的身份认同。”

近日,一篇题为《程序员的身份危机》的博文在技术社区中引发了广泛的共鸣与讨论。作者Simon Højberg以一个“手艺人”的深情独白开篇,将我们带回了编程的黄金时代——那个在 MIT 26 号楼里,伴随着早期晶体管蜂鸣声,黑客们为了追求“The Right Thing”(那个完美的、简洁优雅的程序)而沉浸于机器语言的“黑暗艺术”的年代。

然而,作者笔锋一转,指出现代 AI 浪潮正以前所未有的力量,威胁着这份传承了近 70 年的技艺(Craft)和身份认同。曾经那个充满奇迹、成就感和优雅解谜的编程未来,如今正被一层“不祥的黑暗、骗局和不确定性”所笼罩。这是一篇警示性的檄文,它迫使我们每一个技术从业者去思考一个根本性问题:当 AI 接管了“思考”,我们还剩下什么?

“规范工程师”的崛起与“技艺”的消逝

文章尖锐地指出,如果我们相信 AI 行业的亿万富翁、Hacker News 的舆论领袖和 LinkedIn 上的 LLM 狂人,那么软件开发的未来将与“编程”本身几乎毫无关系。一种被称为 “Vibe Coding(氛围编程)” 的新模式正在成为主流。

在这个新世界里,我们的角色被重新定义为 “规范工程师 (Specification Engineering)”

  • 输入从代码到 Markdown: 我们不再是深入代码库、解决复杂谜题、发掘技术秘密的工匠,而是变成了在 Markdown 中编写规范的“需求者”。
  • 思考过程外包 创造性的解谜过程被全权交给了机器,我们只需在多个 AI Agent 的标签页之间进行上下文切换,拥抱一种“分散的认知”。我们从创作者,沦为了“与其技艺相分离的操作员”。

作者悲观地认为,这种转变是对程序员独特抽象思维能力的贬低,将我们推向了一个本已由产品经理和设计师占据的领域。更令人不安的是,一些开发者似乎欣然接受了这个新身份,乐于扮演“指挥管弦乐队”的史蒂夫·乔布斯,却忘记了编程的乐趣源于成为那个亲手打造乐器的沃兹尼亚克。

当工具选择权被剥夺:来自管理的“新叙事”

这场身份危机不仅是技术演进的自然结果,更在企业内部被一股力量所推动。

文章观察到,在“疯狂追求生产力”的竞赛中,企业的管理者们正以一种前所未有的方式,强制要求开发者使用特定的 LLM 工具——“要么遵从,要么出局”。这在历史上是罕见的。我们的工具,无论是 Vim、Emacs 还是 VS Code,都如同厨师的刀、木匠的刨,是我们精心配置、用以匹配自己思维模式的“圣殿”。而如今,这种个性化的选择权正在被自上而下地剥夺。

作者认为,这种管理层叙事的转变,为他们提供了一种“打破过去几十年来程序员在公司中备受优待的平衡”的新方式。

对“自然语言编程”的古老警告

一些人将 LLM 的兴起,类比于从汇编到 Fortran 的语言革命。作者强烈反对这种类比,他认为两者有本质区别:

  1. Fortran 根植于编程: 它没有消除编程的形式化,而是扩展了其表达力和精度。
  2. Fortran 是可预测的: 给定输入,它总能产生正确的结果。

而 LLM 及其所依赖的自然语言指令,其本质是不精确的。这与程序员所珍视的一切背道而驰:可预测性、组合性、幂等性,以及那些不会“摇摆不定”的集成测试。 LLM 生成的代码代表了这一切的反面:不一致的混乱。

文章引用了计算机科学先驱迪杰斯特拉 (Dijkstra) 对“自然语言编程的愚蠢”的深刻批判:

“形式化文本的美德在于,它们的操纵只需要满足少数简单的规则即可……当你思考它时,你会发现,当我们使用母语时,我们几乎不可能避免各种各样的无稽之谈,而形式化文本是一个惊人有效的工具,可以排除所有这些胡说八道。”

我们对计算机精度的依赖和信任,或许正是我们如此轻易相信聊天机器人“言之凿凿”的原因,即使它们正在“煤气灯”般地误导我们。

注:“煤气灯效应”(Gaslighting)是一种心理操控手段,施加者通过不断地否认事实、扭曲真相,使受害者质疑自己的记忆、感受和理智。

认知外包的代价:丧失“理论构建”的能力

作者坦言,他发现自己在审查 LLM 生成的代码时,远不如审查自己或同事编写的代码时那么仔细。LLM 生成的代码似乎有一种天生的魔力,让人的“眼睛变得呆滞”。我们草草浏览,盲目接受,只要 CI 通过、程序能够编译,便万事大吉。直到几个小时后,才发现自己工作的基石早已腐烂。

这种“认知外包”的代价是巨大的。它剥夺了我们与代码库深度连接的机会,剥夺了我们形成对领域、问题和解决方案深刻理解的过程。

文章引用了 Peter Naur 的经典著作《编程即理论构建 (Programming as Theory Building)》。Naur 认为,编程的主要产出不是软件本身,而是程序员脑中构建起的关于代码库的“理论”——关于它如何运作、其形式化表达以及与现实世界的映射。只有具备了这个完善的“理论”,我们才能有效地对其进行扩展和修复。

而“Vibe-Coding”那种对 AI 生成代码的“矛盾一瞥”,使得构建这种理论变得极其困难,甚至不可能。优秀的设计源于沉浸,源于在文本缓冲区中反复推敲,甚至源于离开键盘的深度思考。AI 带来的“无摩擦”工作流,恰恰让我们避开了那些本可以通过迭代和探索“丑陋方案”才能最终发现优雅设计的道路。

小结:我愿为一名手艺人,而非操作员

文章最后,作者发出了充满个人情感的呐喊。他承认,让 AI 处理重复性的样板代码、或在文档海洋中寻找答案,并非坏事。但他“极度不愿”仅仅成为一个操作员或代码审查者,将有趣和创造性的工作拱手让人。

“我想要驾驶,想要沉浸于技艺,想要在管弦乐队中演奏,想要解决复杂的谜题。我愿为一名程序员,一名手艺人。”

作者认为,即使 LLM 达到了宣传中的高度,我们仍将失去我们之所以成为我们的根本:我们的技艺、我们的乐趣、我们与同事的连接,以及我们对所创造软件的自主理解。

这篇文章并非全然否定 AI,而是在 AI 狂热的叙事中,为“编程”这门古老而精妙的技艺发出了一声响亮且充满尊严的捍卫。它提醒我们,工具的进步不应以抹杀思考为代价,就像技术的进步不应以剥夺人们的工作和生存权利为代价一样。作为工程师,最终提供的价值在于我们的批判性思维、解决问题的乐趣以及我们亲手打磨的技艺。这些,或许才是 AI 时代下我们真正的“护城河”。

资料链接:https://hojberg.xyz/the-programmer-identity-crisis/


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


想系统学习Go,构建扎实的知识体系?

我的新书《Go语言第一课》是你的首选。源自2.4万人好评的极客时间专栏,内容全面升级,同步至Go 1.24。首发期有专属五折优惠,不到40元即可入手,扫码即可拥有这本300页的Go语言入门宝典,即刻开启你的Go语言高效学习之旅!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

只会 net/http 还不够,Go 网络编程的“深水区”你敢闯吗?

本文永久链接 – https://tonybai.com/2025/10/08/go-network-programming-complete-guide

大家好,我是Tony Bai。

作为一个后端工程师,你一定对这个场景不陌生:

深夜,告警响起。你负责的一个核心服务,对下游的调用延迟飙升,错误率激增。你第一时间检查了日志、指标,代码逻辑似乎无懈可击。于是,一个熟悉的声音在团队频道里响起:“是不是网络又抖动了?@运维 同学帮忙看一下!”

网络,这个我们每天都在依赖,却又常常感到陌生的“透明层”,似乎成了我们排查问题时的“终极甩锅对象”。它像一个巨大的黑盒,我们知道数据进去了,也知道数据出来了,但中间发生了什么?为什么会慢?为什么会断?我们往往一知半解。

尤其是对于我们 Gopher 来说,这种感觉可能更加强烈。

Go 语言为我们创造了一个“网络编程很简单”的美好幻觉。

我们不得不赞叹,Go 的 net 包设计得实在太过优雅。一行 net.Listen 就能启动一个服务器,一行 net.Dial 就能连接到远端,go handle(conn) 更是将困扰了 C/C++ 程序员几十年的并发模型化于无形。再加上 net/http 这个“开箱即用”的神器,我们似乎只用关心业务逻辑,网络?交给 Go 就好了。

但这种美好的幻觉,也正是最危险的陷阱。

当你的服务出现以下问题时,你是否曾感到束手可策?

  • 连接超时,到底是 DNS 解析慢,还是 TCP 握手慢,或是 TLS 握手慢?
  • 面对海量短连接,为什么系统会出现大量的 TIME_WAIT 状态,它会耗尽端口吗?
  • 线上出现大量 CLOSE_WAIT 状态,是谁的代码忘记了 Close() 连接?
  • 为什么我的 TCP 通信会“粘包”?应用层协议该如何设计?
  • HTTP/1.1、HTTP/2、HTTP/3 之间,除了名字,核心区别是什么?我的 gRPC 服务为什么比 REST 快?

如果这些问题让你感到一丝迟疑,那么说明,你和我一样,都曾站在 Go 网络编程的“浅水区”边缘,对那片更广阔、更深邃的“深水区”充满了好奇与敬畏。

在云原生和微服务成为技术主旋律的今天,深入理解网络,已经不再是网络工程师的专利,而是每一个后端工程师,尤其是 Gopher 的核心竞争力。 它决定了你是在应用层“搭积木”,还是能深入底层“造轮子”;决定了你是在故障面前束手无策,还是能像庖丁解牛般精准定位问题。

是时候,打破那层“幻觉”了。

因此,我花了数月时间,梳理了经典的网络编程理论,并结合 Go 语言的现代工程实践,精心打磨出了这个专栏——Go 网络编程全解:从 Socket 到 HTTP/3

这不(只)是一个教你如何使用 net 包的教程。我更希望把它打造成一张详尽的网络编程知识地图。我们将以经典理论为经,以 Go 语言实践为纬,从最底层的 Socket 出发,一步步带你穿越协议的迷雾,最终抵达现代应用协议的最前沿。

在这张全新的地图上,我为你规划了三个核心的探索区域,内容相比最初的构思更加深入和全面:

第一部分:坚实的“地基”——Socket 编程核心

在这里,我们将回归本源,用 Go 的方式重走一遍经典的网络编程之路。你将掌握:

  • TCP/UDP 编程的本质区别与 Go 的优雅抽象。
  • 如何设计应用层协议来解决 TCP “粘包” 的核心难题。
  • 我们将用 tcpdump 和 netstat 可视化 TCP 连接的完整生命周期,从三次握手到四次挥手,并深入剖析 TIME_WAIT 和 CLOSE_WAIT 这两大线上问题的“罪魁祸首”
  • Go 并发服务器模型的革命性优势,以及如何实现优雅关闭
  • I/O 多路复用的原理,以及 Go netpoller 的底层魔法。

第二部分:深入底层的“探险”——高级网络专题

打好基础后,我们将深入更广阔的世界,用 Go 去探索那些“看不见”的网络细节。你将学会:

  • DNS 解析的完整流程,以及 Go 如何实现 IPv4/IPv6 的无缝切换。
  • 如何微调 Socket 选项,为你的应用“拧上”性能的阀门。
  • 广播与多播的原理与实现,构建一对多的通信模式。
  • Raw Sockets 的威力,我们将一起用 Go 从零打造一个自己的 ping 程序
  • Unix 域套接字,掌握本地进程间通信的“高速公路”,并了解如何用 Go 获取网络设备信息

第三部分:驰骋现代应用的“高速公路”——现代应用层协议

有了底层的坚实支撑,我们将把目光投向当今互联网的脉搏。你将精通:

  • HTTP/1.1 与 HTTP/2 的演进,以及如何构建工业级的 Go Web 服务。
  • gRPC 的实战,掌握微服务时代的 RPC 利器。
  • QUIC 与 HTTP/3 的核心优势,并亲手用 Go 搭建起下一代的网络服务。

学完这个专栏,我希望带给你的,不仅仅是一堆 API 的用法,更是一种从底层原理出发,系统性思考和解决网络问题的能力

网络编程的“深水区”,风光无限,但也暗流涌动。一个人探索,或许会迷航,或许会放弃。现在,我希望能成为你的“领航员”,与你一同在这片广阔的水域中乘风破浪。

如果你也对代码之下的网络世界充满好奇,渴望为自己的技术武器库增添这柄“屠龙之技”,那么,就让我们一起出发吧。

这一次,让我们彻底征服 Go 网络编程。

点击这里/扫描下方二维码,立即订阅《Go 网络编程全解:从 Socket 到 HTTP/3》,开启你的深度探索之旅!


你的Go技能,是否也卡在了“熟练”到“精通”的瓶颈期?

  • 想写出更地道、更健壮的Go代码,却总在细节上踩坑?
  • 渴望提升软件设计能力,驾驭复杂Go项目却缺乏章法?
  • 想打造生产级的Go服务,却在工程化实践中屡屡受挫?

继《Go语言第一课》后,我的《Go语言进阶课》终于在极客时间与大家见面了!

我的全新极客时间专栏 《Tony Bai·Go语言进阶课》就是为这样的你量身打造!30+讲硬核内容,带你夯实语法认知,提升设计思维,锻造工程实践能力,更有实战项目串讲。

目标只有一个:助你完成从“Go熟练工”到“Go专家”的蜕变! 现在就加入,让你的Go技能再上一个新台阶!


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 从 0 开始构建 Agent Harness Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com
这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats