matklad 谈如何学软件架构

查看原文 HN 讨论

文章摘要

matklad(rust-analyzer 的主要作者,目前在 TigerBeetle)写了一篇关于”软件架构是如何被学到的“的反思。他的核心立场是反智的——软件设计不是从课程里学到的,是从做项目里学到的——尤其是 maintain 项目,而不是只造项目。学院软件和工业软件的差距,不是技术差距,是激励结构的差距

他把康威定律(Conway’s Law)抬到了最高的位置。”代码不如架构重要,而架构不如社会问题重要。“——这句话他不只是引用,是真信。matklad 用 rust-analyzer 举例——他在设计这个项目时,不是先想”什么数据结构最优”,而是先想:贡献者会是谁,他们能投入多少精力——他要让深度贡献者和周末玩玩的人都能上船。具体策略包括——尽可能简化构建复杂度、把 feature 隔离到运行时错误边界后面(一个 feature 崩了别影响别人)、把核心基础设施和外围 feature 分开。

他还引出了 TIGER_STYLE——TigerBeetle 内部那套以”defensive programming + assertion-heavy + 不用 alloc”出名的编码规范。但 matklad 的观点是——TIGER_STYLE 之所以有效,不是因为规则本身,而是因为支撑它的组织文化——同样一套规则贴到没有那套文化的团队里,会立刻失效。

他推荐了一份反复出现在他思考里的学习材料清单:

HN 评论精华