目前最佳简单系统
目录 目前最佳简单系统的特点 目前简单最佳 反对BSSN的理由 对一个原型来说,这是过度的 它是不完整的 它是低效的 我们为什么不这样做? 好习惯 勇气 谦逊 从哪里开始? 示例:JSON库 示例:XML流 迅速总结 2025年2月3日 26分钟 只要小心制作,你就可以一边享用蛋糕,一边吃掉它。‘我们可以走快捷的方式,稍后再付出代价,或者走彻底的方式,现在付出代价。’这似乎是软件开发中的一个基本二元对立,介于‘完美主义’和‘实用主义’之间,但我认为根本不需要权衡。我的一位首席技术官朋友用清理两条山路的比喻描述这种情况。左侧的小路是快速而肮脏的,用砍刀和蛮力清理而成——你不指望有人跟随你,你只是砍出一条路,但进展很快。右侧的小路则是更宽、更清晰、铺成的道路,建设更扎实,但需要时间逐渐修建。左侧的路径适合前瞻性侦查,查看前方的情况。而右侧的路径则是你要引导大家走的安全路径。我的朋友在采取左侧路径的人——因为这也是赚取快钱的最快方式(他在一家交易公司工作,所以这个论点很有分量!)与右侧路径的人之间的紧张关系中生活,后者希望建立一个有韧性、可持续的产品。这描述了我工作过的许多组织。双方的紧张关系源于‘另一种方式’的错误观念。右侧路径的倡导者担心左侧路径的人在积累将来会反噬他们的技术债务,伪装成‘实用主义’。而左侧路径的人认为右侧路径的人是‘完美主义者’,过度设计和华而不实(通常有很多商务经理排队表示同意)。我提议有一条双方都错过的中间路径。我称这条路径为目前最佳简单系统,或BSSN。经过很长时间的思考,我才对这个想法进行概括,这个想法在多年来一直是‘显而易见却隐藏’的。这里有几个源思想或多或少地暗示了这个想法,我希望在这里予以承认,但我从未见过它被明确表达过。所以现在就说出来。 目前最佳简单系统的特点 # 目前最佳简单系统是满足当前产品需求的最简单系统,按适当标准书写。它没有多余或过度设计的代码,任何存在的代码都正好具备所需的健壮性和可靠性,既不多也不少。‘目前最佳简单系统’这个短语的每个部分都是经过深思熟虑的,并且彼此相辅相成。任何偏离这些中的任何一个,意味着它不再是‘目前最佳简单系统’,而是某种严格较弱的东西。让我们逐一解读这些部分。 目前 # 系统不应以任何方式预见未来。这与我作为程序员所接受或给予的几乎任何建议相悖!当我们程序员接手一个问题时,我们总是倾向于寻求通用解决方案。甚至还有个xkcd讲这个,所以肯定是正确的:我们从来没有离‘这是一个规则引擎!’或‘这是一个状态机!’太远,因此我们高效的工程思维决定节省一些时间——以及返工——立即采取这个解决方案。做出这个决定的一部分是知道每个变化都伴随成本,所以采取几次小步骤总是没有我们‘知道’的一个大步骤高效。我们依赖于自动和无意识的模式匹配来腾出空间让意识处理。在《思考,快与慢》中,丹尼尔·卡尼曼分别将其称为系统1和系统2。模式匹配是无意识的系统1活动;我们擅长这一点,并且这很自然。而‘看到真正存在的东西’则更难,需要有意识的思考和努力。为了现在进行设计正是反其道而行之。这是一种艺术,尽管你大脑呈现给你的模式,它仍能看清眼前的现实。这就是BSSN的核心——可能发音为‘bison’,可以与我们通常会修剪的那些牦牛相辅相成。 简单 # 当我设计某样东西时,通常会有两个版本的我在冲突。‘聪明’的我——那个有着数十年经验和大自负的人,知道这里的东西将来会变化,因此我们应该将这个东西做成接口。或者我们几乎肯定会有这个数据量,所以我们应该提前建立这个并发版本的处理算法,而不是简单的串行版本。更谦逊的我知道,我的任何预测都将近乎正确但又是错误的,正如我之前曾无数次接近但错误一样,所以也许现在应该稍等一下。更谦逊的版本通常会输。因此,当未来发生时,我往往会进入两种模式中的一种:
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡