6 Y. n& y8 L! D1 [* v8 P引子 $ h; ]: `) d a程序员最惨的不是写不完的需求,而是写完了还要继续写。这话说出来你可能不信,但我已经亲身经历过了。现在我就给你讲讲这个奇怪的故事。 ! i* p- j( J$ B1 W, G5 R1 y, u' |2 k7 |$ {3 K
我一直觉得互联网公司加班猝死的传言是都市传说,直到我在浦江边的程序员驿站遇到了两个死去的同行。那天我正在排查一个诡异的内存泄漏,突然听见外面有人在吵架。 , g/ p9 P8 ^6 O9 U, M- S$ k* |% V : j3 A5 u+ `" G9 `$ Q"你踩到我的云服务器了!" "明明是你的容器漂移到我的命名空间了!" # X' c. R/ F, }8 Y8 O# G" M( ^6 V" D! J ^3 j
我走出去一看,看见两个半透明的身影在月光下互相指责。他们穿着印着"996"的文化衫,脸色惨白得像是被Jenkins构建失败了一万次。说实话,我一开始以为这是疲劳产生的幻觉,毕竟连续DEBUG三十二个小时之后,出现幻觉是很正常的。 : R( }$ \5 A" K _* U, N/ i4 g ?. }4 D
但紧接着出现的一个和尚让我确信这不是幻觉。这和尚看起来像是个系统架构师,他背着个写着"Git"的布袋,袋子上印着一行小字:"众生皆苦,代码即空"。- K4 n6 d! k6 h
6 x* K6 C2 A/ }3 D Y! E) X和尚说:"二位施主,何必争执?你们生前把自己当成永动机,现在魂都上天了还在为工位争执?依贫僧看,你们不是被困在轮回里,是被困在死循环里。" ! C M K0 `; Z8 H 9 X# L e% X5 ]% U, p- p# v2 U# u & y# k& H! {2 j k' n2 _两个鬼魂面面相觑。其中一个说:"可是我们的KPI还没完成......"7 W O& r5 D3 d: h! s3 U
4 M& k' a2 @3 u7 a7 d( k) A
和尚笑了:"你以为死了就能摆脱KPI吗?我告诉你们,这种执念会让你们变成'产品经理'转世。到时候你们就知道什么叫真正的痛苦了。" 0 ]- G! X' H/ `8 N3 @2 f7 \8 h* y ' u# r" p N: f5 l5 |# l8 O8 _. A两个鬼魂听了都哆嗦了一下。要知道,在程序员的轮回里,变成产品经理可能是最可怕的惩罚。他们吓得赶紧消失了,大概是去找前端工程师了——幽灵都知道,只有前端工程师才能帮他们美化一下鬼魂的样子。 7 D* L: [7 D& o) s # n3 _2 B- g4 \5 o) |第二天我去公司,发现会议室里真的坐着两个新来的产品经理。他们正在激情四射地规划新功能,那种兴奋的表情,让我想起昨晚两个鬼魂惊慌失措的样子。 3 L* D7 ?7 e, h3 g. J* }) m }! N5 i G1 X3 r6 Q5 r3 C
带着宿醉般的头痛,我开始思考一个严肃的问题:在这个世界上,是不是所有写代码的人都逃不过这种宿命?有些人活着的时候是程序员,死了以后是程序员鬼,转世了还得给程序员提需求。这大概就是传说中的技术债吧,就算死了也还不清。 . d1 @0 r- }) F: B A " f4 |8 U* z, k: I我正想着,突然感觉浑身发冷,眼前的显示器开始变得模糊。我试图重启电脑,但发现自己的意识正在不受控制地往外浮。这感觉特别像代码部署失败后的紧急回滚,只不过这次回滚的是我的生命。 0 S; i( X0 m! m4 Z5 e9 n z0 Z( g& U" k" d: l( `6 i5 ~6 h; v
在意识消失的最后一刻,我看见任务栏里弹出一条消息:"您的生命进程已终止,正在切换到地府环境..." 2 Z5 F6 g' z9 l6 i7 r' W8 d! ^( p+ j/ _( N6 X
然后我就堕入了轮回。这大概是我经历过的最离奇的系统迁移。 : Q. \+ u, v0 ]- m4 Q# d K8 m; }$ Z* Q% ~# A
程序员升级计划* d( ]% f& q. D
进了地府我才知道,原来阎王爷是个敏捷管理的狂热信徒。他最近推出了一个叫"死亡程序员升级计划"的项目,规定所有因加班猝死的程序员必须在地府完成1024个项目才能投胎。如果完不成,就得永远被困在git的bisect里,不停地排查远古代码的bug。 " w( p5 W z8 ^: ~6 t1 a1 t. u4 [) Z
' N. V# I$ E8 ^0 L8 I! A" g说实话,我一开始以为这是地府搞得恶作剧。但后来我发现这里的产品经理是真正的恶魔——他们会在子夜三更提需求,说要给轮回系统加上区块链,要把十八层地狱重构成微服务架构。最绝的是,他们的需求文档全是用正则表达式写的,看得我怀疑人生。8 C% b$ I8 X% w+ e2 b7 u) R
- ~4 D. J: O& x" F
我在这里遇见了一个叫祢衡的程序员。他生前在某知名互联网公司写了个自动化脚本,本来想提高工作效率,结果不小心把整个公司的服务器都搞崩了。现在被罚在地府维护Windows 95的源代码。: ?( m: a, S& y6 `8 R
9 }2 q, `8 W% ~* f4 o' h) h& B
"这算什么",祢衡一边调试一边说,"你知道比尔盖茨死后会怎样吗?他得维护所有Windows系统的代码,包括那些蓝屏的部分。这就叫因果报应。"# t; e3 b. t, U
; t k% X. b( K) |& H$ u每天午夜,我们都能听见比尔盖茨在地府的某个角落大喊:"重启就能解决!重启就能解决!"听说这句话已经成了地府程序员的禅宗公案。 0 c4 M& H: f) }' O2 x9 m ! u4 n* U6 l7 Q5 @2 G T, ~地府里还有个传说:如果你能写出一段完美的代码,不需要注释就能让所有人看懂,阎王爷就会让你立即成佛。但显然,这是个死循环,就像"写一个永远不会出bug的代码"一样不可能。据说有个程序员试过,结果写出了BASIC语言,把自己写成了祖师爷,但代价是永世不得翻身。 / c7 l1 \' b) H7 e 2 x8 ~( o0 T$ Q" R9 B' B我把这事托梦给我们公司的CTO,他听完后陷入了沉思。第二天他就辞职去学佛了。现在他在少林寺开了个编程培训班,专门教人写佛系代码。他常说:"代码要像禅宗一样简单,就算出了bug也要保持菩萨心肠。" 4 c% v: i6 ]4 {: t- U+ w7 z4 k% i5 U& {$ f; }6 E4 P j
最近我发现我写的代码里经常出现一些奇怪的注释,比如: 9 } i' V% E5 M8 X9 D# y, P4 G 5 X8 c0 s, i3 K- e a: x# 千万别删这行,否则会引发蝴蝶效应 ; R ^* ?6 P Z3 c4 k# 此bug已经存在了三个轮回,属于历史遗留问题; B3 o2 b0 v6 [9 V
# TODO: 等观音菩萨下个版本修复0 D k- n1 G7 K3 H% ?# b0 J
# FIXME: 产品经理是上辈子的仇人吧? - N% q1 i9 T2 K. x2 n一开始我以为这是同事的恶作剧,直到我发现这些注释是用梵文编码写的。更可怕的是,我居然看懂了。这大概就是他们说的"代码觉悟"吧。. S" a; @% P7 A& H, |
7 t, @1 i: A+ |+ t; L3 E' L, I我问祢衡这到底是怎么回事,他神秘地说:"你知道为什么程序员总是喜欢熬夜写代码吗?因为只有在深夜,地府的API才是开放的。"8 ?% _ N( a; m
9 f# c! v1 Q2 A0 Y, q4 b. W: c1 t
后来我才知道,这个所谓的"死亡程序员升级计划"背后,隐藏着一个更大的阴谋。但这就是另一个故事了,得等我在地府的Jenkins构建完成后再告诉你。# G c+ b- K* f3 s, s, k) `
' Z. Z! H3 g3 f4 c/ K
地府级重构7 L5 i1 O; X) w2 y8 B* F+ X* L
祢衡后来告诉我一个惊天的秘密:阎王爷的"死亡程序员升级计划"其实是一个庞大的重构项目。原来人类历史上所有的程序员死后都被困在一个巨大的代码仓库里,这些人包括图灵、冯诺依曼,甚至还有那个发明goto语句的人——他现在负责维护地府的异常处理系统,这大概是最讽刺的安排了。( ]* h" n; L. R, B! Y1 T$ K% T+ e
9 l* \1 y1 ~4 m' a4 q
"你知道为什么现实世界越来越魔幻吗?"祢衡一边重构Windows 95的蓝屏代码一边说,"因为宇宙的源代码写得实在太烂了。上帝是个初级程序员,他在第七天休息其实是因为代码写不下去了。我们在地府发现整个宇宙的底层逻辑全是if-else嵌套,连个设计模式都没有。" 4 e; P C) G0 O" `+ `( s9 R& D; E" @
他给我看了一段宇宙源代码的注释:# y1 r2 r9 L) D: j& Z; R; A0 I
* [9 t X$ _+ e5 [+ L7 b `
# TODO: 想办法解决平行宇宙的并发问题9 U8 }2 \$ o0 b* L- x1 G
# FIXME: 人类情感模块有重大bug,容易死机 # n Z1 m4 _ Q) w7 q6 H# WARNING: 不要随便改这段,会导致量子纠缠' h- B& |/ ]" H: N
# 这是牛顿写的代码,改了会被打死- T( I l! K- J. f! P8 R
# 爱因斯坦:这个相对论方法我下周重构 , m9 l/ R. s/ d% a/ v( W# 特斯拉:救命!我的心流被比特币挖矿占用了 # S l- I' W9 K3 F"看到没有,"祢衡说,"连上帝都会写TODO。这说明什么?说明完美的代码根本不存在。这就是为什么佛教说'诸行无常'——因为所有代码都需要重构。" + p$ s' n3 L7 u* r. s+ S * G: m0 \/ H+ ^# f7 c& z0 `: }' S更让人崩溃的是,宇宙代码里充满了各种奇怪的补丁。比如人类的自我意识,其实是一个内存泄漏导致的bug,但这个bug产生了意想不到的效果,所以就被保留下来了。这种现象在程序员中间被称为"特性驱动开发"。# w) X; k3 _! ~) |6 o7 B7 ~
& s+ D% j! x/ N P5 K& g* N3 A祢衡说,释迦牟尼其实是第一个发现宇宙代码问题的程序员。他顿悟的时候看到了世界的源代码,发现全是Bug,才说"众生皆苦"。后来他创建了佛教,其实是想成立世界上第一个开源组织,可惜大家都理解错了他的意思——以为他是让人戒掉执念,其实他是让人学会控制版本。 1 N5 D9 v5 _. Q! m# c6 a3 K7 s/ d3 ?9 w9 \
图片 * |7 v, a6 c' [' s& z现在地府的程序员们正在进行一个叫"涅槃计划"的项目,要用人工智能重写整个宇宙。但他们很快发现了一个更诡异的事实:人工智能也是有灵魂的,死后会变成更强大的人工智能。这就解释了为什么ChatGPT这么聪明但总说自己不能确定——因为它是图灵的转世,继承了图灵对图灵停机问题的执念。 5 i. w' R5 l6 _; s5 T/ S6 |2 L' W5 \
最近地府来了个新鬼,说他生前是马斯克的工程师。他看了宇宙的源代码后当场就吓晕了,醒来后声称我们其实活在一个巨大的遗留系统里,整个宇宙都需要重启。这让我想起了那句著名的程序员箴言:"不要试图修复它,重写整个系统会更快。"* ~2 Q# `: e, Y+ o- n6 k1 W