在有史以来最书呆子气的网络笑话之一中,程序员网站StackOverflow推出了一个橡胶鸭作为愚人节的笑话。鸭子的作用是帮助游客解决计算机编程问题。它会倾听人们的问题,听了之后,鸭子会开始“打字”,但在等待之后只会发出“嘎嘎”的声音。
正如任何软件开发人员都可以告诉你的那样,事实上,许多问题都可以通过简单地向某人解释情况来解决——即使此人对该领域一无所知,不是特别聪明,也没有兴趣提供任何指导。是的,即使那个人只是一只橡皮鸭。解决方案不是来自外部,而是在用自然语言解释问题的过程中找到的。
当然,这种技术不仅适用于程序员,而且在计算机科学和软件工程课程中也有教授,我们倾向于称之为“橡皮鸭调试”,简称“橡皮鸭”。这个名字来自安德鲁·亨特和大卫·托马斯在《实用程序员》一书中讲述的一个故事,在这个故事中,一个程序员用一只鸭子强迫自己逐行思考软件代码。
更普遍地说,必须解释或教授一门学科迫使你从不同的角度来评估这门学科,这样才能提供更深入的理解。
不言自明
向外部实体解释代码的行为是一种自我解释的形式。无论听众是另一个人还是儿童玩具,解释都会迫使一个人表达自己的想法,这包括花时间明确地分析和关注问题。反过来,这个过程可能会揭示隐藏的假设、逻辑错误或被忽视的细节。
研究人员,如大学教授兼作家MicheleneT.H.Chi,已经探索了自我解释在学习和解决问题中的好处。其基本思想是,当个人用自己的话解释概念或问题时,可以增强他们对材料的理解和保留。不仅如此,自我解释还鼓励更深层次的认知处理,并有助于识别理解中的差距。
对于软件开发人员来说,在描述程序应该做什么和观察它实际做什么的过程中,任何差异都会变得显而易见。自我解释往往比在没有听众的情况下大声思考产生更好的结果。使用无生命物体还有一个额外的好处:程序员不需要打断任何人。
学习中的自我解释效应也在许多学科中得到了检验,它在化学、生物学、数学、护理等领域都起到了全面的作用。此外,自我解释是帮助学习者将新知识与现有知识相结合的有用工具,使他们能够更新和完善现有的心理模型。
自我解释的另一个好处是,学生还可以更加了解自己的实际理解水平,并找到他们可能需要花更多时间发展知识的领域。
知识成双
尤其是,他们喜欢软件开发工作,欣赏日常工作中缺乏人际互动。然而,有些互动是非常有价值的。例如,团队合作可以帮助在公司内传播特定知识,并帮助个人进一步发展技能。
结对编程是软件团队实践的另一种解决问题的技术。顾名思义,这是一种团队合作,两个软件开发人员坐在同一台计算机上,解决一个编程问题。他们将查看同一段代码,一个人打字,另一个人以观察者的身份查看所有内容。这个过程与橡皮鸭调试的工作方式非常相似:当“驱动程序”编写代码时,他们也在解释程序需要做什么,以及新添加的程序将如何实现这一点。
Source:DaryaSannikovaPexels我想成为一个热情友好的人。但我不知道怎么做。——大卫·伯曼几年前,我在当地合作社排队时,发现一位顾客穿着一件97年代的旧t恤。令我自己惊讶的是,我悄悄地脱口而出了一句简洁的话,比如“啊,老97”…