代码简洁性:软件开发的科学
2012年3月28日 by Max Kanat-Alexander
如果每位软件开发者都能获得长期经验的知识,而不必经历反复失败的痛苦,会怎样?如果软件开发过程不是持续混乱的复杂性和争论,而是每个程序员都能理解的理智、有序的进展,会怎样?如果所有程序员及其经理在讨论软件开发决策时有一个共同的基础——一个基于事实而非意见或权威的共同基础,并且实际上有助于决定日常软件项目该做什么,会怎样?
如果软件开发是一门科学——一门有法律、规则、事实和定义的科学,能明确告诉你该采取哪些方向、避免哪些方向,会怎样?不是一个限制你只使用某种特定方法的教条系统,而是一系列原则,让你自由思考并为自己的情况做出正确决策,会怎样?
如果所有这些都在一本书中,那本书只有90页长,并且软件行业的每个人——无论是不是程序员——都能理解,会怎样?它会改变世界吗?自己来发现吧:《代码简洁性:软件开发的科学》。
我花了过去几年时间开发、测试和完善一系列软件开发的科学定律。我所做的一些事情,你在这个博客中已经看到,但这本书不仅仅是这些文章的重复。它是关于这门新科学的完整、有组织的论述——一系列原则,我希望不仅能改变你的软件,还能为作为软件开发者的你带来理智、秩序和快乐。然后,一旦你的团队读了它,它将为你团队的方向和讨论带来理解和洞察。最后,当每位软件开发者都读了它,它将改变软件开发的世界。
但这一切从这里开始,从你开始。帮助我改变世界。你所需要做的就是读一本书,然后如果你觉得从中有所收获,告诉其他人,这样也许他们也会读它。直接从O’Reilly获取,有印刷版和所有电子阅读器版本,在4月4日前以50%折扣出售。在Kindle商店中可用,并在许多其他在线书店有印刷版。
-Max
评论
Matt Doar 说:2012年3月28日下午2:49 我已经订购了我的副本! 回复
Max Kanat-Alexander 说:2012年5月9日下午9:47 太棒了!回复
Alex Vincent 说:2012年3月28日下午10:37 它在我亚马逊购物车里。 回复
Reilly Sweetland 说:2012年3月29日上午8:14 我上周末买了这本书,几乎读完了。由于一个简单的软件设计决策,它已经节省了大约50小时的未来维护麻烦。花在规划和设计软件上的时间是值得的。花在学习软件设计上的时间是指数级值得的。干得好,Max——谢谢你! 回复
Max Kanat-Alexander 说:2012年5月9日下午9:47 哇,太棒了。哈哈哈,关于花时间学习软件设计的观点很好!-Max回复
Ash 说:2012年4月1日下午10:12 订购我的副本。谢谢! 回复
Max Kanat-Alexander 说:2012年5月9日下午9:47 哇哦!回复
Ahmed 说:2012年4月3日下午10:43 恭喜Max。干得好,我现在就订购我的电子版,inshalla。谢谢,Ahmed。 回复
Max Kanat-Alexander 说:2012年5月9日下午9:46 谢谢Ahmed!太棒了!回复
Arun Saha 说:2012年4月7日上午10:01 从O’Reilly买了电子书,开始阅读,很享受! 回复
Max Kanat-Alexander 说:2012年5月9日下午9:46 太棒了!回复
Alex Vincent 说:2012年4月30日下午9:30 如果你在旧金山湾区,我能安排签名吗?这是一本相当好的书,但是:“不够长;一天读完”:p(开玩笑,长度很好。Coding Horror的Jeff Atwood可能也会喜欢这本书。) 回复
Max Kanat-Alexander 说:2012年5月9日下午9:46 嘿Alex!我在湾区。如果Jeff读了它,我会很感兴趣知道他的想法。不过,我希望他读的是几天后发布的修订版,而不是当前版本。-Max回复
Albert 说:2012年5月10日下午12:02 Max,如果我买Kindle版本,我会自动得到修订版吗? 回复
Max Kanat-Alexander 说:2012年5月12日下午6:31 嘿Albert!实际上,我不确定;这将是我的第一次修订,所以我不知道它是如何工作的。至少,当你购买Kindle版本时,有机会使用书末出现的链接以5美元“升级”到O’Reilly的无DRM版本。O’Reilly版本肯定免费更新。回复
Ken Penn 说:2012年6月6日下午12:12 听完网络直播后买了我的副本。我之后立即写代码,仅仅听讲就帮助我让函数更简单了一些。 回复
Ken Penn 说:2012年6月6日下午12:13 Max——请发布你何时举行聚会,我在湾区。 回复
Robert McClain 说:2012年9月25日上午2:15 一个有趣的讨论值得评论。我认为你应该多写这个话题,它可能不是一个禁忌话题,但通常人们不够谈论这样的话题。干杯。 回复
Lynn Maddox 说:2012年10月17日上午2:04 Max Kanat-Alexander的《价值便利》(由O’Reilly于2012年出版)是那种你可能会与年轻或熟练设计师分享的指南,并说:“花几天时间读这个,然后周四我们讨论你的风格。”有许多可引用的段落、精辟的格言和作为解释、信息、指南和规则方式的公理。 回复
JavaScript Resources | brianbar.net 说:2015年8月5日下午12:57 […]初始时间可以更好地花在学习快速掌握事物上,借助像《代码简洁性》、《实用思维与学习》、《企业应用架构模式》和《[…]这样的书籍。 回复
What is Data Science? – Data On Scale 说:2016年1月15日上午4:07 […]一个清晰和科学的方法来定义它,就像计算机科学、软件开发科学和许多其他学科一样。所以我决定写这篇文章,期望产生一些发现[…] 回复
Code Simplicity: The Science of Software Development – coding | factory 说:2018年12月22日下午6:48 […]推文[…] 回复
最新动态
Max Kanat-Alexander 7月28日 非常兴奋地宣布,我将在2025年开发者生产力工程峰会上发表主题演讲之一。我将谈论什么造就了伟大的开发者体验。我自1995年以来一直在技术领域工作,自2004年以来几乎全职专注于开发者体验。关于如何使开发者体验变得伟大,有一些基本、普遍的真理,我将尽力在有限的时间内覆盖尽可能多的内容。希望能见到你。:) 阅读更多
Max Kanat-Alexander 6月27日 我目前认为,AI代理能成功生成的输出数量和质量取决于:
- 模型的质量。
- 代理的质量。
- 输入的质量(如提示或其他上下文)。
- 代理能独立运行的确定性、客观验证的质量。 我目前认为,除非你是模型开发者,否则最重要的部分是“确定性、客观验证”。 简单来说,如果你告诉AI做某事,它需要某种方式能够自行验证它做了正确的事。在软件中,这通常意味着运行测试、linter等,如果系统做错了就会失败。 这意味着你的测试和验证工具越好,从模型得到的输出就越好。不仅仅是测试的数量。它们必须是好的测试,有智能的断言和良好的错误消息。 这也意味着代理的成功涉及思考如何将任务分解成可以各自通过自动化测试、linter等客观验证的单独部分。 作为说明,输入的质量也很重要,并在我们的控制之下。如果我们写更好的文档和更清晰的代码,代理会做得更好。令人惊讶的是,几乎一切帮助人类写代码的东西也帮助代理。 阅读更多
Max Kanat-Alexander 6月4日 技术债务有价值的想法大多是一个神话。当你做出糟糕的软件工程决策时,它会在几小时、几天或几周内减慢你的速度。那是上限。许多人认为需要几个月或几年才能看到在软件设计上偷工减料的影响,但那根本不是真的。它几乎立即开始。做正确的事的成本通常是几小时,也许一天,而你几乎总是立即收回那段时间。也就是说,做对通常花的时间与做错花的时间相同。“等等,什么?那怎么可能?我们偷工减料是为了节省时间!”结果几乎总是它根本不会节省你的时间!它使处理变更更混乱。它使代码审查更长。它在测试期间以更混乱的方式失败,需要更长时间调试。它几乎从不节省你的实际时间。 偶尔,你的路径上有一些“岩石”如此巨大,你根本无法移动它。没有人应该花三个月设计一个新工具,只是为了你能一次交付一个一天的功能。但那是技术债务决策中极小的一部分。 这变得更疯狂,因为如果你在过程中做对一切(你总是重构系统,使其看起来像是设计来做现在 exactly 做的事),那么一切在整个过程中保持相对容易。但如果你偷工减料,一切变得复合性地更困难,以至于你生成了没有人能移动的“岩石”。复杂性不是某种线性的东西,你可以后来投入线性时间修复。你绝对可以让自己陷入一种如此糟糕的情况,以至于你公司中没有人有时间或专业知识修复它。 这一切感觉如此无辜:“让我们就偷工减料一下,它会帮助我们 meet 这个截止日期”(一个通常是虚构的截止日期,你可以推迟几周而没有任何后果)。“很难弄清楚如何做对,我们能推迟它吗?”然后砰,很快你发现自己陷入了一个沼泽,一切都很难,而且“我们不知道为什么!” 我最后留给你一件事:当我直接编码我生活的每一天时,我在这方面完全 uncompromising。我基本上无法看坏代码——我必须重构它,否则我无法工作。而 somehow,在我整个职业生涯的那部分,我从未错过一个截止日期。 阅读更多
Max Kanat-Alexander 5月30日 我估计,我每看到或被告知一万条坏建议,才收到一条好建议。互联网充满坏建议,因为文明充满坏建议。文明充满坏建议,因为全球的教育大多不教人们思考、学习或确定什么是真的。相反,它教人们 memorizing 和 repeating 事实,其中大多数是不重要、不真实或无用的。 所以总的来说,我们不应该惊讶互联网(尤其是社交媒体)充满不重要、不真实或无用的信息。并非全部那样——我在网上学到了大量非常有用的东西。有大量有价值的内容。我会说,人们对事物的意见,无论是在报纸、博客文章、论坛还是其他什么, rarely 有那种价值。 那么 takeaways 是什么?嗯,最好有一些方法在开始依赖或向他人重复某事之前确定它是否重要或有用的。最简单的工具是说:“它有效吗?”这条数据可靠地帮助你完成某事吗?它100%的时间有效,还是更少? 对于许多帖子,你会发现:这条数据根本无助于你做任何事。 阅读更多
加载更多
© 2025 版权所有。由 The Fox 提供支持。