哈希游戏- 哈希游戏平台- 哈希游戏官方网站至于编程生涯的起点,一切都始于我母亲在我 12 岁时买了一台小型塑料计算机。那个玩具有三个触发器和六个与门,需要通过转动一个小杠杆来操作它,内部的一些橡皮筋和杠杆会移动部件,让它进行简单的计算,比如从 0 计数到 7,或者从 7 计数回到 0。此外,还可以通过编程,让它对两个比特(bit)进行加法运算,生成一个和位和一个进位位,我甚至在上面编写了很多有趣的程序 —— 编程的过程是,通过将小管子插到插销上,这些管子会阻挡杆进入槽中,进而改变触发器的状态。
大约两年后,在我 18 岁时,我找到了一份全职工作,主要为 IBM 360 编写汇编语言和 COBOL。不久之后,我开始用汇编语言为许多微型计算机编程。当时这些计算机是由 Varian 公司生产的,那时候许多公司都在制造微型计算机,但很少有公司成功,最后是数字设备公司(DEC)主导了这个领域。随后,我在编程 PDP 8 和 PDP 11 这些设备方面变得非常熟练,这些设备都是在 70 年代初期生产的。
比如,我在一次设计模式会议上遇到了Kent Beck,在一次早期的极限编程会议上遇到了Martin Fowler。这些人我大都是面对面认识的,他们既是我的伙伴,也是我的导师,我从他们身上学到了很多东西。他们也都是我的同行,我们一起学习和进步。我学到的很多知识来自 20 世纪 60 年代和 70 年代的编程书籍,比如 Donald Knuth 的《计算机程序设计艺术》,那个时代的书籍对我来说是非常重要的信息来源。
Bob 大叔:确实如此,敏捷运动起初是由一群程序员发起的。17 位参与者在雪鸟度假村聚会,共同创建了敏捷宣言。我们都是程序员,或者至少具有深厚的技术背景。这一运动并非从项目管理的角度起步,但其中一位创始人 Ken Schwaber,决定开设一门名为“认证Scrum 大师(Scrum Master)”课程。该课程旨在培训希望成为 Scrum 大师的人员,教导他们如何协助团队运用Scrum 方法—— 这是敏捷开发的一种模式。
Bob 大叔:Scrum 大师最初的设计理念是团队中的一员,负责提醒其他成员遵守使用 Scrum 或敏捷方法时所作出的承诺。其职责包括每周检查团队进度,例如确认是否已按计划编写测试代码,以及是否遵循了预定的估算方法。这一角色在团队内部实行轮换制,通常由不同的成员轮流承担。在成熟团队中,经过数周的实践后,无需专门的 Scrum 大师来监督,因为团队成员已经能够自觉地执行既定流程。然而,随着项目经理的介入,这一角色逐渐演变为一种项目管理职能,而这与 Scrum 大师的初衷相去甚远。因此,现今 Scrum 大师的角色已经发生了显著变化。
当然,我们可以讨论很多技术和方法,比如测试驱动开发(TDD)、简单设计、SOLID 原则等等,有很多技术和理念。但最根本的理念是,每天结束工作时,你能够对自己说:“我今天做得很好。” 然而,不幸的是,很多程序员回家时,看着镜子,会觉得自己需要洗个澡,因为他们觉得今天做得很糟糕。他们写了一堆糟糕的代码,只是为了赶上截止日期,他们需要把这些不好的感觉洗掉。这就是匠艺的意义 —— 回到家时,知道自己做了好工作,为自己的工作感到自豪。
Bob 大叔:是的,这是一个非常奇怪的现象,因为我的书本身并没有建议过度抽象,也没有提倡大量的抽象。书中建议的是,谨慎且恰当地使用抽象,但并不推荐过度设计。显然,有一些程序员认为,任何形式的间接都是不好的,他们认为写出好代码的唯一方法是尽量直接。我不赞同这种观点,我认为适度的间接设计和抽象是有帮助的,但你必须非常小心,因为抽象是有代价的。所以,当抽象有助于解决问题时你可以使用它,但要清楚它的成本,并且谨慎地使用。
Bob 大叔:函数式设计以及函数式设计书中的理念,其实就是为了帮你成为更成熟的程序员,给你的“工具箱”添加新工具。函数式编程是个好工具,面向对象编程是个好工具,结构化编程也是个好工具,这些都该放在你的工具箱里。测试驱动开发是个好工具,最好也备着。SOLID 原则也不错,放在工具箱里准没错。所以这本书的目的就是扩展开发者的工具箱,这肯定能帮你保住工作。但我觉得不用太担心被 AI 取代,这在我有生之年不太可能发生,可能在你这辈子也不会,或者永远不会。我感觉我们不会看到能达到人类智能水平的机器。