5G技术、人工智能、虚拟现实,越来越多的新词在洗涤我们的认知。“未来已来,编程为王。”从大众的角度来看,编程就像阅读和写作一样,已经成为连接未来的必备技能。然而,美国程序员之父乔·摩根表示,他不会让自己的孩子学习编程。他指出,编程与阅读和写作的重要性并不相等,单纯学习编程语法并不能培养孩子解决问题的能力。更重要的是,当我们强迫孩子们按照死板的流程去学习编程时,只会扼杀他们的好奇心。昨天在美国知名网络杂志Slate上看到一篇文章,一位美国程序员父亲反对孩子学习编程。虽然我不同意他的结论,但他的思想发人深省,值得一读。名为JoeMorgon的程序员发布的文章标题为:《我是程序员,我不会教孩子学编程,你也别教》。为什么要让孩子学习编程?在最近的一次夜跑中,我路过一个大橱窗,橱窗里陈列着教孩子们如何编码的书籍。我看过一些这样的书,但是我从来没有看过这么多关于小学生编程的书。而这些书只是冰山一角。那里有大量与编程相关的资源——夏季编码训练营、课后编码俱乐部、向幼儿园儿童教授JavaScript基础知识的应用程序——所有这些都在教孩子们面向未来的技能。.家长为什么要让孩子学编程?在新加坡的一门编程校外课程中,答案显而易见。有什么比学习开发软件更好的方式来让我们的孩子为一个由软件统治的未来世界做好准备呢?如果一切都将自动化,那么成为控制自动化的人会更安全。如果学习编码有用,那是宜早不宜迟。虽然这些学习编码的产品可能会教孩子们一种特定的编程语言,但它们与实际的软件开发关系不大。编程就是读写?我的一位前同事曾经在一个编码训练营接受过培训,该训练营的座右铭是“编码是新的素养”。这种有意的焦虑是所有编程书籍和游戏的核心。正如一本畅销书所说:尽早学习编码“是让孩子为未来做好准备的重要一步”。这给人的印象是,不教孩子编码与不教他们阅读和写作在某种程度上是一样的。这种说法显然是荒谬的,编程不等于读写。虽然大多数父母都受过教育并且知道如何给他们的孩子读书,但他们中的大多数不是程序员或者程序员需要什么技能。儿童编程书籍将编程视为为一组问题找到“正确”解决方案的能力。如果您的孩子能够掌握编程语法(syntax),他们将能够快速轻松地完成任务。但是,这不是程序员的工作方式。学习编程语法就是学习编程?软件开发是一项艰巨的工程,是创造力和决心的结合。开发人员需要掌握的不仅仅是语法。伟大的程序员不只是让软件工作;他们想制作出色的软件。在我职业生涯的早期,我编写了一些代码来配置和运行一组远程服务器。我的代码运行得很顺利——至少我是这么想的——直到大约18小时后,当半夜铃声响起时,我才收到通知:一组服务器宕机了。我起床,走到我的笔记本电脑前,再次运行代码来替换死掉的服务器。几个小时后,另一组服务器宕机了。停机不是由语法引起的,如果有的话,首先无法设置服务器。中断的原因非常复杂,经过数周和无数个夜晚的醒来,我终于解决了这个问题。这就是编程的全部内容:先写代码,看看它是否有效。如果失败,请重试。如果问题很简单,一些开源代码就可以解决。剩下的就是需要安全性的艰巨任务。没有一本书可以教你如何解决最糟糕的问题。这就是为什么我不希望我的孩子学习编程语法——我希望他们学会解决问题、深入研究问题并发挥创造力。掌握这些能力比编程更重要,那么我们如何教授这些能力呢?有一天,我儿子有点担心他摇摇晃晃的椅子。我们一起检查了椅子,儿子帮我找到了问题所在:一个螺丝松了。在家里找了一把合适的六角扳手,演示了拧螺丝的方法。说完,儿子很好奇:如果反方向拧会怎么样?他尝试直到螺丝出来。***,我们反复把椅子拆开再装回去——中间假装错过——直到儿子满意为止。先试一试,看看效果如何,不行再试。当然,让软件运行只是开发者的第一步。下一步是使代码简洁、可重用和简洁。在我职业生涯的早期,我曾经开发过一项由高级开发人员审查的功能。他看了一眼我草率的间距、乱七八糟的代码行和令人困惑的命名约定,然后说:“重写!”我写的代码有效,语法有效,但它仍然是错误的。优秀的程序员不只是让代码工作,他们还想做出伟大的软件。对于很多开发者来说,这种品质感是最难把握的。设计良好的代码令人赏心悦目,但丑陋的代码令人望而却步。最好的开发人员学会将抽象逻辑与艺术家的敏锐度相结合。程序员还必须学会相信代码的美与算法和代码模式一样重要。最近,我和我的妻子和我们的儿子一起做了糖饼干。每次将配料混合在一起时,我们都会停下来观察面团并讨论它的质地和颜色。面团光滑吗?是否所有成分混合均匀?当我们把面团擀开时,我儿子摸了摸面团的表面,然后看着妈妈示范如何把材料均匀地摊开,厚度恰到好处。然而,最难的部分是切出形状。像所有孩子一样,他本能地将模具推入擀好的面团中间,每次,我们都会解释如何将模具并排放置,以充分利用面团。准确称取材料,压面团时如何保持光滑度和延展性,如何放置模具减少面团浪费——每一步都让儿子知道什么是品质追求。如果只是照着步骤做,孩子很难理解照着做菜谱和追求卓越的区别。这些只能通过感受和经验来传达。每当您让孩子参与对您来说很重要的事情时,您就是在教他们如何做好这件事,包括编程。不仅如此,你还告诉他们这个世界充满了有趣的事物等待你去发现。您向您的孩子展示如何保持积极性,并在您所做的任何事情中寻找那种稍纵即逝的品质感。这样做的美妙之处在于,即使他们将来没有成为程序员——事实上,大多数人不应该也不会——同样的技能几乎适用于任何职业、任何爱好和任何人的生活。当我们强迫孩子们学习编码时,我们是在向他们灌输这样一种观念,即某些技能如果不能赚钱就毫无价值。成人可以学习语法,只有孩子才能学会拥抱好奇心。至于孩子该不该学编程,我想附上美国问答网站Quora上斯坦福大学人工智能副教授AndrewNg给出的答案。对了,他最近刚刚升级了自己,发布了史上最复杂的神经网络——小公主。AndrewNg,斯坦福大学副教授,世界人工智能和机器学习领域最权威的学者之一编程:正确的学习观念让你的孩子编程。更重要的是,培养她不断学习的能力。在计算机科学领域,我们所有人都习惯于每5年就需要接受新技术和思维方式(例如从互联网>云>移动互联网>人工智能/机器学习的转变),因为新技术以这种速度发展发明出来使技术过时我们以前用过。所以,做计算机科学的人习惯于不断学习新事物。然而,新的是计算机几乎影响了所有其他行业。不仅计算机行业每隔几年就会发生变化,现在各行各业的人们都需要适应变化。这就是为什么持续学习将是您可以传授给女儿的最重要的职业技能。编码:让未来更美好我还相信(几乎)每个人都应该学习编程。很久以前,人们想知道是否每个人都需要阅读和写作。那时,少数受过教育的僧人就可以向大众诵经,大多数人不需要读书写字。或许,我们只需要少数人写出畅销书,其他人都不需要学习写作?事实证明,随着识字率的提高,人与人之间的交流变得更好:不仅几个人可以写畅销书,我们也可以只为一个人写电子邮件,这(一种私人交流)也很值得。今天,我们所处的时代是少数会编程的人为大众编写大量代码。但是,如果每个人都会编程,也许街角一家夫妻店的老板可以编写几行代码来定制他们的LCD显示器,发布本周的促销活动。或者,丈夫可以写一个简单的APP,收件人只有他的妻子,就像今天,(丈夫)发来的邮件,唯一的收件人是他的妻子。教育的普及改变了人与人之间的交流方式。现在,人机交流变得同样重要。在可预见的未来,编程能力将成为最深入的人机交流的基础。所以,我不同意那些说世界只需要几百万程序员的说法;我认为几乎每个人都应该学习编程,就像几乎每个人都应该学习阅读和写作一样。作者:洁宝妈妈,海归妈妈,有两个可爱的娃娃,十年科技媒体从业经验,在这里分享与教育相关的新技术、新概念和干货。
