<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>软件工程 on AxerZone</title><link>https://enchanting-vacherin-946011.netlify.app/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/</link><description>Recent content in 软件工程 on AxerZone</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>© 2026 Weiming</copyright><lastBuildDate>Mon, 18 May 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://enchanting-vacherin-946011.netlify.app/tags/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>重读 Fred Brooks：没有银弹</title><link>https://enchanting-vacherin-946011.netlify.app/posts/fred-brooks-no-silver-bullet-notes/</link><pubDate>Mon, 18 May 2026 10:00:00 +0800</pubDate><guid>https://enchanting-vacherin-946011.netlify.app/posts/fred-brooks-no-silver-bullet-notes/</guid><description>&lt;p&gt;作者：Fred Brooks&lt;/p&gt;
&lt;p&gt;原文链接：&lt;a href="https://cse.msu.edu/~cse814/Readings/no-silver-bullet.pdf" target="_blank" rel="noreferrer"&gt;No Silver Bullet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fred Brooks 的《No Silver Bullet》是软件工程领域最重要的文章之一。它讨论的问题到今天仍然存在：为什么软件开发很难？为什么新语言、新工具、新方法、新流程总是承诺巨大提升，却很少真正消除软件项目的根本困难？Brooks 的答案是，软件复杂性分为本质复杂度和偶然复杂度。工具可以减少偶然复杂度，但很难消灭本质复杂度。&lt;/p&gt;
&lt;p&gt;这篇文章适合每个程序员读，尤其适合在技术热潮中读。每隔几年，行业都会出现新的“银弹”：可视化开发、面向对象、微服务、低代码、云原生、区块链、AI 编程助手。它们有些确实有用，甚至非常有用，但如果把它们想象成能自动解决软件工程困难的魔法，就会重演 Brooks 批评的错误。&lt;/p&gt;

&lt;h2 class="relative group"&gt;本质复杂度来自问题本身
 &lt;div id="本质复杂度来自问题本身" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e6%9c%ac%e8%b4%a8%e5%a4%8d%e6%9d%82%e5%ba%a6%e6%9d%a5%e8%87%aa%e9%97%ae%e9%a2%98%e6%9c%ac%e8%ba%ab" aria-label="锚点"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;Brooks 所说的本质复杂度，来自软件要表达现实世界的复杂需求。软件不是重复制造同一个物理零件，而是在不断描述规则、状态、边界、例外、协作和变化。一个业务系统难，不只是因为代码难写，而是因为业务本身有很多相互牵制的概念：权限、流程、异常、历史数据、用户习惯、组织责任、法规约束、性能要求。&lt;/p&gt;</description></item><item><title>重读 Joel Spolsky：抽象泄漏定律</title><link>https://enchanting-vacherin-946011.netlify.app/posts/joel-spolsky-leaky-abstractions-notes/</link><pubDate>Mon, 18 May 2026 09:50:00 +0800</pubDate><guid>https://enchanting-vacherin-946011.netlify.app/posts/joel-spolsky-leaky-abstractions-notes/</guid><description>&lt;p&gt;作者：Joel Spolsky&lt;/p&gt;
&lt;p&gt;原文链接：&lt;a href="https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/" target="_blank" rel="noreferrer"&gt;The Law of Leaky Abstractions&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Joel Spolsky 的《The Law of Leaky Abstractions》是程序员世界里非常经典的一篇文章。它讲了一个看似简单、却经常被忽略的事实：所有非平凡抽象都会泄漏。框架、库、协议、语言、数据库、云服务、可视化工具，都在试图隐藏复杂性，但复杂性不会真的消失。某些时候，被隐藏的底层细节会突然冒出来，迫使你理解它。&lt;/p&gt;
&lt;p&gt;这篇文章适合技术博客，是因为它能解释很多学习和工程中的挫败感。新手常常以为自己只要学会一个高级工具，就可以跳过底层；团队也常常以为引入一个平台，就能消除复杂性。结果一旦系统出问题，抽象边界开始破裂，大家才发现自己并不知道网络、文件系统、数据库事务、构建流程或运行时到底发生了什么。&lt;/p&gt;

&lt;h2 class="relative group"&gt;抽象提高效率，但不消灭现实
 &lt;div id="抽象提高效率但不消灭现实" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#%e6%8a%bd%e8%b1%a1%e6%8f%90%e9%ab%98%e6%95%88%e7%8e%87%e4%bd%86%e4%b8%8d%e6%b6%88%e7%81%ad%e7%8e%b0%e5%ae%9e" aria-label="锚点"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;软件工程离不开抽象。没有抽象，我们不可能写大型系统。高级语言隐藏机器码，操作系统隐藏硬件细节，数据库隐藏磁盘和索引，HTTP 框架隐藏套接字，ORM 隐藏 SQL，云平台隐藏服务器。每一层抽象都让人可以在更高层次上思考问题。&lt;/p&gt;</description></item></channel></rss>