湖边的程序员
湖边的退休教授相信,代码不是只给机器运行的,也是写给未来的人看的。
在德国巴伐利亚州有一个很小的镇子,叫米滕瓦尔德,镇上只有不到一万人。这个镇子以手工制作小提琴闻名,但你大概猜不到,那里还住着一个改变了很多人对编程这件事看法的老人。
老人叫格哈德,六十八岁,头发全白了,扎成一个小马尾,穿了一辈子格子衬衫和登山靴。他在镇上有一栋小木屋,木屋后面是一片湖,湖水平静得像一面镜子,远处是阿尔卑斯山的雪线。
格哈德退休之前,是慕尼黑工业大学计算机系的教授。更早之前,他是西门子公司操作系统内核开发团队的负责人。他这辈子写过的代码,可能运行在你用过的某台设备上,只是你自己不知道。
格哈德教了一辈子编程,但他最核心的信念只有一句话。他把它写在了每一堂课的板书第一行:“代码是写给人看的,不是写给机器看的。机器只认零和一,人能看出你是不是在用心。”
他有一个“怪癖”。不管你交上来的作业功能是否完整、运行是否正常,只要他打开文件之后皱眉头了,你就必须拿回去重写。
皱眉头是什么意思?
就是你写的代码让他“感觉不对”。命名不清晰,打回去。缩进不统一,打回去。一段函数写了超过五十行还没有一个明确的目的,打回去。他甚至能看出一行代码是上午写的还是深夜写的——“深夜的代码带着焦躁”,这是他的原话。
学生们又敬又怕,私下叫他“森林巫师”。有人抱怨:“功能都对,他为什么非要在意这些表面的东西?编译器又不嫌丑。”
格哈德听到了这个抱怨。下一堂课上,他没有讲课,而是带了两样东西到教室里:一把手工小提琴,和一把工厂流水线生产的小提琴。
他先拿起那把流水线的小提琴,拉了一段巴赫。声音准确、清晰,没有任何问题。然后他拿起手工的那一把,用同样的弓法拉同一段曲子。
所有人都听出了区别。
流水线那把的声音是“对”的,但手工那把的声音是“活”的。它仿佛有某种微妙的颤动,让琴声不只是传到耳朵里,更像是直接落在了心上。
格哈德放下琴弓,对台下的学生们说了一段话。这段话后来被学生抄下来,发在了论坛上,至今仍是那个系流传最广的一段“开学第一课”。
他是这么说的:
“这把手工小提琴是我祖父做的。他做了六十年,一辈子只做这一件事。你们看到的木头只是一块木头,但他看到的是年轮、纹理、日照面还是背阴面。他选择每一块木材的时候,已经在脑子里听见了它未来会发出的声音。”
“写代码跟做小提琴没有区别。流水线上的琴也能拉,糊弄的代码也能跑。但你今天在这里糊弄过去,明天在下一个项目里糊弄过去,十年之后你会发现,你写的每一行代码都能运行,但没有一行值得任何人记住。”
他拍了拍那把手工小提琴。
“这跟赚钱没有关系。我祖父穷了一辈子。但他知道自己在创造一件能留下去的东西。这个东西到了别人手里,别人会感受到他当时做它的时候有多认真。”
“你们写下的每一行代码,都会在未来某个时刻被另一个人打开、阅读、修改。你永远不知道那个人是谁——可能是你未来的同事,可能是一个凌晨三点被叫起来紧急处理故障的运维工程师,也可能是五年之后的你自己。”
“如果你在写的时候就想着‘随便吧,反正能跑就行’,那你在那一刻就已经输了。不是你输给了需求、输给了截止日期,是你输给了自己心里那个觉得‘认真没有意义’的声音。”
“那个声音,是所有庸常的起源。”
台下安静了大概有十秒钟。
然后有人开始鼓掌。
第二年,格哈德退休了,搬到了米滕瓦尔德,那个产手工小提琴的小镇。他在湖边的木屋里继续写代码,不是接项目,也不是为了赚钱,纯粹是给自己的兴趣写的。他为镇上图书馆写了一个图书管理系统,为邻居农场写了一个温湿度监测软件,还花三年时间写了一个开源的操作系统内核——没有任何商业目的,只是他觉得“一个干净的内核”这件事本身就值得做。
有人问他:“你不觉得可惜吗?你当年在西门子,写的东西影响几亿人。现在在这里写一个只有十个人用的东西,不会觉得自己在浪费时间?”
格哈德坐在湖边的木椅上,看着远处的雪山,不紧不慢地说:
“一个人一辈子写的代码,百分之九十九都会在十年之内被替换掉、被重写、被遗忘。这是技术本身的宿命,没什么好难过的。但如果你在写每一行的时候都诚心诚意,那这百分之九十九的消逝就不是浪费,而是练习。它把你变成一个有耐心的人、一个在意细节的人、一个对自己有要求的人。”
“而那百分之一值得留下的代码,不是靠聪明写出来的,是靠这百分之九十九的练习堆出来的。”
他喝了一口黑咖啡,笑了起来。
“再说了,影响几亿人和影响十个人,本质上是一样的——你都在为某个你从未谋面的人做一件事。那个人可能在西雅图,也可能就在隔壁农场。只要你做得足够认真,这份认真就会穿过屏幕,穿过时间,抵达对方。”
后来,他花三年写的那个开源内核,被一个年轻程序员发现了。那个年轻人在论坛上写了一篇很长的评测,标题是《我读了一个六十八岁老人写的操作系统内核,然后哭了》。
帖子是这么结尾的:
“它的代码量不大,功能也不比Linux强,商业价值约等于零。但这是我从业十年来,第一次看到有人把代码写得像诗一样干净。它不是写来炫耀的,不是写来赚钱的,不是写来改变世界的。它只是被一个人,用三年的时间,安静地、认真地、一个字一个字地写好。每一行都在告诉我:你看到的一切秩序都不是天生的,是有人在背后付出了巨大的心意。谢谢你,格哈德先生。虽然我不认识你,但读完你的代码,我觉得我好像认识了一个好人。”
格哈德把这篇帖子打印了出来,钉在书桌前的木板上。
他跟我说,那是他这辈子收到过的最好的评价。