承认平凡,但不要默认平庸
Posted on 一 27 7月 2026 in Journal
| Abstract | 承认平凡,但不要默认平庸 |
|---|---|
| Authors | Walter Fan |
| Category | Journal |
| Status | v1.0 |
| Updated | 2026-07-27 |
| License | CC-BY-NC-ND 4.0 |
承认平凡,但不要默认平庸
人到中年,越来越容易看清一件事:世界很大,自己很小。
年轻时总觉得,只要足够努力,人生就能像程序一样按照设计运行。后来才知道,需求会变,环境会变,身体会报警,行业会转向,运气这个依赖项还从不写进文档。我们能决定的事情,并没有想象中那么多。
承认这一点,有点不甘心,却也不全是坏事。它让人从“我必须成为一个了不起的人”的焦虑里退半步,重新看清脚下。承认自己平凡,并不等于默认自己平庸。平凡多半是处境,平庸却常常是停止求新求变、失去好奇心之后的结果。
普通人未必有机会改变世界,但仍然可以让家人多一分安心,让手里的工作多一点价值,让后来的人少绕一点弯路。这些事不够宏大,却并不渺小。
平凡、平庸和失败,不是一回事
“我是个普通人”,这句话有两种说法。
一种是清醒:我知道自己的能力边界,知道资源有限,也知道有些机会错过了就不会再来。我不再幻想只凭一腔热血便能解决所有问题,但仍愿意把能做的事做好。
另一种是缴械:反正我很普通,所以不必学习,不必负责,不必尝试,出了问题都怪环境。前一种是成熟,后一种只是给懒惰找了一个听起来很诚恳的借口。
当然,不能把所有暂时的停顿都叫平庸。有人光是养家、治病、照顾老人和孩子,就已经花光了力气。人在逆风里先站稳,不丢脸;累了歇一歇,也不是堕落。所谓不甘平庸,不是每天打鸡血,更不是把自己活成一支燃烧到报废的蜡烛。
我理解的不平庸,其实很朴素:知道生活不容易,仍然没有彻底放弃对自己技术、责任和良心的要求。
2024 年,PostgreSQL 开发者 Andres Freund 在测试 Debian 系统时,发现 SSH 登录比平时慢了大约半秒,CPU 占用也有些异常。多数人可能会把它当成一次普通的性能抖动,他却顺着这点异常继续追查,最后发现常用压缩工具 XZ 的发布包里被植入了后门,也就是后来震动开源社区的 CVE-2024-3094。
Andres Freund 当然是一位出色的程序员,但这件事最打动我的,不是他用了多高深的技术,而是他没有放过那个不起眼的“为什么”。好奇心让他多追了一步,专业责任让他把发现公开出来。他的发现促使相关 Linux 发行版迅速撤回受影响的软件包,阻止了后门进一步扩散。
程序员失去好奇心之后,看到异常只会绕过去,遇到旧代码只想复制粘贴,面对不合理的设计也懒得再问一句。代码也许还能写,技术却已经开始停滞。所谓不平庸,很多时候就是对一个小问题仍然愿意刨根问底。
失败也不等于平庸。认真做过一件事,最后没有成功,可能是能力不够,方法不对,也可能是时机和运气差了一点。反过来,一个人即使侥幸赢了,如果从不对任何人负责,也很难说活得有多精彩。
我们太习惯用结果给人贴标签,却忘了人生并不是只有排行榜。
想做自己的事,也要看历史往哪里走
“世界这么大,去做你想做的事”,听起来很痛快。年轻时的我也相信“只要功夫深,铁杵磨成针”,相信“爱拼才会赢”。仿佛只要肯努力奋斗,再崇高的理想也能实现,世界正等着我们去改变。
江泽民同志谈到个人命运时说过一句很有名的话:
一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的行程。
年纪渐长,我越来越能体会这句话。现在我愿意给年轻时的信念补上半句:做你想做的事,也要看清历史的进程。
个人努力像划桨,时代潮流像水势。没有桨,人只能随波逐流;看不见水势,再用力也可能一直在原地打转。行业兴衰、技术变化、经济周期、城市机会,甚至一个人的家庭出身和健康状况,都在影响那条船能走多远。
这听上去有些残酷,可现实本来就不负责温柔。有人赶上了一个行业的上升期,能力只算中上,也走得很远;有人本事不错,却在平台衰落、项目取消或组织调整时被推到岸边。把所有成功都归功于自己,容易傲慢;把所有不顺都归罪于时代,又容易躺平。
比较有用的态度,是把两件事分开:
- 对于大势,保持观察,及时调整,不和趋势赌气。
- 对于自己,持续修炼自我,守住底线,不把方向盘交出去。
顺风时别把自己当天才,逆风时也别急着把自己判成废物。时代决定了不少题目,我们仍然要写自己的答案。
古人的“三不朽”,今天还剩下什么
《左传·襄公二十四年》里记载,叔孙豹谈到什么才算“不朽”时说:
太上有立德,其次有立功,其次有立言。虽久不废,此之谓不朽。
后来人们把它概括为“三不朽”:立德、立功、立言。
这套标准很高。古人说“立”,不是完成一张年度绩效表,而是留下经得起时间的德行、功业和言论。普通人若把它当成人生 KPI,大概从第一天就得焦虑。咱们多数人既进不了史书,也未必进得了家谱,几年后还能被老同事记住,已经算人缘不错。
可我还是喜欢这三个词。不是因为它们能让人“不朽”,而是因为它们给了我三个观察人生的角度。
立德:先做一个可靠的人
普通人的立德,不必从圣贤讲起。答应别人的事尽量做到,做不到尽早说明;不欺负比自己弱的人,不把坏情绪全倒给家人;利益摆在面前时,仍知道哪些便宜不能占。
这些事情都很小,也没有掌声。可一个人是否值得信赖,恰恰藏在这些没有观众的时刻里。
技术做得再漂亮,人品如果总掉线,系统迟早也会出故障。
立功:做成一件对别人有用的事
“功”不一定是开疆拓土,也可以是把一个产品做好,把一个项目救回来,把一套混乱的流程理顺,或者把年轻同事带到能独当一面。
程序员最容易把功劳理解成代码量、架构图和技术难度。其实用户不太关心你用了多高级的框架。他只在意问题有没有解决,系统会不会在关键时刻掉链子。
能让别人因为你的工作少一点麻烦,多一点方便,这就是功。未必上史书,但能进用户的日常。
立言:留下可以复用的经验
立言也不一定非得著书立说。一次诚实的事故复盘,一份写清来龙去脉的设计文档,一篇帮读者避开旧坑的文章,都可以算普通人的“言”。
我写博客,很大一部分原因就在这里。人走过的路,如果不记下来,许多经验会随着记忆一起蒸发。写下来,未必有多少人看;可只要有一个读者因此弄懂了一个概念,避开了一个坑,或者在灰心时多撑了一会儿,这些文字就没有白写。
中文技术圈里,陈皓就是这样的程序员。他的网名是“左耳朵耗子”,从 2003 年起就在网上记录技术知识和思考,后来创办“酷壳”博客。《跟我一起写 Makefile》《程序员技术练级攻略》等文章,帮助过许多学习编程的人。他并不只是告诉读者怎么调用一个 API,更愿意讨论程序员应该怎样学习、思考和选择。
陈皓曾经说,技术日新月异,我们每个人其实都是新人。这句话和 Andres Freund 的故事正好连在一起:保持好奇,持续学习,再把学到的东西写下来。一个人走得再远,也不要失去新人那种愿意问“为什么”的劲头。
可惜的是,陈皓在 2023 年突然离世,年仅 47 岁。每次想到这里,我都觉得惋惜。他留下的文章还在帮助别人,可如果身体允许,他原本还可以再写很多年,再做许多自己想做的事。
身体是革命的本钱,这句老话一点都不过时。写程序、写文章、照顾家人、追求理想,都需要一个能够长期运行的身体。系统再重要,也要安排维护窗口;人更不能把健康当成一个永远排不到的技术债。
古人追求“虽久不废”,普通人未必做得到。咱们可以先追求“眼下有用”。能多用几年,已是额外的奖赏。
横渠四句,不是压在普通人身上的四座大山
北宋张载留下的几句话,后来被称为“横渠四句”:
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
年轻时读,觉得气吞山河。年纪渐长再读,敬佩之外也会有一点压力:天地、生民、往圣、万世,哪个词都比我的日程表大得多。一个普通程序员,白天开会写代码,晚上惦记家人和身体,凭什么谈“万世开太平”?
后来我想明白了,标杆的意义不是要求人人都跳到同样的高度,而是提醒人抬头看一眼方向。
如果把横渠四句稍微放回普通人的生活,我愿意这样理解:
| 古人的理想 | 普通人的理解 |
|---|---|
| 为天地立心 | 在喧闹和利益面前,保留一点独立判断和恻隐之心 |
| 为生民立命 | 让自己的职业和作品真正服务于人,而不是只服务于数字 |
| 为往圣继绝学 | 把前人的知识学明白,再用今天的人听得懂的方式传下去 |
| 为万世开太平 | 不求安排万世,先让自己负责的家庭、团队和系统少一点混乱 |
这当然不是对张载思想的完整解释,只是一个普通人的自我提醒。我们不必假装胸怀天下,也不要因为做不到宏大功业,就认定自己的小事毫无意义。
人的责任像一圈圈涟漪。最里面是自己和家人,再往外是同事、用户、读者和社区。先把最近的一圈照顾好,有余力再往外走。半径有大小,认真没有高低。
一个普通程序员的三个愿望
说到底,我没有“为万世开太平”的本事。我不过是一个写了很多年代码的普通程序员,见过一些项目起落,也踩过不少坑。真要问我想留下什么,大概只有三件事。
不过在这三个愿望之前,还有一个共同的前提:把身体搞好。
我希望自己在未来四十年里,一直有想做的事,也还有能力去做自己想做的事。有想做的事,是心气还在;能做自己想做的事,则需要健康、技术和一点生活的余地。活得久一些,活得健康一些,不只是为了多享几年清福,也是为了把喜欢的事情做得更久。
这大概是中年以后才真正明白的长期主义:不是一阵子拼命,而是尽量让自己四十年后还能在场。
为家人撑起一张伞
这是最实际的一件事。
这张伞首先是收入和保障,让家人在风雨来的时候不至于慌乱。但它也不只是钱。身体别太早垮掉,情绪别总让家人承受,忙完工作还能留一点时间给他们,这些也都是伞的一部分。
有时我们在外面努力证明自己,却把最坏的脾气留给最亲近的人。这样的“成功”,多少有点系统指标漂亮、用户体验一塌糊涂的意思。
能让家人觉得有你在,生活就多一分安稳,这已经是一份不小的功业。
写的程序有更多人在用
程序被更多人使用,不只是满足虚荣心。有人用,说明它至少解决了一点真实问题;长期有人用,说明它大概还算可靠。
当然,用户多不自动等于价值大,流量也不是唯一标准。我更在意的是,自己写下的代码有没有让某件事变简单,有没有在关键时刻稳稳运行,有没有让后来维护它的人少骂几句。
程序员的“立功”,不一定是发明一种新语言。把一个普通服务做稳,把一个复杂问题讲清,把一段技术债收拾干净,也是在自己的责任半径里做功课。
写的文章有更多人看到并受益
我当然希望文章有人看。写作者若说完全不在意读者,多半有点嘴硬。可比阅读数字更让我高兴的,是有人告诉我:这篇文章帮他想明白了一件事,或者那段代码让他少折腾了半天。
这就是我能理解的“立言”。不是每句话都要传世,也不必每篇文章都振聋发聩。把自己真正学过、做过、想过的东西写清楚,不装懂,不糊弄,能给后来者留一块垫脚石,就很好。
至于能不能被更多人看见,还要看平台、传播和运气。作者能管住的,是尽量让文章值得被看见。
普通人的不平庸清单
宏大的问题,最后还是要落到今天。下面这份清单,我写给读者,也写给自己。
-
守住一个基本盘
照顾身体、收入和家庭,把健康当作未来四十年的基础工程。基本盘不稳,远方很容易变成逃避现实的借口。 -
做好一件有用的事
不问它够不够伟大,先问它是否解决了真实问题,是否让某个人的生活或工作好了一点。 -
留下一个可复用的结果
可以是程序、文档、文章、方法,也可以是教会另一个人的本事。做完不算结束,能被后来的人接住才更有价值。 -
分清大势和借口
该承认行业和环境的限制,也要问自己:在现有条件下,我是否已经做了能做的调整? -
扩大一点责任半径
先照顾好自己和家人,再帮助同事、用户或陌生人。不必一步到天下,向外多走一圈就算进步。 -
允许自己休息,但不要长期失去方向
人不是永动机。可以慢,可以停下来喘气,只要还记得下一步往哪里走。
最后一句
承认平凡,是放下不切实际的自恋;拒绝平庸,是保留对生活最基本的认真。这两件事并不矛盾。
世界很大,历史的潮水也很急。普通人能够左右的东西有限,有时使尽力气,也未必抵得过一次浪头。这是现实,不必粉饰。可我们仍然可以握住自己的桨,照顾好船上的人,把手里的活做好,再给后来者留下一点航行记录。
我未必能立什么惊天动地的德、功、言,也不敢说能为万世开太平。我所想的,不过是为家人撑起一张伞,写的程序有更多人在用,写的文章有更多人看到并从中受益。
我希望未来四十年里,心里始终有自己想做的事,身体也允许我去做这些事。如果还能把这些小事认真做下去,我想,平凡也会有平凡的光彩。
你不必成为历史书里的人。先成为家人愿意依靠的人、同事愿意信任的人、读者偶尔会想起的人。
无他,尽己所能,让自己的责任半径之内,因你而稍微好一点。
参考
- 《左传·襄公二十四年》:“太上有立德,其次有立功,其次有立言,虽久不废,此之谓不朽。”
- 张载:《张子语录》,“为天地立心,为生民立命,为往圣继绝学,为万世开太平”。
- 江泽民同志 2009 年谈个人经历时的讲话:“一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的行程。”
- Andres Freund:Backdoor in upstream XZ Utils leading to SSH server compromise
- 陈皓:关于陈皓
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。欢迎在我的个人网站 https://www.fanyamin.com 访问原文并评论。