5G技术、人工智能、虚拟现实,越来越多的新词汇冲刷着我们的认知。“未来已来,编程为王。”在大众看来,编程似乎与读写一样,成为接轨未来的必备技能。然而,美国程序员爸爸Joe Morgon却表示并不会让自己的孩子学习编程。他指出,编程与读写在重要性上并不对等,而且简单的学习编程语法并不能培养孩子解决问题的能力。更重要的是,当我们强迫孩子跟着死板的流程去学习编程,只会抹杀他们的好奇心。
昨天,我在美国知名的在线杂志Slate上看到一位美国程序员爸爸反对儿童学编程的文章,虽然我不赞同他的结论,但是他的想法却发人深思,值得一读。
这位名叫Joe Morgon的程序员发表的文章标题是:《我是程序员,我不会教孩子学编程,你也别教》。
为什么要让孩子学编程?
最近一次夜跑时,我路过一个很大的橱窗,里面展示的是教孩子们学编程的书。其中有些书我看到过,但我从来没有见过这么多针对小学生编程的书。
而这些书不过是冰山一角,市面上还有大量跟编程相关的资源——夏季编程训练营、课后编程俱乐部、教幼儿园孩子JavaScript基础知识的APP——它们都在向孩子传授面向未来的技能。
父母为什么要让孩子学编程呢?
新加坡一个编程校外班
答案显而易见。
除了学习开发软件之外,还有什么更好的方法,能让我们的孩子迎接一个由软件统治的未来世界?
如果一切都将自动化,那么做控制自动化的人会更安全。如果学习编程有用,那么宜早不宜迟。
虽然这些学习编程的产品可能教孩子们特定的编程语言,但却与真正的软件开发关系不大。
编程就是读书写字?
我的一位前同事曾经在一个编程训练营接受过训练,这个训练营的口号是“编程是一种新的读写能力”。这种刻意营造的焦虑感是所有编程书和游戏的核心。
正如一本很火的书中所描述的:尽早学习编程“是孩子为未来做好准备必不可少的一步”。这话给人的印象是,不教孩子编程在某种程度上等同于不教他们读书写字。
这种说法显然是荒谬的,编程不等同于读书写字。虽然大多数父母都受过教育,并且知道给孩子读书,但他们大多数并不是程序员,也不知道程序员需要什么样的技能。
儿童编程书将编程看作能够为一系列问题找到“正确”解决方案的能力。如果你的孩子能够掌握编程语法(syntax),就能够快速轻松地完成任务。
但,这并不是程序员的工作方式。
学会编程语法就是学会编程?
软件开发是一项艰难的工程,是创造力和决心的结合。开发人员需要掌握的远远不止语法这么简单。
杰出的程序员不光是让软件能够运行,他们还希望开发出优秀的软件。
在职业生涯的早期,我编写了一些代码来配置和运行一组远程服务器。我的代码运行得很顺利——至少我是这么想的——直到大约18个小时后,夜半铃响,我得到通知:一组服务器宕机了。
我从床上爬起来,走到笔记本前,又运行了一遍代码来替换宕机的服务器。几小时后,又有一组服务器宕机了。
宕机并不是由语法引发的,如果有的话,服务器一开始就无法搭建起来。宕机的原因非常复杂,经过好几周和无数个被叫醒的夜晚,我终于解决了问题。
编程就是这样:先写代码,看看它是否有效。失败了就再试一次。如果问题很简单,有些开源代码就能解决。剩下的就是需要独创性的艰巨任务。没有书可以教你如何解决前所未有的问题。
这就是为什么我不希望我的孩子学习编程语法——我希望他们学会解决问题,深入研究问题,发挥创造力。
比起编程,掌握这些能力更重要
那我们该怎么教这些能力呢?
有一天,我的儿子有点担心他那把摇摇晃晃的椅子。我们一起观察了下椅子,儿子帮我找到了问题:有一个螺钉松了。我在家里找到一个适合的六角扳手,并演示怎么把螺钉拧紧。
之后,儿子很好奇:如果反方向拧会发生什么?他试了试,直到螺钉被拧出来为止。最后,我们反复将椅子拆开,再装回去——中间还装错过——直到儿子满意为止。
先试试,看结果如何,不行就再试一次。
当然,让软件运行只是开发者的第一步。下一步是使代码清晰、可重复使用、简洁。
在我职业生涯的早期,我曾经开发了一项功能,交给一位高级开发人员审核。他看了一眼我草率的间距、错乱的代码行和混乱的命名规范,说:“重写!”
我编写的代码可以运行,语法有效,但仍然是错的。优秀的程序员并不满足于让代码能运行,他们希望开发出优秀的软件。
对于许多开发人员来说,这种追求品质的感觉是最难掌握的。精心设计的代码让人赏心悦目,而丑陋的代码让人退避三舍。
一流的开发人员学会将抽象的逻辑与艺术家的敏锐融合在一起。程序员也要学着信奉一点,那就是代码的美感,与算法以及代码模式一样重要。
最近,我和妻子与儿子一起制作糖饼干。每次把配料混合在一起,我们就会停下来查看面团,讨论它的质地和颜色。面团是否光滑?所有配料是否已经均匀地混合在一起?
我们擀面团时,儿子摸了摸面团的表面,然后看妈妈演示如何让材料铺得均匀而且厚薄适中。
然而,最难的部分是切出形状。像所有的孩子一样,他本能地将模具推到铺开的面团的中间,而每次,我们都会解释如何将模子挨个放在一起以便有最大化地利用面团。
精确称量材料、如何在压面团时保持光滑度和延展性、怎样放置模具减少面团的浪费——每一步都让儿子知道什么是追求品质。
如果只是按照步骤操作,孩子就很难理解遵循菜谱和追求优秀的差别在哪里。
这些只能通过感受和体验来传递。每当你让孩子参与你认为重要的事时,就在向他们言传身教如何做好一件事,包括编程。
不仅如此,你还告诉他们,这个世界充满有趣的事等待我们去发现。你向孩子展示了如何保持激情,无论做什么,都要寻找那种转瞬即逝的品质感。
这样的好处是,即使他们将来不会成为程序员——实际上,大多数人不应该也不会成为程序员——同样的技能适用于几乎任何职业、任何爱好和任何人的生活。
当我们强迫孩子们学习编程时,我们其实向孩子灌输了这样一种观点:如果某些技能不是公认能赚到钱,就毫无价值。
成年人可以学习语法,只有孩子才能学会拥抱好奇心。
对于孩子是否该学编程,我想把人工智能大牛,斯坦福大学副教授吴恩达在美国问答网站Quora上的回答附在下面。
对了,他最近刚自我升级,发布了史上最复杂的神经网络——一枚小公主。
斯坦福大学副教授吴恩达是人工智能和机器学习领域国际上最权威的学者之一
编程:正确的学习观念
请教你的孩子编程。更重要的是,培养她不断学习的能力。
在计算机科学领域,我们所有人都习惯于每隔5年就需要接受新的技术和思维模式(比如从互联网 >云 >移动互联网>人工智能/机器学习的变革),因为新技术以这种速度被发明出来,使得我们之前使用的技术变得过时。
所以,从事计算机科学的人习惯于不断学习新事物。
但是,现在的新情况是,计算机几乎影响了其他所有行业。不仅计算机行业每隔几年就要发生变革,现在,各行各业的人都需要习惯变化。
这就是为什么不断学习将是你传授给女儿最重要的职业技能。
编程:让未来更美好
我还认为,(几乎)每个人都应该学会编程。很久以前,人们还在思考是否每个人都需要读书认字。那时候,少数有文化的僧侣可以给大众诵读经文,大部分人都不需要读书认字。
或许,我们只需要少数人撰写畅销书籍,而其他人都不需要学习写作?
结果我们发现,随着识字率的提高,人与人之间的沟通变得更好:不仅是少数人能撰写畅销书,我们也可以只为一个人写电子邮件,这(种私人沟通)也有它的价值。
今天,我们处在这样一个时代———少数能够编程的人为普通大众编写大量代码。但是,如果每个人都可以编程,也许街角一个夫妻店的老板可以写几行代码来定制他们的LCD显示器,发布本周的促销活动。
亦或,丈夫可以编写一个简单的APP,唯一的受众将是他的妻子,就像今天,(丈夫)发出的电子邮件,唯一的接收者是他的妻子一样。
教育的普及改变了人与人之间的沟通。现在,人机交流也变得同样重要,在可预见未来,编程能力将成为最深入的人机交流的基础。
所以,我不同意那些认为世界只需要几百万名程序员的说法;我想,几乎每个人都应该学习编程,就像几乎每个人都应该学习读书写字一样。
小编推荐一个学Java的学习裙【 六一五,七四一,六三六 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!
网友评论