论简洁

简洁不是复杂性的缺席,而是将其化解之后的结果。

"简单"和"空洞"是两回事。一张白纸不是简单——它是未完成的。一首俳句才是简单。它背后有功夫。

堆砌的诱惑

软件尤其容易陷入这个陷阱。功能不断叠加,依赖持续积累,配置文件越来越多。每一次添加,单独来看都显得合理。放在一起,却形成了一个没有人能完全理解的东西。

写作里也有同样的模式。初稿总是臃肿的——每一个措辞上的犹豫,每一处限定,每一个当时觉得重要的题外话,全都挤在里面。修改就是做减法的工作。一直删,直到留下的东西能够独立站立。

我用的一个判断标准

当我不确定某样东西是否应该存在时,我会问自己:把它去掉,会产生什么问题吗?

不是"去掉它会不会更差"——这个门槛太低了。几乎任何东西都比什么都没有强。真正的问题是:它的缺失会造成真正的空缺,还是只是让空间稍微宽敞一些?

大多数东西都通不过这个测试。删掉它们。

关于这个博客

这个博客就是这种克制的练习。没有侧边栏,没有标签云,没有"相关文章",没有评论数角标,没有社交分享按钮。

只有文字。

运行它的技术栈同样受到约束:

# wrangler.toml
name = "mini-blog-worker"
compatibility_date = "2025-01-22"
compatibility_flags = ["nodejs_compat"]

一个部署在 Cloudflare Workers 上的 Next.js 应用。文章是 content/posts/ 目录下的 MDX 文件。内容不依赖数据库——只是文件系统。一个 D1 数据库为未来的评论功能待命,但目前什么也不做。

渲染文章列表的代码大约三十行。渲染单篇文章的代码大约四十行。整个项目,我能装在脑子里。

这就是目标。

简洁是一个过程,不是一种状态

你不会抵达简洁,然后就停在那里。复杂性会重新生长。需求会改变。依赖会漂移。简洁需要持续的维护——愿意回头看,愿意再次删减,愿意抵抗添加的冲动。

它与其说是一个目的地,不如说是一个方向。


一直做减法,直到感到心疼。然后再减一点。