有些程序员一辈子只写了一次Hello World

2026年8月28日 上午9:15

文/一个写过太多遍Hello World的人

我认识一个程序员,他入行的时候写了一个Hello World,然后直到今天,再也没有写过第二次。不是因为他讨厌它,而是因为他的职业路径跟大多数人不太一样。他职业生涯的第二周就开始维护一个几十万行的遗留系统,之后一直在同一个项目里,同一个代码库,同一套技术栈。他没有换过工作,没有换过语言,没有换过环境。所以他没有机会再写第二个Hello World。

他有一次跟我聊天的时候说:“你们经常换工作、换语言、换环境的人,Hello World对你们来说是’每次开始都要打招呼’。对我来说,它就是一个’我进这个门的时候签了一次到,后来再也没有出去过’的东西。”

他这句话让我想了很久。原来Hello World对每个人的意义是不一样的。有些人把它写了上百遍,有些人一生只写一次。有些人用它来标记每次“开始”,有些人用它来标记唯一的那个“开始”。

那些“只写了一次”的人

后来我又遇到了几个类似的人。一个做嵌入式开发的,他的第一个程序是在一个没有屏幕的芯片上写的,输出方式是用示波器看波形。他后来一直在同一个嵌入式领域工作,没有再切换过技术栈。他说他的Hello World只有一个,就是那个波形图。“我后来所有的代码都在那个波形的延长线上,没有新的起点,只有原来的起点。”

一个在银行系统里做了二十年的老工程师,他入行时用的是COBOL,中间没有换过语言,没有换过公司,一直在维护同一个核心交易系统。他写过的Hello World也就只有他职业生涯第一天的那一次。他说:“我没有想过要再写它,因为我一直没有离开过我开始的那个地方。”

这些人跟那些频繁换环境、频繁学新语言、频繁写Hello World的程序员,形成了一种很有意思的对比。一个群体用“重复写”来确认自己在不同的“点”上。另一个群体用“只写一次”来确认自己一直站在同一个“点”上。两种方式都是真实的,只是路径不同。

那个“没有新的Hello World”的二十年

银行老工程师跟我说过一个细节。他最开始写的那段Hello World程序,是他职业生涯唯一一次写“新程序”。从那以后,他所有的工作都是在维护、修改、扩展同一个系统。他写过无数行代码,但没有一行是从零开始的新程序。“每一行都有前一行作为上下文,没有哪一行是独立于整个系统存在的。”

他说他偶尔会想起那个最初的Hello World,但那个文件他早就找不到了。时间太久,换过太多次存储设备,那个文件不知道在哪一次迁移中就丢了。他并不觉得可惜。“它已经不重要了。它存在的意义就是让我进入这个系统。我进去了,它的任务就完成了。”

他说这些话的时候,语气里没有任何遗憾。他觉得自己是一个“已经到达了目的地”的人,不需要再买新的车票。他的全部职业生涯都在同一个地方展开,那个地方足够大,装得下他所有的代码。

那个“一辈子只写一次”的人,后来怎么看待自己

我后来问那个只写过一次Hello World的人:“你会不会觉得错过了一些东西?”

他说:“有时候会想,那些经常换环境的人,每次换都能重新开始,就像每年都在过新年。而我一直在同一个年份里,每天都是同一天。但这也不坏,我不需要反复确认自己’还能不能开始’,因为我根本没有停下来过。”

他说这话的时候,办公室的窗外是同一个他在二十年前就看到过的街景。同一栋楼,同一棵树,同一个天空。他每天走进同一扇门,打开同一套系统,处理同一种类型的问题。他的Hello World只写了一次,因为他只开始了这一次。

但他也觉得,自己对那个系统的理解,可能比那些频繁切换的人对任何一个系统的理解都要深。他可能只写了一次Hello World,但他把那个系统里的每一行代码都读了很多遍。他不擅长开始,但他擅长持续。

那个“很多人没有第二扇门可以进”的现实

后来我想,其实不是每个人都会频繁地换环境。有些人一辈子就进了一扇门,再也没有出来过。他们第一次写Hello World的时候,写的就是他们全部职业生涯的唯一开始。

这些人不会再去学新语言,不会再去适应新框架,不会再去面对“环境能不能用”的问题。他们在一个稳定的环境里,做着长期的工作。他们的Hello World只写一次就够了,因为那个起点足够支撑他们走完全程。

这些人可能不会在技术社区里频繁发言,不会分享自己“又学了一门新语言”的经历,不会展示自己用多少种方式写过Hello World。他们只是在一个地方,写了很久的代码,没有换过起点,也没有打算换。

那个“最后一次写”和“第一次写”之间

我后来想到,其实每个人对于Hello World,都有两种可能性。

一种是把它写很多遍,每一遍都是一个“新的开始”。另一种是把它写一遍,然后让它作为唯一的起点,支撑自己走很长的路。没有哪一种更好,只是不同的路。

只写一次的人,他们的那一次可能是唯一的那个“签到的瞬间”。他们不需要重复签到,因为他们没有离开过。而那些重复写的人,每一次都是“重新进入”,每一次都是一次“我又来了”。

那个“不需要再写Hello World”的人,其实也在写它

老工程师后来告诉我一件事。他说他虽然再也没有主动写过Hello World,但在他维护的那个系统里,有一个模块的注释里藏着一行“printf(“Hello, World!”);”。那是他很多年前加的一个调试日志,后来那个调试日志被注释掉了,但一直没有被删除。

“它还在系统里,”他说,“藏在几千个文件中间。不运行,不执行,就是一行被注释掉的代码。”

他没有刻意留着它。只是没有人删掉它。它就在那里,像一个他留下的小标记,标记着他曾经从那里开始。如果那个系统一直运行下去,那行被注释掉的Hello World可能会比他活得更久。

我问他,你觉得那行注释算不算你写的“第二个Hello World”。他想了一会儿说:“不算。它是第一个Hello World的余音。它没有新的内容,它只是旧的回声。但它还在响,这对我来说就够了。”

那个唯一的一次,被留在了系统里

我后来想,那些只写了一次Hello World的人,他们的那一次,可能比那些写了上百次的人更有重量。他们不是用“重复”来确认起点,他们是用“没有离开”来确认起点。

那个起点没有再被写过,因为它没有被覆盖过。他们一直站在那扇门里面,从来没有重新进过一次。所以不需要再打一次招呼。

但那个招呼,被记住了。即使没有被保存下来,也被记住了。不是记在硬盘上,是记在一个人全部的职业生涯里。他后来写的每一行代码,都可以追溯到那个最初的、唯一的、只写了一次的“你好”。

它没有被重复,但它被延伸了。