16

为什么我不让孩子太早学编程?

 3 years ago
source link: https://www.36kr.com/p/885978816588035
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。

编者按:“未来的文盲,就是现在不懂编程的小孩”“不会写代码就丧失了网络生存能力”大量少儿编程广告,充斥于自媒体和公共场所。但作者作为一名开发者,确认为不应该让儿童去学习编程,他希望他的孩子学习编程语法。希望他们学会解决问题,深入研究一个问题,发挥创造力。那么我们该如何教呢?作者认为应该让你的孩子参与到你所重视的事情中,与其教孩子编程语法,不如和孩子一起做饼干。原标题《I’m a Developer. I Won’t Teach My Kids to Code, and Neither Should You.》

bAbU7jA.png!mobile

最近的一个晚上,我路过了一个大型的书展,关于教孩子学代码的书展。我看到过这类书,但从来没有见过这么多的针对小龄儿童的编程书籍。与这些书相关的还有大量的资源:暑期编码营、课后代码俱乐部、旨在教授幼儿园学生JavaScript基础的应用程序,这些都旨在让孩子们掌握面向未来的技能:编程。

很容易理解为什么父母要让孩子接触编程。有什么比训练孩子们如何构建软件,能更好的让孩子们对未来做好准备呢?如果一切都要通过代码自动化,那么做自动化代码的人就安全多了。而如果学习代码是好事,那么早一点学习就更好。但是,虽然这些产品可能会教给孩子们特定的编码语言,但实际上它们与创建软件的工作关系不大。

我的一位前同事曾在一个编程训练营接受过培训,训练营的口号是 "编码是新的素养"。这种情绪是所有编程书籍和编程游戏的核心。一本流行书中的描述说,尽早开始编码是 "为孩子们的未来做准备的必要条件"。"这给人的印象是,不教孩子们编码就等于不教他们阅读。

这当然是荒谬的。学代码不是学识字。虽然大多数家长都有文化,知道给孩子读书,但大多数人都不是程序员,不知道程序员需要什么样的技能。给孩子们看的编码书,将编码呈现为一套有 "正确 "解法的问题,以为如果你的孩子只要掌握了语法,他们就能快速、轻松地做出东西来。但这不是编程的工作方式。编程是混乱的,编程是创造力和决心的混合体。作为一个开发者不仅仅需要掌握编程的语法,而某些技能只能教给很小的孩子。

在我职业生涯的早期,我写了一些代码来配置和运行一组远程服务器。这些代码工作得很好。至少我是这么想的,直到18个小时后,我的手机在半夜发出提示声,告诉我一组服务器出现了故障。从床上摇摇晃晃地走到我的笔记本电脑前,我再次运行代码,替换掉坏掉的服务器。几个小时后,另一组服务器出现了故障。

这不是编程语法问题,如果语法有问题的话,服务器一开始就建不出来。问题要深得多,隔离和解决这个问题花了我好几个星期和许多不眠的夜晚。

写代码就是这样。试试吧,看看它是否有效,再试一次。如果一个问题是直接的,它就会被自动化,或者至少用一些开源的代码来解决。剩下的就是创造一些独特的东西的艰巨任务。没有书籍教你如何解决一个没有人见过的问题。这就是为什么 我不希望我的孩子学习编程语法。我希望他们学会解决问题,深入研究一个问题,发挥创造力。那么我们该如何教呢?

有一天,我儿子担心他的一把椅子摇摇晃晃。我们看了看,他帮我找到了问题所在:其中一个螺丝松了。我从我们剩下的许多六角扳手中找到一个螺丝,教他如何把它拧回去。之后,他很好奇,如果他用另一种方式拧,会发生什么,他照做了,直到螺丝脱落。最后我们把椅子全部拆开,又重新组装了好几次,经常是件件错位,他才满意地完成了工作,试试不同的办法,看看它是如何工作的,再试一次。

当然,把东西弄好只是构建软件的第一步。下一步是让代码清晰、可重用、整洁。有一次,在我职业生涯的早期,我写了一个功能,并把它交给一个高级开发人员审查。他看了一眼我那粗疏的间距、不匹配的行数和不稳定的命名惯例,就说:"再做一次"。它是可行的,语法是有效的,但还是不对的。优秀的编码者不只是让一些东西可以运行,他们希望它是好的。

这种质量感是很多开发者最难掌握的。设计良好的代码让人感觉很好用,而丑陋的代码会让开发者不由自主地皱起眉头。最好的开发者学会了将抽象的逻辑与艺术家的敏感融合在一起。学会相信这种审美感受和任何算法或编码模式一样,都是开发的一部分。

我和妻子最近和儿子一起做糖饼。每当我们混合一些材料时,我们都会停下来看看面团,并谈论质地和颜色。它是否光滑?我们是否把所有的部分都混合均匀了?当我们擀开面团的时候,我儿子摸着面团的表面,看着我妻子教他如何把所有的东西都弄均匀、弄薄。但最难的部分是切出形状。像所有的孩子一样,他本能地把切刀推到了擀好的面团中间,每次我们都会试着解释如何切面饼,以减少浪费。

每一个步骤:精确地测量原料,测量混合面团的光滑度和一致性,精确地切割以减少浪费,都让他学到了一些关于质量的东西。仅仅是执行步骤,比如按照配方做,和做好一件事之间的区别是很难教的。只能通过感觉和经验来传递,而每当你让你的孩子参与到你所重视的事情中时,你就是在教他们如何做好事情,你就是在为他们写代码做准备。

但你不只是教他们这些。你在教他们这个世界充满了有趣的东西,等待着他们去发现。你在向他们展示如何充满激情,并在他们所做的每件事中寻找充实感。最好的部分是,即使他们长大后不成为程序员(大多数人不应该也不会成为程序员)同样的技能也可以用在几乎所有的职业、所有的爱好、所有的生活中。当我们强迫孩子们学习编程语法的时候,我们强化了这样一种观念:如果某样东西不是一种明显的就业技能,它就没有价值。成人可以学习编程语法,只有孩子能学会拥抱好奇心。

(译者:蒂克伟)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK