我认为自己是中级Python程序员,并且有机会成为初学者Python编程课程的培训师。
我想知道这是否真的会扩大我的编程范围。在成功地训练了一群人之后,有人有启发性的经历吗?
它是否还取决于这些人-他们是程序员还是菜鸟生?(就我而言,他们是中级的.NET和Java程序员)
我对他们有什么期望?
我的恐惧之一是-如果其中一个问一个纠结的问题时我cho住了怎么办?这正常吗?
我认为自己是中级Python程序员,并且有机会成为初学者Python编程课程的培训师。
我想知道这是否真的会扩大我的编程范围。在成功地训练了一群人之后,有人有启发性的经历吗?
它是否还取决于这些人-他们是程序员还是菜鸟生?(就我而言,他们是中级的.NET和Java程序员)
我对他们有什么期望?
我的恐惧之一是-如果其中一个问一个纠结的问题时我cho住了怎么办?这正常吗?
Answers:
以我的经验,教授编程确实使我变得更好。它迫使我对以前刚刚接受或视为理所当然的概念有了更好的理解。当我不得不以多种不同的方式表达对我而言古老而又对学生而言新颖的观点时(因为并非每个人都从相同的示例中学习相同的方式),最终使我对材料有了更深刻的理解。
是的,有时学生会问您不知道答案的问题。可以,您可以告诉他们您不知道的情况,提出可能的解释,并保证在下一节课之前进行研究。
德克萨斯大学的一项旧研究得出以下发现。
人们保留:
他们阅读内容的10%
他们听到的内容的20%
他们看到的东西的30%
他们所见所闻的50%
他们工作的70%
他们教的课程的 90%
遵循这种逻辑,学习和保留所学知识的最佳方法是尽最大努力将其教给其他人。
即使我在学校通过Comp Sci 101培训,我还是从事C ++的补习工作,实际上直到我被迫向挣扎中的学生授课之前,我才真正学习C ++。当我帮助非CS毕业生完成他们的作业时,这就像是一场灯泡狂欢般的狂欢。
我没有系统地教自己编程,只是试图向或多或少的局外人解释一些概念或问题。这总是很有趣的经历,我每次都学到一些东西。
确实,扬·科门纽斯(Jan Comenius)在几百年前就已经指出,真正深入了解某事的最好方法是向他人解释。
因此,继续努力吧-对您来说,这将是宝贵的,丰富的经验。您肯定会遇到困难或令人惊讶的问题-没关系。不要假装您知道所有信息-诚实地说,告诉他们“我不知道,但我会回答您”的意思。他们只会因为诚实而更好地尊重您。
除了提到其他答案外,别忘了在教学时,如果您心胸开阔,也可以向学生学习。
您在评论中提到“您对Java / .NET的了解几乎为零”。这是向学生学习的绝好机会。 教学不是一个单向的过程。
如果您不知道问题的答案,请不要试图掩盖事实。 老师对学生的最大伤害是假装他们知道自己不了解的东西。最好的是,当他们发现您不知道您在说什么时,您会失去他们的信任,更糟糕的是,您会误导他们并传递虚假信息,这比没有信息还糟。
我教过大学技术课程(但不教授软件开发)。这是我的看法:
不是1:1。您不会获得与编写程序相同的经验-但这绝不是一件坏事(请继续阅读)。
绝对。您将面临新的挑战,并且需要(重新)学习一些多年来您从未了解或忘记的事情。其中一些将在将来有用。它为您提出了许多新的挑战和概念。您将需要从新的角度处理技术问题,并且可以从这个角度解决这些问题并学到很多东西。如果您可以有效地教别人他们需要了解什么技术问题,它通常会提高您对主题的知识并扩展您的知识领域。同样,您提到他们已经知道另一种语言,有人说最好的改进方法之一是学习新语言。
与附近领域的专业人员合作会极大地改变组织结构。他们已经知道如何与计算机通信,编写程序。语法和逻辑将使他们快速学习。他们将在第一周提出具有挑战性的问题。
我希望如果您能够将课程的内容与他们已经熟悉的语言联系起来,他们将受益最大:“是的,主题在这些方面类似于Java ,但由于这些原因而有所不同”。我希望他们学习的速度很快,这样您就应该期望在课堂外投入大量时间进行准备(再次学习很多,但是大多数开发人员会感兴趣。)
好吧,他们和您一样经验丰富,但是在另一个领域(尽管相关)。解释可能会很困难,并且您不会期望您了解所有知识或拥有与所有知识相同的专业知识(结合使用)。说“我不知道”的能力对老师来说是一种很好的素质。如果他们也有经验,您通常可以通过简短的讨论来回答(“哦,我们使用这种技术解决了这个问题”)。如果失败,则应该在下一个会话(为您和他们)之前找到答案。
我想肯定会有所作为。根据我的个人经验,我为以下理由辩护:-
在阅读时,有时头脑变得懒惰,以至于忽略细节或开始假设事物,而不是进行详尽的阅读以理解相关的顶部。这就是在阅读过程中获得不完整知识的特殊原因。
就教学而言,这完全是一个不同的故事。在这里,人们不能提供假设,而可以提供事实,因此对教学进行了透彻的阅读。此外,老师们认为,提供完整和正确的知识是他的责任,这又促使进一步的校对。
如果您正在编写本课程的材料,那么在其他所有人列出的内容之外(“您必须完全了解材料”等),这是编写文档的好习惯,因为文档(无论是课程说明还是技术文档)都已编写甚至在工业中也可以传播知识。
但是,当您从事行业工作时,文档通常是为您未曾见过且不会见面的人准备的,因此很容易陷入记录您所做的事情而不是利益相关者/阅读者需要知道的事情的陷阱。
当您为班级中的学生写作时,因为您与利益相关者/阅读者非常接近,所以实践和发展有用文档的思维方式变得更加容易。天哪,如果您真的很幸运,一个学生会把手举起来,告诉您笔记很烂,那么您就会学到一些可以改进的地方。
我会说不。做老师并不能使您变得更好-学习可以使您变得更好。如果您必须学习成为一名老师,那么您会变得更好。教书只会帮助您保留所学知识,但在IT领域,一切每天都在变化。因此,您不能仅仅依靠教学,您必须将...屁股...从沙发上拿下来学习。
我遇到了可能对他们的实际领域一无所知的IT教授。他们有证书,课程,墙上的文件以及许多“展示”。当然,他们可以讲这个话题,但是,如果您不遵守规定的课程表,他们会发抖,结结巴巴并失败。他们无法应对变化的压力。他们没有与时俱进,而是传授了自己所知道的过时的知识。
因此,让我们再次扭转这一局面,我有几位很棒的教授。他们是开发人员,高级开发人员,首席开发人员,应用程序开发总监,然后成为程序员。他们了解现实世界的情况,他们知道教科书中99%的内容都没有使人们为现实生活做好准备,因此他们对其进行了修改,使其保持最新。
12年前,我11/12年级的IT老师给了我一个报价。如果在每个学年中我都能在学校打破他的安全性/防火墙等,无论我做什么工作,他在课程中都会给我A +(100%)。哎呀,我在担任小班时就帮助他计划了课程。那时的开发者。他给我的提议使他(当时)成为Windows NT安全专家。我确实获得了100%的收益,我不得不偷走了他的UN / PW,然后将他拒之门外……这是最终的唯一方法。但是不用说,他的教学和IT方面由于教学而变得更好-他与班级一起工作-不在自己的议程上。
那么,您在哪里划界线?借鉴老师的态度。如果那个老师愿意学习,他们会变得更好。如果那个老师只是随波逐流,得到报酬,而又不太在意-他们会变得更糟。
根据我自己作为老师的经验。我会说NO。
因为尽管您通过教孩子和/或新手更好地了解了基础知识,但您并未进行与实际职业相关的任何改进。
为什么会这样?-因为编程的发展快于人们的学习速度。出现了新的语言和框架,新的工具,新的概念,新的硬件。专业的程序员必须知道他的领域。否则-没有人会需要他。
您可能想说-'但是您可以学习基本算法'-我对您说-'但是您应该在大学学习它们。
其他主题是工作节奏。“老师”很慢,他们不能快速解决现实世界中的实际问题。
最后但并非最不重要的一点是-教学就是付出。当您想教书时 -您无法阻止自己;)这只是内部的呼唤,坚定不移地分享您的知识,减少周围的愚蠢,最终使世界变得更美好;)
这个问题的许多答案都指出,教某事意味着您必须首先学习它,因此您必须变得更好才能能够教书。我会说这几乎是对的。
如果您负责编写课程材料,那么您将必须对主题有透彻的了解。如果您需要学习一些未知的知识,则将材料学习到此水平将使您变得更好。
另一方面,如果您只是阅读其他人准备的课程材料的木偶,那么您可能会不了解或不了解主题而逃脱。对于入门课程尤其如此。如果您是一位经验丰富的开发人员,正在教授初学者课程,那么您真的需要学习实质性知识吗?
我认为这取决于您个人决定准备的程度。我不喜欢自己看起来像个傻瓜,所以当我教书时,我过度准备,在笔记中比我在课堂上倾向于提出的更多细节。这样我就可以安全地处理大多数问题。每当我为上课做准备时,我都会发现一些精美的细节,直到那时我还是忘记了或忽略了这些细节。设计练习可能特别困难。
为已经存在的程序员做准备是整个额外努力的水平。您可以期望班上有些人讨厌他们被要求学习心爱的C#(或其他任何东西)而学习Python。他们将挑战您所说的一切。您可能会有其他人已经有一些知识,并会在第一天提出高级问题。在第一种情况下,请确保您紧跟主题,除非课堂上没有敌对行为,否则不要讨论语言之间的差异。只需返回您要覆盖的材料即可。在第二种情况下,几乎所有高级问题都可以在课堂上稍后提到(如果您不知道,可以花点时间查找答案。)因此,这应该给您带来信心。我总是为上课的人准备一些更艰苦的练习,因为他们必须这样做,但他们已经熟悉该主题。独立学习的一种,很容易无聊。(当我在其他所有人都挣扎着在五分钟内完成的练习而苦苦挣扎时,当我参加这些高级主题练习时,他们会感到惊讶!)
但是,大多数程序员喜欢学习,并渴望开始做一些有用的事情。您可能可以将基础知识降低到最低限度,这种类对您进行Hello World类型的练习很无聊。使事情变得更实用,对业务更有用。与没有经验的程序员相比,您可以计划涵盖更多有经验的材料,因此需要做更多的准备。如果您可以针对他们将要进行的工作进行练习,那就更好了。
学生具有非凡的能力,可以用独特的方式解释您所说的话。他们的错误可能是您做不到的事情。帮助他们纠正错误并解释为什么是错误,这将帮助您进行代码审查!