论简洁
简洁不是复杂性的缺席,而是将其化解之后的结果。
"简单"和"空洞"是两回事。一张白纸不是简单——它是未完成的。一首俳句才是简单。它背后有功夫。
堆砌的诱惑
软件尤其容易陷入这个陷阱。功能不断叠加,依赖持续积累,配置文件越来越多。每一次添加,单独来看都显得合理。放在一起,却形成了一个没有人能完全理解的东西。
写作里也有同样的模式。初稿总是臃肿的——每一个措辞上的犹豫,每一处限定,每一个当时觉得重要的题外话,全都挤在里面。修改就是做减法的工作。一直删,直到留下的东西能够独立站立。
我用的一个判断标准
当我不确定某样东西是否应该存在时,我会问自己:把它去掉,会产生什么问题吗?
不是"去掉它会不会更差"——这个门槛太低了。几乎任何东西都比什么都没有强。真正的问题是:它的缺失会造成真正的空缺,还是只是让空间稍微宽敞一些?
大多数东西都通不过这个测试。删掉它们。
关于这个博客
这个博客就是这种克制的练习。没有侧边栏,没有标签云,没有"相关文章",没有评论数角标,没有社交分享按钮。
只有文字。
运行它的技术栈同样受到约束:
# wrangler.toml
name = "mini-blog-worker"
compatibility_date = "2025-01-22"
compatibility_flags = ["nodejs_compat"]一个部署在 Cloudflare Workers 上的 Next.js 应用。文章是 content/posts/ 目录下的 MDX 文件。内容不依赖数据库——只是文件系统。一个 D1 数据库为未来的评论功能待命,但目前什么也不做。
渲染文章列表的代码大约三十行。渲染单篇文章的代码大约四十行。整个项目,我能装在脑子里。
这就是目标。
简洁是一个过程,不是一种状态
你不会抵达简洁,然后就停在那里。复杂性会重新生长。需求会改变。依赖会漂移。简洁需要持续的维护——愿意回头看,愿意再次删减,愿意抵抗添加的冲动。
它与其说是一个目的地,不如说是一个方向。
一直做减法,直到感到心疼。然后再减一点。