我很少把一段技术演讲看三遍。Python开发者大会那段视频只有十五分钟,我反复看了三遍,不是内容有多难懂,是那句话让我一直琢磨。
演讲者是Python核心开发者,在解释Python为什么坚持某些设计时说了句特别直白的话:“好的代码应该像好的故事一样容易理解。”
他举了个例子。有人提议给Python加一个功能,让编译器自动推断变量类型。听起来很先进,但他在台上反问了一句话:“你写代码的时候真的希望编译器替你做决定吗?”台下安静了三秒,然后有人鼓掌了。
我第一次看这段视频是在深夜。自己写了几年Python,总觉得自己技术还行,看了大量复杂写法,觉得越难读懂越显得厉害。我经常在一个函数里堆叠十几个装饰器,类继承写得跟迷宫似的,同事看了都摇头说“可读性太差”。我当时还觉得他们水平不够,看不懂是我的设计精妙。
第二遍看的时候,我开始认真听他的逻辑。他说编程语言是人跟机器沟通的工具,但这种沟通最终是为了人跟人之间能互相理解。你的代码会被同事看,会被自己三个月后回来看。如果一段代码需要反复猜才能理解意思,这个设计就是失败的。
第三遍看的时候,我想起了自己干过的蠢事。去年写过一个数据处理脚本,用列表推导式嵌套了三层,写了五行代码完成了五十行的功能。当时觉得很得意,发到公司群里等着点赞。第二天同事直接私信我,说“你这个逻辑我看了半小时没看懂,能不能重写一遍”。我后来改成普通循环加注释,全部人秒懂。
很多人都有这个毛病,把复杂当成实力。实际上编程界最核心的能力不是写出机器能跑的通代码,是写出人一眼就能看懂的代码。机器从来不会抱怨你的代码难看,但人会。Python核心开发者们设计语言的时候,一直在对抗一个诱惑,就是“让语言更强大更复杂”。他们选择了“让语言更简单更清晰”。
有个细节特别打动我。演讲者说Python社区有条规定,新增任何功能都要问一句:“如果这个功能是第一次使用,看的人能不能猜出它的意思?”猜不出来就砍掉。这条规则很硬核,直接导致Python看起来很“傻”,代码读起来跟读英语文章差不多。但正是这份“傻”让Python成为最适合初学者也是最受大型企业欢迎的语言之一。
我的理解是,这条设计哲学不仅适用于写代码。写文档、写邮件、甚至跟人说话都适用。能把复杂的事情简单讲清楚,比堆砌专业术语要难的多。我见过的顶级工程师都有个共同点,他们能用大白话解释最高深的技术问题。反过来,半桶水的人最喜欢用别人听不懂的词汇来显得自己专业。
看懂这条哲学之后,我开始有意识地在写代码时做减法。首先是变量命名,以前喜欢用temp, data, info这种通用词,现在花三分钟想一个准确的词。其次是函数长度,一个函数超过三十行就拆。最后是代码逻辑,能用判断就不要用异常捕获,能用循环就不要用递归。
改变很明显。代码review时被打回的次数减少了百分之七十。
我还想起了一件事,几年前参与过一个开源项目,项目创始人是个印度人。他写的代码像教科书,每段都有注释,每个变量名都带着设计意图。我当时觉得他效率低,写代码太啰嗦。现在回头看,人家才是真的厉害,那种代码你哪怕不懂那个领域也能看明白大概功能。那个项目到现在还在维护,而同期很多“高效”的项目早就没人看了。
普通程序员追求功能实现,好的程序员追求清晰易懂。这个道理其实不局限于编程。你写报告,很多人用复杂的图表和华丽的辞藻显得自己做了很多工作。真正厉害的汇报是十分钟讲清楚问题本质、原因和解决方案。听的人不用猜,一听就明白。
演讲最后有个提问环节。有人问他,如果你的设计哲学和性能要求冲突怎么办?他说了句很酷的话:“先保证人能读懂,再考虑机器跑得快不快。因为机器升级很快,但人的理解能力几十年都没变过。”
这句话我记在了笔记本首页。现在是2025年,芯片性能翻了好多倍,但如果你还是需要花三个小时才能看懂一段代码,那就是设计的问题,不是性能的问题。以后写东西不管代码还是文字,都先问自己一句:别人从第一行看到最后一行,能不能顺畅地理解我想表达什么。
这就是我从那个视频里得到的全部东西。不复杂,但真做到了,你写的东西会变了一个味道。