今日所Jian260425| 软件工程经典法则
1.Conway’s Law康威定律 Adding manpower to a late software project makes it later.
延期项目新增人手,只会延误更久。
3.Dunbar’s Number 邓巴数字
There is a cognitive limit of about 150 stable relationships one person can maintain.
人稳定社交关系上限约 150 人。
4.The Ringelmann Effect 林格尔曼效应
Individual productivity decreases as group size increases.
团队规模越大,个体效率越低。
5.Price’s Law 普莱斯定律
The square root of the total number of participants does 50% of the work.
核心少数人,完成半数工作。
6.Putt’s Law 帕特定律
Those who understand technology don’t manage it, and those who manage it don’t understand it.
懂技术者不管理,管理者不懂技术。
7.Peter Principle 彼得原理
In a hierarchy, every employee tends to rise to their level of incompetence.
员工终将晋升至不胜任的岗位。
8.Bus Factor 巴士系数
The minimum number of team members whose loss would put the project in serious trouble.
核心人员流失即重创项目的最少人数。
9.Dilbert Principle 呆伯特法则
Companies tend to promote incompetent employees to management to limit the damage they can do.
企业提拔庸人至管理岗,降低业务破坏。
Planning 规划
1.Premature Optimization 过早优化
-
Premature optimization is the root of all evil.
过早优化是万恶之源。
-
2.Parkinson’s Law 帕金森定律
-
Work expands to fill the time available for its completion.
工作会自动填满全部可用时间。
3.The Ninety-Ninety Rule 90/90 法则
-
The first 90% of the code accounts for the first 90% of development time; the remaining 10% accounts for the other 90%.
编码前九成快,最后一成极度耗时。
4.Hofstadter’s Law 霍夫施塔特定律
-
It always takes longer than you expect, even when you take into account Hofstadter’s Law.
事情耗时永远超出预期。
-
5.Goodhart’s Law 古德哈特定律
-
When a measure becomes a target, it ceases to be a good measure.
指标一旦成为考核目标,便不再客观有效。
-
6.Gilb’s Law 吉尔布法则
-
Anything you need to quantify can be measured in some way better than not measuring it.
凡事皆可量化,量化优于无衡量。
-
Architecture 架构

1.Hyrum’s Law 海勒姆定律
With a sufficient number of API users, all observable behaviors of your system will be depended on by somebody.
用户足够多时,系统一切可见行为都会被依赖。
-
2.Gall’s Law 加尔定律
A complex system that works is invariably found to have evolved from a simple system that worked.
成熟复杂系统,皆源自可用的简单系统。
-
3.The Law of Leaky Abstractions 抽象泄漏定律
All non-trivial abstractions, to some degree, are leaky.
所有复杂抽象,都会存在边界泄漏。
-
4.Tesler’s Law 泰斯勒定律(复杂度守恒)
Every application has an inherent amount of irreducible complexity that can only be shifted, not eliminated.
固有复杂度无法消除,只能转移。
-
5.CAP Theorem CAP 定理
A distributed system can guarantee only two of: consistency, availability, and partition tolerance.
分布式系统无法同时满足一致性、可用性、分区容错。
-
6.Second-System Effect 第二系统效应
Small, successful systems tend to be followed by overengineered, bloated replacements.
初代精简成功,续作往往过度设计、臃肿。
-
7.Fallacies of Distributed Computing 分布式计算误区
A set of eight false assumptions that new distributed system designers often make.
-
分布式设计新手常见八大错误假设。
-
8.Law of Unintended Consequences 意外后果定律
Whenever you change a complex system, expect surprise.
修改复杂系统,必产生意外副作用。
-
9.Zawinski’s Law 扎温斯基定律
-
Every program attempts to expand until it can read mail.
所有程序最终都会无限扩张功能。
Quality 质量
-
1.The Boy Scout Rule 童子军规则
Leave the code better than you found it.
代码维护,做到离场比进场更整洁。
-
2.Murphy’s Law 墨菲定律
-
Anything that can go wrong will go wrong.
凡事可能出错,就一定会出错。
-
3.Postel’s Law 波斯特尔法则
Be conservative in what you do, be liberal in what you accept from others.
-
输出严谨保守,输入兼容包容。
-
4.Broken Windows Theory 破窗理论
Don’t leave broken windows unrepaired.
-
勿放任劣质代码、缺陷设计堆积。
-
5.Technical Debt 技术债务
Technical Debt is everything that slows us down when developing software.
-
阻碍迭代开发的历史遗留问题。
-
6.Linus’s Law 林纳斯定律
Given enough eyeballs, all bugs are shallow.
多人审查,漏洞无处隐藏。
-
7.Kernighan’s Law 克尼汉定律
Debugging is twice as hard as writing the code.
-
调试难度是编码的两倍。
-
8.Testing Pyramid 测试金字塔
Many unit tests, fewer integration tests, few UI tests.
单元测试为主,集成次之,UI 测试最少。
9.Pesticide Paradox 杀虫剂悖论
Repeatedly running the same tests becomes less effective over time.
重复测试用例,漏洞检出效率持续下降。
10.Lehman’s Laws of Software Evolution 软件演化定律
Software that reflects the real world must evolve, and that evolution has predictable limits.
业务软件必须持续迭代,且演化存在边界。
11.Sturgeon’s Law 斯特金定律
90% of everything is crap.
世间九成事物皆平庸。
Scale 规模化
1.Amdahl’s Law 阿姆达尔定律
Parallel speedup is limited by non-parallelizable work.
并行加速上限由串行部分决定。
2.Gustafson’s Law 古斯塔夫森定律
Increase problem size to gain major parallel speedup.
扩大业务规模,可提升并行收益。
3.Metcalfe’s Law 梅特卡夫定律
Network value is proportional to the square of user numbers.
网络价值与用户数平方成正比。
Design 设计
1.YAGNI
Don’t add functionality until it is necessary.
无需之物,绝不提前开发。
2.DRY (Don’t Repeat Yourself)
Every piece of knowledge has one single authoritative representation.杜绝代码与逻辑重复。
3.KISS (Keep It Simple, Stupid)
Designs and systems should be as simple as possible.
设计尽量简洁,拒绝冗余复杂。
4.SOLID Principles SOLID 原则
Five core guidelines for maintainable, scalable software design.
面向对象五大核心设计准则。
5.Law of Demeter 迪米特法则
An object should only interact with its immediate friends.
减少对象耦合,只与直接关联方交互。
6.Principle of Least Astonishment 最小惊讶原则
System behavior should match user intuition.
产品与接口行为,符合使用者直觉。
Decisions 决策与认知

1.Dunning-Kruger Effect 达克效应
The less you know, the more confident you are.
认知越匮乏,盲目自信越强。
2.Hanlon’s Razor 汉隆剃刀
Never attribute to malice what can be explained by carelessness.
能用疏忽解释,就不归于恶意。
3.Occam’s Razor 奥卡姆剃刀
The simplest explanation is usually correct.
最简解释,往往最接近真相。
4.Sunk Cost Fallacy 沉没成本谬误
Persist in a choice due to prior investment.
因过往投入,不愿及时止损。
5.The Map Is Not the Territory 地图非疆域
Models and descriptions are not real reality.
抽象模型永远不等于真实世界。
6.Confirmation Bias 确认偏误
Favor information that supports existing beliefs.
主动偏爱符合自身观点的信息。
7.Amara’s Law 阿玛拉定律
Overestimate tech short-term, underestimate long-term impact.
短期高估技术,长期低估其影响。
8.The Lindy Effect 林迪效应
The longer something exists, the longer it will last.
-
存续越久的事物,生命力越强。
9.First Principles Thinking 第一性原理
Break problems down to basic facts and rebuild solutions.
拆解底层逻辑,从头推导方案。
10.Inversion 逆向思考
Solve problems by analyzing negative outcomes first.
反向推演最坏结果,规避风险。
11.Pareto Principle (80/20 Rule) 帕累托法则
80% of problems come from 20% of causes.
二八定律:少数关键,决定多数结果。
12.Cunningham’s Law 坎宁安定律
The fastest way to get a right answer online is to post a wrong one.
网上纠错,比提问更快获得答案。
End
夜雨聆风


