代码简洁之道:软件基础现已免费
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 3天前 我很高兴地宣布,我将于11月20日在纽约市的AI工程师代码峰会上发言。过去几年关于软件工程的未来有很多不确定性。在这次演讲中,我将讨论我们可以应用的原则,以确保无论发生什么,那个未来对你的业务都是好的。 很想在那里见到你! 阅读更多 773 分享
Max Kanat-Alexander 6天前 从2011年到2015年左右我们停止每周例会,我几乎每周都参加Google代码健康小组的周会。这是一个非常棒的会议,有一个核心小组几乎总是参加,加上每周一些一次性参加的与会者,他们希望在他们领域获得关于代码质量、测试或重构问题的帮助。
大多数情况下,这个会议作为一个支持小组,为那些关心代码质量并希望在他们领域做点什么的人服务。他们会来,抱怨他们如何关心但难以让别人也关心。我们会支持他们,说我们真的很关心,他们应该继续努力,然后他们会回到他们的领域做伟大的事情。实际上令人惊讶的是,那个会议的许多与会者后来成为了Google最资深的技术负责人之一。(关于长期职业成功的一个好提示:如果你专注于做正确的事,尽管有反对或困难,从长远来看,这几乎总是对你的职业有利的。我们当然在代码健康小组中一次又一次地看到这种情况发生。)
然而,几乎每周,都会有人来参加会议问我们同样的问题:“我如何客观地测量代码复杂性?“周复一周,我们会给他们同样的答案:“没有办法做到,请不要这样做。”
这个小组的负责人代表了代码质量和重构领域一些世界上最有经验的工程师,我们随着时间的推移都得出了相同的结论:代码复杂性测量不起作用。所有尝试制作定量指标(圈复杂度、计算静态分析失败、确定内聚和耦合的算法)都失败了——它们引导团队走向错误的方向,并没有解决真正阻碍开发者的重要问题。
最终,我意识到为什么这些指标不起作用,而且永远不会起作用。这是因为代码"简单"的定义是:易于阅读、理解和正确修改。“阅读"和"理解"在那里本质上是主观的。只有人类能告诉你某物是否易于阅读。
有些人希望现代LLM能在这方面提供帮助。当我看到时我愿意相信,但现在这实际上是所有模型都一直_糟糕_的领域:告诉你你是否产生了高质量的输出。它们在发现特定问题并以代码审查的形式提供具体指导方面很好。但它们完全缺乏经验丰富的软件工程师在制作真正简单的软件系统方面所具有的判断力。无论你告诉它们多少次"要简单"或"编写好代码”,它们就是做不到。
所以这仍然是正确的:代码质量本质上是主观的,如果你想理解它,你需要关于它的主观数据。这是我见过的唯一有效的方法。 阅读更多 8717 分享
Max Kanat-Alexander 10月15日 我很高兴今年在2025年开发者生产力工程峰会上发表了一个主题演讲。我谈到了什么造就了伟大的开发者体验。特别是,这次演讲涵盖了我们在所有开发者体验工作中试图优化的三个核心事项。我希望它有所帮助! :) https://lnkd.in/g-AJtJ2b 阅读更多 815 分享
Max Kanat-Alexander 10月13日 为什么Google有如此伟大的开发者体验?它只是在这方面花了比任何人都多的钱吗?
嗯,是的,如果你把花在Google基础设施上的所有人力成本加起来,Google可能在开发者体验上花的钱比任何人都多。但这实际上不是Google在这方面成功的核心原因,因为Google开发者体验的早期_并没有_涉及很多工程师。它实际上涉及相对较少的一些体面工程师,他们随着时间的推移相当缓慢地构建工具。Google一些最受喜爱的工具最初总共只有三、四个人构建。
关键是这些工程师被允许专注于开发者基础设施的基础,无论需要多长时间才能做好。每个人都在构建面向开发者体验的长期全局最大值,而不是短期即时需求。非常好的工程师被赋予自由去问诸如"一个完美的构建工具应该是什么样子"这样的问题,然后尝试构建它。源代码控制、代码审查、编程语言基础设施、CI、IDE、公共库以及开发者体验的许多其他部分也是如此。当然,有时我们在过程中构建了糟糕的东西,但公司足够关心做好它,以至于我们(通常)回去修复它,最终。
Google开发者体验和速度的关键是这种对软件工程基础的关注。这也不仅仅是在开发者工具团队中,而是贯穿整个公司——Google的工程师比我在任何其他地方看到的都更关心代码质量、测试等。
行业中技术领导者在其他地方最常犯的错误之一是未能关注所有这些工程基础。代码库可维护吗?你有需要的高效可靠构建高质量软件的基本工具吗?是否有系统确保新软件工程师能够快速上手项目,并随着时间的推移提高他们的技能?等等。
相反,我经常看到领导者坚持在破碎的基础上紧急解决即时问题,没有任何计划能_真正_在未来解决这些基础。这有点像是一个酒店建造者,看到所有其他酒店都有很棒的顶层套房,然后坚持让团队建造一个美丽的顶层套房,而建筑却有裂缝的地基和漏水的管道。修复那个地基可能很困难,但如果你不修复,你肯定会后悔。
基础有时感觉抽象或不重要,因为它们不是你被要求交付的即时产品。但让我告诉你,如果你想_能够_交付_任何东西_,基础才是最重要的。 阅读更多 24043 分享
加载更多