<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>软件工程 on Luca's Blog</title><link>https://wlj.me/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/</link><description>Recent content in 软件工程 on Luca's Blog</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Sun, 03 May 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://wlj.me/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>软件工程定律网站采集</title><link>https://wlj.me/posts/laws-of-software-engineering/</link><pubDate>Sun, 03 May 2026 10:00:00 +0800</pubDate><guid>https://wlj.me/posts/laws-of-software-engineering/</guid><description>&lt;p>&lt;a href="https://lawsofsoftwareengineering.com/">lawsofsoftwareengineering.com&lt;/a> 这个站做得很漂亮，配色、卡片排版都挺花心思。&lt;/p>
&lt;p>首页每张卡片一句话，点进去详情页约 1300 字，含定义 / Takeaways / 例子 / 出处 / 推荐阅读 / 相关定律。&lt;/p>
&lt;p>内容都是 Wikipedia 上能查到的经典概念，没有原创理论。它的价值是集中收纳、视觉好看、结构化重述，不是新见解。当 reference 用足够，当 insight 没什么。&lt;/p>
&lt;p>学习一些名词也挺好。下面给中英对照，中文是严格按英文翻译的，不扩写。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>#&lt;/th>
 &lt;th>名称&lt;/th>
 &lt;th>英文描述&lt;/th>
 &lt;th>中文描述&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>1&lt;/td>
 &lt;td>Conway&amp;rsquo;s Law&lt;br>康威定律&lt;/td>
 &lt;td>Organizations design systems that mirror their own communication structure.&lt;/td>
 &lt;td>组织设计的系统会反映其自身的沟通结构。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>2&lt;/td>
 &lt;td>Premature Optimization&lt;br>过早优化&lt;/td>
 &lt;td>Premature optimization is the root of all evil.&lt;/td>
 &lt;td>过早优化是万恶之源。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>3&lt;/td>
 &lt;td>Hyrum&amp;rsquo;s Law&lt;br>海勒姆定律&lt;/td>
 &lt;td>With a sufficient number of API users, all observable behaviors of your system will be depended on by somebody.&lt;/td>
 &lt;td>当 API 用户数量足够多时，系统所有可观察到的行为都会被某人依赖。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>4&lt;/td>
 &lt;td>The Boy Scout Rule&lt;br>童子军规则&lt;/td>
 &lt;td>Leave the code better than you found it.&lt;/td>
 &lt;td>让代码比你来时更好。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>5&lt;/td>
 &lt;td>YAGNI&lt;br>你不会用到的&lt;/td>
 &lt;td>Don&amp;rsquo;t add functionality until it is necessary.&lt;/td>
 &lt;td>在功能必要之前不要添加它。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>6&lt;/td>
 &lt;td>Brooks&amp;rsquo;s Law&lt;br>布鲁克斯定律&lt;/td>
 &lt;td>Adding manpower to a late software project makes it later.&lt;/td>
 &lt;td>给延期的软件项目增加人手会让它更晚。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>7&lt;/td>
 &lt;td>Gall&amp;rsquo;s Law&lt;br>盖尔定律&lt;/td>
 &lt;td>A complex system that works is invariably found to have evolved from a simple system that worked.&lt;/td>
 &lt;td>能运转的复杂系统，无一例外是从能运转的简单系统演化而来的。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>8&lt;/td>
 &lt;td>The Law of Leaky Abstractions&lt;br>抽象漏洞定律&lt;/td>
 &lt;td>All non-trivial abstractions, to some degree, are leaky.&lt;/td>
 &lt;td>所有非平凡的抽象，都在某种程度上有漏洞。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>9&lt;/td>
 &lt;td>Tesler&amp;rsquo;s Law&lt;br>泰斯勒定律&lt;/td>
 &lt;td>Every application has an inherent amount of irreducible complexity that can only be shifted, not eliminated.&lt;/td>
 &lt;td>每个应用都有一定量不可削减的固有复杂度，只能转移，不能消除。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>10&lt;/td>
 &lt;td>CAP Theorem&lt;br>CAP 定理&lt;/td>
 &lt;td>A distributed system can guarantee only two of: consistency, availability, and partition tolerance.&lt;/td>
 &lt;td>分布式系统只能在一致性、可用性、分区容忍性中保证两项。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>11&lt;/td>
 &lt;td>Second-System Effect&lt;br>第二系统效应&lt;/td>
 &lt;td>Small, successful systems tend to be followed by overengineered, bloated replacements.&lt;/td>
 &lt;td>小而成功的系统之后，往往跟着过度工程、臃肿的替代品。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>12&lt;/td>
 &lt;td>Fallacies of Distributed Computing&lt;br>分布式计算谬误&lt;/td>
 &lt;td>A set of eight false assumptions that new distributed system designers often make.&lt;/td>
 &lt;td>分布式系统新手常犯的八条错误假设。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>13&lt;/td>
 &lt;td>Law of Unintended Consequences&lt;br>意外后果定律&lt;/td>
 &lt;td>Whenever you change a complex system, expect surprise.&lt;/td>
 &lt;td>每当你改动一个复杂系统，都要预期会有意外。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>14&lt;/td>
 &lt;td>Zawinski&amp;rsquo;s Law&lt;br>扎文斯基定律&lt;/td>
 &lt;td>Every program attempts to expand until it can read mail.&lt;/td>
 &lt;td>每个程序都会扩张到能收发邮件为止。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>15&lt;/td>
 &lt;td>Dunbar&amp;rsquo;s Number&lt;br>邓巴数&lt;/td>
 &lt;td>There is a cognitive limit of about 150 stable relationships one person can maintain.&lt;/td>
 &lt;td>一个人能维持的稳定关系存在约 150 人的认知上限。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>16&lt;/td>
 &lt;td>The Ringelmann Effect&lt;br>林格尔曼效应&lt;/td>
 &lt;td>Individual productivity decreases as group size increases.&lt;/td>
 &lt;td>群体规模增大时，个人生产力下降。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>17&lt;/td>
 &lt;td>Price&amp;rsquo;s Law&lt;br>普赖斯定律&lt;/td>
 &lt;td>The square root of the total number of participants does 50% of the work.&lt;/td>
 &lt;td>参与者总数的平方根的人，完成 50% 的工作。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>18&lt;/td>
 &lt;td>Putt&amp;rsquo;s Law&lt;br>普特定律&lt;/td>
 &lt;td>Those who understand technology don&amp;rsquo;t manage it, and those who manage it don&amp;rsquo;t understand it.&lt;/td>
 &lt;td>懂技术的人不管理技术，管理技术的人不懂技术。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>19&lt;/td>
 &lt;td>Peter Principle&lt;br>彼得原理&lt;/td>
 &lt;td>In a hierarchy, every employee tends to rise to their level of incompetence.&lt;/td>
 &lt;td>在层级体系中，每个员工都倾向于上升到其不胜任的层级。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>20&lt;/td>
 &lt;td>Bus Factor&lt;br>巴士因子&lt;/td>
 &lt;td>The minimum number of team members whose loss would put the project in serious trouble.&lt;/td>
 &lt;td>失去之后会让项目陷入严重麻烦的最少团队成员数。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>21&lt;/td>
 &lt;td>Dilbert Principle&lt;br>呆伯特原理&lt;/td>
 &lt;td>Companies tend to promote incompetent employees to management to limit the damage they can do.&lt;/td>
 &lt;td>公司倾向于把不胜任的员工提到管理岗，以限制他们能造成的损害。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>22&lt;/td>
 &lt;td>Parkinson&amp;rsquo;s Law&lt;br>帕金森定律&lt;/td>
 &lt;td>Work expands to fill the time available for its completion.&lt;/td>
 &lt;td>工作会扩张到填满可用于完成它的时间。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>23&lt;/td>
 &lt;td>The Ninety-Ninety Rule&lt;br>九十-九十法则&lt;/td>
 &lt;td>The first 90% of the code accounts for the first 90% of development time; the remaining 10% accounts for the other 90%.&lt;/td>
 &lt;td>前 90% 的代码占前 90% 的开发时间；剩下 10% 的代码占另外 90% 的开发时间。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>24&lt;/td>
 &lt;td>Hofstadter&amp;rsquo;s Law&lt;br>侯世达定律&lt;/td>
 &lt;td>It always takes longer than you expect, even when you take into account Hofstadter&amp;rsquo;s Law.&lt;/td>
 &lt;td>它总是比你预期的更久，即使你已经把侯世达定律考虑进去。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>25&lt;/td>
 &lt;td>Goodhart&amp;rsquo;s Law&lt;br>古德哈特定律&lt;/td>
 &lt;td>When a measure becomes a target, it ceases to be a good measure.&lt;/td>
 &lt;td>当一个衡量指标成为目标时，它就不再是一个好指标。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>26&lt;/td>
 &lt;td>Gilb&amp;rsquo;s Law&lt;br>吉尔布定律&lt;/td>
 &lt;td>Anything you need to quantify can be measured in some way better than not measuring it.&lt;/td>
 &lt;td>任何你需要量化的东西，都能以某种比不衡量更好的方式被衡量。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>27&lt;/td>
 &lt;td>Murphy&amp;rsquo;s Law / Sod&amp;rsquo;s Law&lt;br>墨菲定律&lt;/td>
 &lt;td>Anything that can go wrong will go wrong.&lt;/td>
 &lt;td>任何可能出错的事都会出错。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>28&lt;/td>
 &lt;td>Postel&amp;rsquo;s Law&lt;br>波斯特尔定律&lt;/td>
 &lt;td>Be conservative in what you do, be liberal in what you accept from others.&lt;/td>
 &lt;td>自己发出的要保守，接受别人的要宽容。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>29&lt;/td>
 &lt;td>Broken Windows Theory&lt;br>破窗理论&lt;/td>
 &lt;td>Don&amp;rsquo;t leave broken windows (bad designs, wrong decisions, or poor code) unrepaired.&lt;/td>
 &lt;td>不要让破窗（糟糕的设计、错误的决策或差的代码）放着不修。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>30&lt;/td>
 &lt;td>Technical Debt&lt;br>技术债&lt;/td>
 &lt;td>Technical Debt is everything that slows us down when developing software.&lt;/td>
 &lt;td>技术债就是开发软件时一切让我们变慢的东西。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>31&lt;/td>
 &lt;td>Linus&amp;rsquo;s Law&lt;br>林纳斯定律&lt;/td>
 &lt;td>Given enough eyeballs, all bugs are shallow.&lt;/td>
 &lt;td>只要有足够多的眼睛，所有 bug 都是浅显的。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>32&lt;/td>
 &lt;td>Kernighan&amp;rsquo;s Law&lt;br>柯尼汉定律&lt;/td>
 &lt;td>Debugging is twice as hard as writing the code in the first place.&lt;/td>
 &lt;td>调试的难度是最初写代码难度的两倍。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>33&lt;/td>
 &lt;td>Testing Pyramid&lt;br>测试金字塔&lt;/td>
 &lt;td>A project should have many fast unit tests, fewer integration tests, and only a small number of UI tests.&lt;/td>
 &lt;td>一个项目应该有大量快速的单元测试、较少的集成测试，以及只有少量的 UI 测试。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>34&lt;/td>
 &lt;td>Pesticide Paradox&lt;br>农药悖论&lt;/td>
 &lt;td>Repeatedly running the same tests becomes less effective over time.&lt;/td>
 &lt;td>反复运行相同的测试，随着时间推移会越来越无效。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>35&lt;/td>
 &lt;td>Lehman&amp;rsquo;s Laws of Software Evolution&lt;br>莱曼软件演化定律&lt;/td>
 &lt;td>Software that reflects the real world must evolve, and that evolution has predictable limits.&lt;/td>
 &lt;td>反映真实世界的软件必须演化，而这种演化有可预测的极限。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>36&lt;/td>
 &lt;td>Sturgeon&amp;rsquo;s Law&lt;br>斯特金定律&lt;/td>
 &lt;td>90% of everything is crap.&lt;/td>
 &lt;td>任何东西的 90% 都是垃圾。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>37&lt;/td>
 &lt;td>Amdahl&amp;rsquo;s Law&lt;br>阿姆达尔定律&lt;/td>
 &lt;td>The speedup from parallelization is limited by the fraction of work that cannot be parallelized.&lt;/td>
 &lt;td>并行化带来的加速比，受限于无法并行的那部分工作的比例。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>38&lt;/td>
 &lt;td>Gustafson&amp;rsquo;s Law&lt;br>古斯塔夫森定律&lt;/td>
 &lt;td>It is possible to achieve significant speedup in parallel processing by increasing the problem size.&lt;/td>
 &lt;td>通过增大问题规模，并行处理可以获得显著的加速。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>39&lt;/td>
 &lt;td>Metcalfe&amp;rsquo;s Law&lt;br>梅特卡夫定律&lt;/td>
 &lt;td>The value of a network is proportional to the square of the number of users.&lt;/td>
 &lt;td>网络的价值与用户数量的平方成正比。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>40&lt;/td>
 &lt;td>DRY&lt;br>不要重复&lt;/td>
 &lt;td>Every piece of knowledge must have a single, unambiguous, authoritative representation.&lt;/td>
 &lt;td>每一项知识都必须有单一、明确、权威的表达。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>41&lt;/td>
 &lt;td>KISS&lt;br>保持简单&lt;/td>
 &lt;td>Designs and systems should be as simple as possible.&lt;/td>
 &lt;td>设计和系统应该尽可能简单。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>42&lt;/td>
 &lt;td>SOLID Principles&lt;br>SOLID 原则&lt;/td>
 &lt;td>Five main guidelines that enhance software design, making code more maintainable and scalable.&lt;/td>
 &lt;td>五条提升软件设计的主要准则，让代码更易维护和扩展。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>43&lt;/td>
 &lt;td>Law of Demeter&lt;br>迪米特法则&lt;/td>
 &lt;td>An object should only interact with its immediate friends, not strangers.&lt;/td>
 &lt;td>一个对象应只与其直接的朋友交互，不与陌生人交互。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>44&lt;/td>
 &lt;td>Principle of Least Astonishment&lt;br>最小惊讶原则&lt;/td>
 &lt;td>Software and interfaces should behave in a way that least surprises users and other developers.&lt;/td>
 &lt;td>软件和界面的行为方式，应当让用户和其他开发者最不感到惊讶。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>45&lt;/td>
 &lt;td>Dunning-Kruger Effect&lt;br>邓宁-克鲁格效应&lt;/td>
 &lt;td>The less you know about something, the more confident you tend to be.&lt;/td>
 &lt;td>你对某件事知道得越少，就越倾向于自信。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>46&lt;/td>
 &lt;td>Hanlon&amp;rsquo;s Razor&lt;br>汉隆剃刀&lt;/td>
 &lt;td>Never attribute to malice that which is adequately explained by stupidity or carelessness.&lt;/td>
 &lt;td>凡能用愚蠢或粗心充分解释的事，绝不归咎于恶意。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>47&lt;/td>
 &lt;td>Occam&amp;rsquo;s Razor&lt;br>奥卡姆剃刀&lt;/td>
 &lt;td>The simplest explanation is often the most accurate one.&lt;/td>
 &lt;td>最简单的解释通常是最准确的。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>48&lt;/td>
 &lt;td>Sunk Cost Fallacy&lt;br>沉没成本谬误&lt;/td>
 &lt;td>Sticking with a choice because you&amp;rsquo;ve invested time or energy in it, even when walking away helps you.&lt;/td>
 &lt;td>因为已经投入了时间或精力而坚持某个选择，即使放弃才对你有益。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>49&lt;/td>
 &lt;td>The Map Is Not the Territory&lt;br>地图不是疆域&lt;/td>
 &lt;td>Our representations of reality are not the same as reality itself.&lt;/td>
 &lt;td>我们对现实的表征并不等同于现实本身。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>50&lt;/td>
 &lt;td>Confirmation Bias&lt;br>确认偏误&lt;/td>
 &lt;td>A tendency to favor information that supports our existing beliefs or ideas.&lt;/td>
 &lt;td>一种偏爱支持我们既有信念或观点的信息的倾向。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>51&lt;/td>
 &lt;td>The Hype Cycle &amp;amp; Amara&amp;rsquo;s Law&lt;br>炒作周期与阿玛拉定律&lt;/td>
 &lt;td>We tend to overestimate the effect of a technology in the short run and underestimate the impact in the long run.&lt;/td>
 &lt;td>我们倾向于高估一项技术的短期效果，低估其长期影响。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>52&lt;/td>
 &lt;td>The Lindy Effect&lt;br>林迪效应&lt;/td>
 &lt;td>The longer something has been in use, the more likely it is to continue being used.&lt;/td>
 &lt;td>一件东西被使用的时间越长，就越有可能继续被使用。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>53&lt;/td>
 &lt;td>First Principles Thinking&lt;br>第一性原理&lt;/td>
 &lt;td>Breaking a complex problem into its most basic blocks and then building up from there.&lt;/td>
 &lt;td>把一个复杂问题拆解为最基本的模块，再从那里向上构建。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>54&lt;/td>
 &lt;td>Inversion&lt;br>反转思维&lt;/td>
 &lt;td>Solving a problem by considering the opposite outcome and working backward from it.&lt;/td>
 &lt;td>通过考虑相反的结果并从中逆推，来解决问题。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>55&lt;/td>
 &lt;td>Pareto Principle&lt;br>帕累托原则&lt;/td>
 &lt;td>80% of the problems result from 20% of the causes.&lt;/td>
 &lt;td>80% 的问题来自 20% 的原因。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>56&lt;/td>
 &lt;td>Cunningham&amp;rsquo;s Law&lt;br>坎宁安定律&lt;/td>
 &lt;td>The best way to get the correct answer on the Internet is not to ask a question, it&amp;rsquo;s to post the wrong answer.&lt;/td>
 &lt;td>在互联网上得到正确答案的最佳方式不是提问，而是发一个错误答案。&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description></item></channel></rss>