Code Simplicity: The Fundamentals of Software is Now Free
May 16, 2022 by Max Kanat-Alexander
大约一年前,一位推特用户在一个主题帖中标记了我和其他一些编程书籍作者,描述了在他们国家获取计算机编程书籍所面临的障碍。我之前就隐约意识到这些问题——世界上有许多国家,一本书的美元价格可能相当于一个人整个星期的薪水。
我写书不是为了赚钱——我写书是为了传达信息和帮助他人。我通常认为,如果人们为一本书付了钱,他们更有可能真正去阅读它,而我的目的就是让人们阅读这本书,因为那是我让软件行业变得更好的唯一途径。这本书现在仍然在销售(这对一本计算机书籍来说很不寻常,因为它已经发布了十年),但它赚的钱对我并不重要——让人们读到这本书才对我重要。
当我意识到,如果必须付费,地球上就有庞大的人口群体被完全禁止合法阅读这本书时,我便与我在O‘Reilly的编辑合作,看看我们是否能让这本书完全免费。
事实证明,由于他们无法控制的复杂原因,他们无法在亚马逊或O’Reilly商店中让这本书免费。但他们可以给我这本书的分发权,去掉封面,让我免费分发!
所以,现在你可以免费下载 《Code Simplicity: The Fundamentals of Software》 了!我希望这能让更多的人阅读并理解软件设计的基本法则,并帮助软件开发的世界变得更好。
Share Click to share on Facebook (Opens in new window) Facebook Click to share on LinkedIn (Opens in new window) LinkedIn Click to share on Hacker News (Opens in new window) Hacker News Click to share on Reddit (Opens in new window) Reddit Click to share on Threads (Opens in new window) Threads Click to share on X (Opens in new window) X
Max Kanat-Alexander November 23
最近有很多关于如今有多少代码是“由”AI“编写”的讨论。然而,随着时间的推移,我认为这些指标变得比一开始更没有用了。
当我在使用Claude Code编写代码时,几乎100%的代码都是“由”Claude“编写”的。然而,这发生在我和这个智能体进行了大量来回交流之后。是的,从理论上讲,Claude“编写”了代码,但绝不是它自己独立完成的。我认为我们混淆了“AI独立完成了某项无需人类努力的事情”和“AI帮助人类完成了一项任务”这两个概念。
此外,如果你只看“有多少代码是由AI编写的”,那么Claude在任何一个特定任务上对我的生产力是净正面还是净负面影响将是完全看不见的。有一次,我和Claude来回交流了三个小时,生成了50行代码,而我自己写可能只需要45分钟。但另一次,我与Claude交互了十分钟,就完全解决了一个问题,否则我可能要花三个小时的研究才能仅仅理解如何解决。Claude在这两次中都“编写”了100%的代码。
我相信,今天的AI助手正在为软件工程师提供巨大的价值,并且它们正在改变我们的工作方式。但它们并非在所有情况下为所有人都提供同等的价值——有时甚至是净负面影响。仅仅跟踪“有多少代码是由AI编写的”并不能帮助任何人看清这一点,也无法帮助任何人真正找出如何让他们的开发人员更高效、更有效、更快乐的方法。
Max Kanat-Alexander November 3
我很高兴地宣布,我将于11月20日在纽约市的AI工程师代码峰会上发表演讲。过去几年,关于软件工程的未来是什么样子存在很多不确定性。在本次演讲中,我将讨论一些我们可以应用的原则,以确保无论发生什么,这个未来对你的业务都是有利的。
希望能在那里见到你!
Max Kanat-Alexander November 1
从2011年到大约2015年我们停止每周例会为止,我几乎每周都参加Google代码健康小组的周会。这是一个非常棒的会议,有一个几乎总是参加的核心小组,加上每周一些希望获得关于其领域代码质量、测试或重构问题帮助的一次性与会者。
大多数情况下,这个会议的功能是作为一个支持小组,为那些关心代码质量并希望在其领域有所作为的人服务。他们会过来,抱怨他们如何在意却难以让他人也在意。我们会支持他们,说我们真的很在意,他们应该坚持下去,然后他们会回到自己的领域去做伟大的事情。实际上,令人惊讶的是,那个会议的许多与会者后来成为了谷歌一些最高级的技术负责人。(关于长期职业成功的一个好建议:如果你专注于做正确的事情,尽管有反对或困难,从长远来看,这几乎总是对你的事业是正确的。我们确实在代码健康小组中一次又一次地看到这种情况发生。)
然而,几乎每周,都会有人出现在会议上问我们同一个问题:“我如何才能客观地衡量代码复杂度?”一周又一周,我们会给他们同样的答案:“没有办法做到,请不要尝试。”
这个小组的负责人代表了世界上在代码质量和重构领域最有经验的工程师,随着时间的推移,我们都得出了相同的结论:代码复杂度测量行不通。所有尝试建立量化指标(圈复杂度、统计静态分析失败、确定内聚和耦合的算法)的努力都失败了——它们将团队引向错误的道路,并没有解决真正阻碍开发人员的重要问题。
最终,我明白了为什么这些指标行不通,并且永远行不通。因为代码“简单”的定义是:易于阅读、理解和正确修改。其中的“阅读”和“理解”本质上是主观的。只有人类才能告诉你某样东西是否易于阅读。
有些人寄希望于现代大型语言模型能在这方面有所帮助。在看到之前我愿意相信这一点,但目前实际上所有模型在这方面都表现得很糟糕:告诉你是否产出了高质量的成果。它们在发现特定问题并以代码审查的形式提供具体指导方面表现尚可。但它们完全缺乏经验丰富的软件工程师在构建真正简单的软件系统方面所具有的判断力。无论你如何告诉它们要“简单”或“编写好代码”,它们就是做不到。
所以,这仍然是事实:代码质量本质上是主观的,如果你想理解它,你需要关于它的主观数据。这是我见过的唯一有效的方法。
Max Kanat-Alexander October 15
我非常高兴今年能在2025年开发者生产力工程峰会上发表主题演讲之一。我谈到了什么造就了出色的开发者体验。特别是,这次演讲涵盖了我们在所有开发者体验工作中试图优化的三个核心方面。希望对大家有所帮助! :) https://lnkd.in/g-AJtJ2b