软件设计基石:《代码简洁之道》现已免费开放

知名技术作家Max Kanat-Alexander宣布经典著作《代码简洁之道》免费开放下载,探讨软件设计基本原则、技术债务的真实代价,以及AI时代中确定性验证对代码质量的关键作用。

代码简洁之道:软件基础现已免费

2022年5月16日,作者:Max Kanat-Alexander

大约一年前,一位Twitter用户在一个讨论中提到了我和其他编程书籍作者,描述了在他们国家获取计算机编程书籍的障碍。我之前隐约意识到这些问题——世界上有许多国家,一本书的美元价格可能相当于一个人整周的工资。

我写书不是为了赚钱——我写书是为了传递信息并帮助人们。我通常认为,如果人们为一本书付费,他们更有可能真正阅读它,而重点是让人们阅读这本书,因为这是我改变软件行业向更好方向发展的唯一途径。这本书仍然在销售(这对于计算机书籍来说是不寻常的,因为它已经发布了十年),但它赚的钱对我来说并不重要——让人们阅读这本书对我来说才是重要的。

一旦我意识到,如果必须付费,地球上有一大群人完全无法合法阅读这本书,我就与O’Reilly的编辑合作,看看我们是否能让这本书完全免费。

结果发现,由于他们无法控制的复杂原因,他们无法在亚马逊或O’Reilly商店免费提供这本书。但他们可以给我这本书的分发权,去掉封面,让我免费分发!

所以,你现在可以免费下载《代码简洁之道:软件基础》了!我希望这能让更多人阅读和理解软件设计的基本法则,并帮助使软件开发的世界变得更好。

分享 点击在Facebook上分享(在新窗口中打开) Facebook
点击在LinkedIn上分享(在新窗口中打开) LinkedIn
点击在Hacker News上分享(在新窗口中打开) Hacker News
点击在Reddit上分享(在新窗口中打开) Reddit
点击在Threads上分享(在新窗口中打开) Threads
点击在X上分享(在新窗口中打开) X

7条评论 发表回复

sergey 说:
2022年5月16日晚上9:45
太棒了,现在许多编程书籍中最好的主要编程书是免费的。谢谢!
回复

Max Kanat-Alexander 说:
2022年6月7日凌晨2:03
谢谢,sergey!我很高兴能以这种方式帮助人们。
回复

STEVEN GORDON 说:
2022年5月17日上午8:32
事实上,测试在你的书中完全是被事后才想到的,这告诉我你对软件开发的理解存在漏洞。自动化测试需要优先进行,而不是最后。它是表达和验证代码意图的关键(而不是随着时间的推移变得越来越不真实的妄想注释),能够通过安全重构增加简洁性,并在整个生命周期中维护代码。
回复

Max Kanat-Alexander 说:
2022年6月7日凌晨2:03
嘿,Steven。我想你可能误解了这本书关于测试的意图或内容。关于这个话题有很多要说的,但我写的最好的总结在这里:https://www.codesimplicity.com/post/the-philosophy-of-testing/。
回复

murtagy 说:
2023年5月26日凌晨3:21
我想你没有在代码库中工作过,当测试追着你并锁定坏的接口和奇怪的合同时
回复

Yubraj Lama 说:
2022年6月20日凌晨12:12
《代码简洁之道》中的软件设计基本法则太棒了。谢谢Max。
回复

Max Kanat-Alexander 说:
2022年10月14日上午5:21
谢谢!
回复

发表回复取消回复

联系 关于 书:《理解软件》 书:《代码简洁之道》

输入您的邮箱…
订阅

Max Kanat-Alexander
7月28日
非常兴奋地宣布,我将在2025年开发者生产力工程峰会上发表主题演讲之一。我将谈论什么造就了伟大的开发者体验。我自1995年以来一直在技术领域工作,自2004年以来几乎全职专注于开发者体验。关于如何使开发者体验变得伟大,有一些基本的、普遍的真理,我将尽力在有限的时间内涵盖尽可能多的内容。希望能见到你。:)
阅读更多 89 11 分享

Max Kanat-Alexander
6月27日
我目前认为,AI代理能够成功生成的输出数量和质量取决于:

  1. 模型的质量。
  2. 代理的质量。
  3. 输入的质量(如提示或其他上下文)。
  4. 代理可以独立运行的确定性、客观验证的质量。
    我目前认为,除非你是模型开发者,否则最重要的部分是“确定性、客观验证”。
    简单来说,如果你告诉AI做某事,它需要某种方式能够自行验证它做了正确的事。在软件中,这通常意味着运行测试、linter等,如果系统做错了,就会失败。
    这意味着你的测试和验证工具越好,你从模型得到的输出就越好。这不仅仅是测试数量的问题。它们必须是好的测试,具有智能断言和良好的错误消息。
    这也意味着代理的成功涉及如何将任务分解成可以各自通过自动化测试、linter等客观验证的单个部分。
    需要注意的是,输入的质量也很重要,并且在我们的控制之下。如果我们编写更好的文档和更清晰的代码,代理会做得更好。令人惊讶的是,几乎一切帮助人类编写代码的东西也帮助代理。
    阅读更多 20 10 分享

Max Kanat-Alexander
6月4日
技术债务有价值的想法大多是一个神话。当你做出糟糕的软件工程决策时,它会在几小时、几天或几周内减慢你的速度。那是上限。许多人认为需要数月或数年才能看到在软件设计上偷工减料的影响,但这根本不是真的。它几乎立即开始。做正确的事的成本通常是几个小时,也许一天,而你几乎总是立即收回那个时间。也就是说,做对通常花费的时间与做错花费的时间相同。“等等,什么?怎么可能?我们偷工减料是为了节省时间!”结果几乎总是它根本没有节省你的时间!它使处理变更更加混乱。它使代码审查时间更长。它在测试期间以更混乱的方式失败,需要更长时间来调试。它几乎从未节省你的实际时间。
偶尔,你的路径上会有一些“岩石”如此巨大,你根本无法移动它。没有人应该花三个月设计一个新工具,只是为了你能一次发布一个一天的功能。但那是技术债务决策中极小的一部分。
这变得更加疯狂,因为如果你在过程中做对一切(你总是重构系统,使其看起来像是被设计成现在所做的),那么一切在整个过程中都保持相对容易。但如果你偷工减料,一切都会变得复合性地更加困难,以至于你生成没有人能移动的“岩石”。复杂性不是某种线性事物,你可以后来投入线性时间修复。你绝对可以陷入一种如此糟糕的情况,以至于你公司中没有人有时间或专业知识来修复它。
这一切感觉如此无辜:“让我们偷工减料吧,它会帮助我们满足这个截止日期”(一个通常是想像的截止日期,你可以推迟几周而没有后果)。“很难弄清楚如何做对,我们可以推迟吗?”然后砰,很快你发现自己陷入了一个沼泽,一切都很难,而且“我们不知道为什么!”
我最后留给你一件事:当我每天直接编码时,我在这方面完全 uncompromising。我基本上无法看糟糕的代码——我必须重构它,否则我无法工作。不知何故,在我整个职业生涯的那部分中,我从未错过一个截止日期。
阅读更多 93 42 分享

Max Kanat-Alexander
5月30日
我估计,每看到或被告知一万条坏建议,我才收到一条好建议。互联网充满坏建议,因为文明充满坏建议。文明充满坏建议,因为全球的教育大多不教人们思考、研究或确定什么是真实的。相反,它教人们记忆和重复事实,其中大多数是不重要、不真实或无用的。
所以总的来说,我们不应该惊讶互联网(尤其是社交媒体)充满不重要、不真实或无用的信息。并非全部如此——我在网上学到了大量非常有用的东西。有大量有价值的内容。我会说,人们对事物的意见,无论是在报纸、博客文章、论坛还是其他什么,很少具有那种价值。
那么,要点是什么?嗯,最好有一些方法在开始依赖或向他人重复之前确定某事是否重要或有用的。最简单的工具是说:“它有效吗?”这条数据是否可靠地帮助你完成某事?它100%有效,还是更少?
对于许多帖子,你会发现:这条数据根本无助于你做任何事。
阅读更多 21 9 分享

加载更多

© 2025 版权所有。由The Fox提供支持。 管理同意联系 关于 书:《理解软件》 书:《代码简洁之道》
转到顶部

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计