惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
V
Visual Studio Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Cloudflare Blog
博客园 - 【当耐特】
博客园 - 叶小钗
量子位
博客园 - 聂微东
S
SegmentFault 最新的问题
美团技术团队
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
宝玉的分享
宝玉的分享
小众软件
小众软件
罗磊的独立博客
有赞技术团队
有赞技术团队
Stack Overflow Blog
Stack Overflow Blog

串串狗小刊 ⭐️

Web 出海之域名商、托管商等一定要分开 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 程序员下班以后做什么副业合适? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 终极拷问:用户的登录信息放哪里? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 5个 link 标签,突破前端性能瓶颈! - 串串狗小刊 Web 出海让你结束上班时代! - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 注意!程序员不要使用 设计模式 了! - 串串狗小刊 Web 出海之品牌站如何应对被别人侵权 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ Web 出海之一些广告流量主方案和 SaaS 站没必要搞社区 - 串串狗小刊 年轻人怎么抓住 AI 发展的风口? - 串串狗小刊 为什么 GO 语言地位很尴尬? - 串串狗小刊 Web 出海必备的外链列表 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 我的 Web 3D 世界梦 - 串串狗小刊 OPC Web 出海之图视频的 AI 供应商渠道和简单外链 - 串串狗小刊 简单聊聊我的 Nodejs 世界观 - 串串狗小刊 Web 出海快速判断关键词法和推荐 3 个 SKILL - 串串狗小刊 Web 出海之演示建站盈利和朋友 Reyn 的教训 阅读源代码前要运行的 5 条 Git 命令 - 串串狗小刊 介绍几组我一直在使用的 Codex 插件 我观看哥飞年终会议复盘的 Web 出海笔记(下) - 串串狗小刊 观看哥飞年终会议复盘的 8 个 Web 出海笔记 - 串串狗小刊 Codex 敞开用的技巧和谷歌趋势的参考词 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ Web 出海之外链提交频率和如何不花 Token 处理代码 - 串串狗小刊 程序员现在的最佳副业 ~ Web 出海 - 串串狗小刊 如何设计良好的 API - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 你跟 AI 对话后会发生什么? - 串串狗小刊 出海 Web 之 GSC 里的曝光量和点击量和外链的关系 - 串串狗小刊 出海 Web 不要 恋战 新词游戏站 - 串串狗小刊 无港卡开通 Stripe 收款和 Nofollow 转 Dofollow 技巧 - 串串狗小刊 DeepSeek 发布氮气加速器 DSpark!可惜好东西又开源了 - 串串狗小刊 简单聊聊出海 Web 的游戏站 - 串串狗小刊
八个软件工程师需要了解的定理法则 - 串串狗小刊 - 聊AI、互...
独元殇 · 2026-04-27 · via 串串狗小刊 ⭐️

今天我就来介绍几个软件工程师需要了解的定理法则吧。

想到哪里说哪里,是我以前阅读各个技术文章摘录的。

第一个,康威定理!

康威定理

组织设计的系统会映射其自身的沟通结构。《人月神话》。

什么意思呢?比如说你的公司,如果内部,像一个个孤岛一样,那么最终你们的软件,内部也会像一个个孤岛一样的模块。换言之,你的软件的架构结构,和你们的团队开发运作方式是一致的。哈哈,字如其人!

img

因此,如果你们要达成一个好的软件架构,那就得先把团队搞好。比如微服务,就得先把团队建设成小而分散的规模,单体架构这使用集中办公的形式。

过早优化是万恶之源

正文:性能提升往往伴随着复杂度增加。在尚未明确性能瓶颈所在时贸然应用这种权衡,最终只会导致系统难以理解。

什么意思呢?开发初期,重点要放在清晰的设计上,而不是优化,你还不知道哪些代码是关键的、是性能瓶颈,因此你会很容易浪费很多时间在不关键的代码上。

20%的代码消耗80%的执行时间,你优化另外的不这样的代码,不仅没意义,而且还徒增风险。先让程序跑起来,再让它正确。

海勒姆定律

维基百科的原解释很让人迷糊,我捋了捋,其实意思就是,如果你的软件用的人多,那么一些 bug 其实会变成 feature 哈哈,懂了吧!

所以说,如果你的用户很多,那么做出任何变更,都会对一些人造成潜在的伤害。

很像那个微软,windows ,生态巨大,维护者自作「聪明」不断修复 bug ,从而导致很多新软件崩溃不兼容... 为了保证兼容,微软又恢复保留了古老的 bug。

童子军规则

让代码比你发现时更整洁。

意思就是说,开发时要养成习惯,如果发现有一些代码能优化,那就顺手优化一下,让代码干净一点。日积月累,会产生惊人的效果。

“让营地比你发现时更干净”这句箴言源自美国童子军及全球各地的童军组织。

持续的小改进可以随着时间的推移改变代码库。

你不需要它 定理

只要功能不是必要的,就别加。

换句官方的话,就是预判未来需求往往会导致过度设计,从而增加复杂性和维护问题。

就跟我们小时候计划我们的周末等假期一样,写一大堆东西,最后不切实际,扔掉了。

你现在正在写 A 模块,突然脑袋里想,未来可能有个 B ,会需要 A 做 xxx ,要不要搞个钩子???

不要这样!因为未来不一定会这样,过度工程化肯定是错的。用国内的古话就是,画蛇添足!

img

一口吃不成胖子,迭代开发、迭代开发,与时俱进,与时俱进。

布鲁克斯定律

一个进度落后的项目。人越多,那么会让项目更落后。

换言之,就是要警惕、注意以「多招程序员」作为解决项目延期的方案。

因为新人需要时间熟悉工作,会消耗团队成员的时间,降低生产力。

起源于 IBM 的 布鲁克斯 的经验:你不能通过让九位女性同时怀孕,就指望一个月内生出孩子。12名程序员一个月能完成一名程序员12个月的工作量这一假设,在软件开发中行不通。

高尔定律

一个可运行的复杂系统,总是从一个简单系统演变而来的。

从头开始设计一个复杂系统,永远不会奏效,必须从一个简单系统开始设计。

img

这就是 AI 时代的小白,不懂编程,怎么也搞不出来一个能跑的软件的最大原因!他们不知道软件开发是一点点写的,直接把需求一股脑模模糊糊的写给 ai,然后跑不动。

我们搞开发也是。应该先做出一个能运行的简单版本,然后迭代并逐步增加复杂性。

完全从头设计的复杂系统通常会失败,因为你无法预见所有的交互关系。这也是为什么我们创业项目都先搞 MVP 。

Facebook最初只是为哈佛学生设计的一个简单网站。如果马克·扎克伯格在 2004 年就试图从零构建 2026 年的 Facebook,它几乎肯定会因自身的复杂性而崩溃。

抽象泄漏定律

所有抽象的模型,都有漏洞!

老外有谚语「抽象没有免费午餐」。只要你为了解决一个问题,抽象了一个概念,试图隐藏复杂性。那它肯定有失效的场景。

比如 Java Python 抽象了内存管理,避免手动内存分配。但是依然会有一些时候会内存泄漏。

比如 HTTP 是互联网里一些概念抽象了一下,搞的这个「很快的请求」概念。但是延迟大了、数据包掉了,这个概念就不是这样了。

反正就是这个意思,使用高级工具,我们依然得了解一下底层运作机制。抽象不是完美的,我们得知道它的本质是啥。