黑客之道:我是如何教我侄子编程的

2020-08-06 02:41:58

在过去的一年里,我13岁的侄子养成了对黑客的热爱。从动漫聊天,到Snake,一个最小的Twitter,一个博客,再到一个动漫音乐初创公司,他创造了一些很酷的东西(1)。然而,我最自豪的是,他是通过自我指导的游戏来做到这一点的,而不是通过僵化的课程。

为了帮助他做到这一点,我在幕后扮演了尤达的角色。我尝试了一种个人的教学理念,我想和你们分享一下核心原则--我称之为“黑客之道”:

孩子们被教导要把学习与责任联系起来。学习是你不想做的事情,但你必须做,因为它要么对你有好处,要么会让你的父母高兴--有点像西兰花。有了这样的信念,孩子和老师都在艰难地玩生活。孩子会倾向于最低限度。他们不会有任何自我指导和深入观察的欲望。老师不得不不断地督促学生前进。

这种方法对掌握来说是灾难性的。掌握需要深度,你需要一个有令人难以置信的自尊心的孩子,和一个拥有难以置信的时间的老师,才能达到那种深度掌握的要求。想象一下另一种选择:如果这个孩子真的感兴趣呢?突然之间,学习就是玩耍,深度就是探索。

在我们的每一次谈话中,我的主要目标都是帮助他巩固这样的观点:学习就是游戏。那么,我们该怎么做呢?

嗯,娱乐和工作的主要区别之一是自由:当你在做你想做的事情时,游戏就会发生。这意味着,你需要确保孩子们在做他们真正感兴趣的事情。即使你知道,如果他们只是坚持一段时间,他们就会学会喜欢它,但弊大于利:他们不太可能坚持下去,而且无论如何他们都会记住痛苦。

问题的解决方案是在他们所在的地方与他们会面,并从那里指导他们。例如,假设你想让一个孩子读书。嗯,如果他们现在喜欢动画片,如果你推荐动画片呢?(日本电视节目)。如果他们喜欢动漫,他们很快就会发现漫画(日本漫画书)。一旦他们看了一大堆漫画,一下子就成了他们喜欢做的事情。如果你在那之后再加上一些冒险小说,比如“沙丘”呢?慢慢地,但肯定地,他们正走上如饥似渴的阅读之路。

需要注意的关键思想是,我们希望孩子们能摸索出离他们发展只有几步之遥的想法。如果你观察他们现在感兴趣的是什么,然后从那里制定一个计划,事情就会顺利得多。这需要耐心,但这是事实。

对我侄子来说,编程是从画画开始的。我知道他喜欢画画。他开始用纸和铅笔设计应用程序。所以我给他画了素描。有一天让他坐下来给他看基本知识。他迷上了YouTube,所以他开始设计横幅。有了这一点,他有了一个快乐的切入点。

不完全是。玩耍和工作的另一个不同之处在于,你可以随时停止玩耍。年长的人通常会教孩子一些东西--特别是如果他们付了钱的话--然后期望孩子会认真地投入其中。

当然,从来都不是这样的。孩子们不知道他们想要什么,他们肯定没有很长的注意力持续时间。成年人的常见反应是让孩子感到内疚-你说过你想要这个,但现在它正在积聚灰尘。表面上的目的是教给孩子一美元的价值,但我不认为这是实际发生的事情。相反,他们学会了避免冒险。他们可能也会强迫自己继续进行这项活动,这会教会他们不喜欢学习。

如果你鼓励的是相反的情况呢?任何时候你送礼物的时候,你都会说:嘿,如果在任何时候这变得无聊,答应我停下来做点别的。突然之间,压力消失了。他们可以在闲暇时探索,发现更多他们喜欢的东西,回到事情上来是很自然的。

我就是这么做的。对于书籍,每次我提出建议时,我都告诉他只读他喜欢的书,一旦他无聊了就停下来做点其他的事情。瞧,他读的书比我想象的还要多,并开始形成自己的品味。

在YouTube的设计之后,在编程方面,他有一点平静,他专注于其他事情。然而,最终,好奇心和欲望再次在他心中升起:他如何才能使这些设计成为现实?他怎么能做真正的网站呢?

在这一点上,欲望是强烈的,是时候向前转变了。我们现在可以教他们一些东西。但怎么做呢?

我们用两种常见的方式教孩子。第一种是形成一个“经典”的环境:你从最基本的原则开始,引导他们学习基本原理:什么是字符串,什么是数组,等等。这通常是最无聊的方法-如果一个孩子不明白为什么他们需要学习什么,那就更难学了。

第二个是形成一个“儿童大小”的环境:也许是一种虚拟的编程语言,用来解决儿童风格的问题。这可能比经典的方法更好,但我认为它仍然存在类似的问题:孩子们并不真正理解他们为什么要这样做。大多数类似游戏的工具也没有真正的游戏有趣,所以如果他们严格地把这看作游戏,…。还有更好的选择。(2)。

另一种方法是以更多的尊重对待他们。如果你把他们当实习生对待呢?想象一下,如果一个孩子在做职业成年人做的事情,他会有什么感觉。这很耐人寻味,甚至可能是他们的朋友认为很酷的事情。

我的工作方法就是这样做,像对待初级学徒一样对待他们。他们拥有和成人一样的工具:但像所有的学徒一样,他们需要首先学习子集。对于编程,我首先向他展示了如何使用HTML和CSS创建一个简单的站点。只是一些基本的东西-足以让他做点什么。

他用HTML&;CSS建立了一个个人新闻网站、一个博客、一个Tic Tac Toe板,并开始把他的学校项目作为网站来做。他看到了这真的感觉像是真的-它激发了他的想象力,让他进一步探索。

请注意,像大多数学徒一样,他做了大部分的研究和工作:我只是给出问题,当他被困住时,我可以进行视频通话。不过,这些视频通话很重要:就像一个真正的学徒一样,我确保认真对待他的问题,并给出满足他好奇心的答案。这也让我知道他下一步会找到什么有趣的项目。这项工作本身取决于他。

最终,他想让新闻网站做一些动态的事情:如何隐藏和显示内容?你怎么才能让纽扣起作用呢?好了,现在是学习一点javascript的时候了。这里有一个山谷-他现在可能需要理解弦乐-但他已经建立了足够的能力,他可能可以忍受几个关于基本面的视频。说完,他就去参加比赛了--直到他决定做点别的事情,当然是🙂。

这就是我的黑客之道。灌输学习就是游戏的观念。在他们所在的地方与孩子见面,让他们去探索,把他们当作初级学徒对待。

我在论文中没有深入到课程中,因为这取决于孩子:他们现在在哪里,他们现在感兴趣的是什么?不过,为了领略一下他的探索历程,以下是他的探索过程中的一小部分:

已移至HTML和CSS。做了一个博客,一个新闻网站,一个TIC TAC TOE板,

我可以上一些Codecademy+YouTube课程,学习一些基本的javascript:字符串、数组等。

引导他完成一个简单的教程:给定一个输入,取其值并将其作为背景颜色。这是我真正和他坐下来的为数不多的几次之一。他可以利用那里的想法来制造更多的东西。

他开始建立一系列支持javascript的网站:更酷的博客、todo应用程序、动画应用程序、一些学校项目,等等。

教他如何使用火力基地。在那之后,他开始了一场狂欢:制作井字游戏,蛇,动漫聊天,等等。

最后,他表达了对蟒蛇的兴趣。我向他挑战让他做一个基于文本的推特机器人。

他想把它变成一个应用程序,所以他开始玩Fask。我给他讲解了把它部署到Heroku的过程。

现在他对构建Animusic很感兴趣:这是一款可以让你在动漫中列出你最喜欢的歌曲的应用程序。

请注意,在某种程度上,我可能会制作一些东西来帮助孩子们像这样学习。如果你对此感兴趣,请在Twitter上关注我-如果我在那里做了什么,我会宣布:}。

感谢Joe Averbukh,Daniel Woelfel,Ilia Parunashvili,Nino Parunashvili,Alex Reichert审阅本文草稿。

(1)如果您是黑客,您可能会注意到一些明显的安全漏洞。请不要理他们,或者如果你愿意,可以开个玩笑:}。我想现在上一堂关于安全的课就可以了。

(2)有些环境,比如Roblox,可能会很棒:动机是真实的(哇,我可以做一个真正的游戏),他们学到的东西也是真实的(Lua)。我的另一个侄子在玩这个,让我们看看它是怎么回事:}