

作为Fullstack Academy的教学研究员,我在短暂而紧张的时间内经历了速成课程,以教授Fullstack JavaScript Web开发。
随着编程教学对于经济增长和机遇越来越重要,并且随着越来越多的编程教学从传统的学校和大学进入非传统的学习机构(编码训练营,MOOC以及Codecademy和freecodecamp等在线平台), ,值得反思一下现有的各种编程教学法。
稍后我将详细介绍,但首先我将回顾一些在写作教学和编码教学中的最佳实践之间的相似之处。 在学习编码之前,我教了两年的大学作文课,因此我对如何使教学有效的一些一般性想法产生了兴趣。
实际上,写作教学和编程教学比人们预期的要相似。 写作和编码最终都是面向过程的技能,并且最好以一种明确地关注如何修改(或在编码的情况下,重构)您的工作,并鼓励元认知思考来帮助学生的方式进行授课。更好地了解他或她自己基于过程的优缺点。
- 学习编写和学习代码都是面向过程的。 尽管在这两个领域中都需要一定数量的特定领域知识,但是这些领域并不是掌握意味着能够理解和回忆大量信息的领域。 您可能对编程语言了解很多,但是除非您投入大量的代码来练习编程,否则这将不会使您成为一名强大的程序员。 同样,您可以是一个热情的读者,已经认真研究了写作,但是,除非您进行大量的练习以在页面上写单词,否则您可能不会成为一个有力的作家。
- 编写质量更高的论文和代码取决于您在重写/重构方面的技能和投入的决心。 大学作文老师经常强调,即使是发表过的作家也会撰写拙劣的初稿,而学会更好地写作包括成为客观的观察者自己的作品,并愿意在重写和修改作品时丢弃和替换书面材料。 同样,很少在第一次尝试时就编写出色的代码。 必须对代码进行重构,以使其更清晰,更具可读性,更具模块化,并且与项目的总体体系结构的设计模式更加一致。 拒绝重构代码的程序员将迅速积累技术债务。
- 根据反馈意见修改书面工作和调试/重构代码是一项必须定期练习的技能。 这些技能不是随着学生写作更多散文或代码而随着时间的推移而被动地获得的技能,而是应该将核心学习成果作为课程设计的核心。
- 在写作教室中,这是通过同行评审和写作讲习班进行授课的,然后可以通过评分体系来加强该评分体系,该评分体系会奖励草稿之间的修订。 解释有时会代表不同听众的其他人的有时矛盾的反馈意见以提出修订计划并不是一个简单的过程,需要通过小组研讨会进行建模和教学。
- 在编程中,此反馈来自不同的来源:(A)通过配对编程和代码检查,执行学生代码的计算机(通过错误消息,日志和测试),以及(B)其他人。
- 强大的程序员是可以调试和重构自己的代码的人。 他们知道如何读取和解释错误消息,以及研究错误,以便在执行代码时识别和隔离问题。 他们知道如何将其他人的反馈转化为可行的计划,以使他们的代码更具可读性和模块化。 这些技能和实践必须成为编程课程的中心,就像重写和修订对于教学写作至关重要。
- 进行元认知反射(或者让学生思考自己的头脑风暴和写作过程)是当前大学组成课程的主要内容。 可能会要求学生回答以下提示:整个学期他们学到了什么? 他们如何确定研究来源? 哪种写作和修改策略对他们个人而言效果很好,哪些没有? 作为作家,他们的优点和缺点是什么?
- 使学生对自己的写作习惯有更多的自我意识,可以改善他们对自己的写作习惯的自我调节。 当遵循课程设计和学生项目的敏捷开发模式时,这可以反映在编程中。 每天的站起来和每一次“冲刺”之后的回顾都可以让学生对他们的编码实践进行元认知反思,这应该有助于他们理解自己的优势和劣势,并朝着具有更多自我意识和自给自足的程序员的方向过渡。