孩子该不该学编程?
事关孩子未来发展,确实马虎不得。
争论
随着年岁渐长,高中同学微信群里面的讨论也从奶粉代购变成了子女教育。
同学A是华尔街精英,大女儿已经六岁了。现在他每天都要操心女儿的教育问题。他主张培养孩子兴趣,课余活动的选择都按孩子自己的意愿来决定。
他的大女儿和几个同学现在正在用乐高教育(Lego Education)旗下的一款产品Wedo 2.0学习编程。
同学A家附近华人比较多,这些家长就轮流带着孩子们去博物馆和科技馆找灵感,然后指导孩子们在室内用Wedo来编程做设计。
家长里面藏龙卧虎,许多是名牌大学CS和EE专业毕业,指导孩子们编程得心应手。我这同学专业是会计和金融,不懂编程。每次他都多给孩子们带些点心糖果,在一边看着孩子们自己学自己玩儿,很没有成就感。
受到这种激励,他也想学点编程。我把自己的那篇《
七周学会做搜索引擎》发给了他。他读了好几遍,觉得编程很值得学,MOOC太有用了,兴奋得睡不好觉。
他问孩子们的编程该如何入门?我依然推荐了Python语言,但是使用的MOOC与成人的完全不同。
我俩在群里的交流引起了许多老同学一起参加讨论,气氛很热烈。
旅居澳洲的同学B自称科技民工,其实他毕业于国内某著名工科院校,绝对是专家级别。他觉得编程尝试一下就好,不可以深入进去学。在他看来,编程的模式会固化孩子的思维,让孩子不容易接受新的知识和技术。而编程语言、系统环境总是在变化的,小时候深入学了某一种编程语言,长大基本上都已过时,用不上了。因此学编程还不如学下棋,对孩子的思维更有启发。
我俩不同的观点引起同学们的热烈讨论,许多没有IT背景的同学一时无所适从。
路径
同学B和我的初衷都是为了孩子好。我们的主要分歧来源于对“学编程”的定义。
我们这些80后,基本上都是上了中学才拥有学习电脑的机会。教材都是先是从ENIAC开始讲历史。了解了一大堆看不见摸不着的体系结构、内存寻址方式之后,还得掌握各种数据结构。考试之前不得不去背诵冒泡排序、选择排序和快速排序算法之间的差别。
上机的机会是很稀缺的。学校机房里面空调、地毯一应俱全,机器却是早已过时的Apple II,里面只能敲点儿Basic语句。大部分人家里都没有电脑,难得有机会自己编写代码解决感兴趣的问题。
今天的孩子境遇可是完全不同。智能手机、笔记本电脑早已不再是奢侈品。孩子完全可以用自己的一二百块压岁钱或者零花钱买个 Raspberry PI 这样的电脑芯片。计算机的构成根本无需再拆机介绍,一目了然。这种电脑芯片麻雀虽小五脏俱全。插个键盘、鼠标和显示器,就是一台全功能主机了。编程环境全都齐备,学习门槛极低。
我给孩子们推荐的Coursera平台MOOC来自Rice大学,叫做"
An Introduction to Interactive Programming in Python"。这门课不是让你记诵排序的N种方法,也不要求你懂得级数求和公式,更不需要你会用递归方法写汉诺塔解决方案。
这门课是教你用Python语言
编游戏!
教师是这几位怪蜀黍。
他们为了这门课程专门设计了一个在线的程序编辑和运行环境。初学者最为头疼的系统兼容性、程序下载安装和版本依赖等问题在这里统统不会遇上。只要你打开课程提供的
这个地址,就可以看到编辑器了。
左侧你输入Python语句,运行结果如果是文本,就会出现在右边。如果调用了图形界面,结果会出现在单独的窗口中。
点击Demo可以看到许多作品。不少都是这门课之前Coursera学员做出来的。
我们看看其中Steve Knock创作的Rice Racer。
编辑器左侧就是普通的源代码和说明文档。游戏全部的要素都在这里。你可以深入进去了解程序运行机制,也可以随意修改源码让它执行你想要的操作。点击屏幕左上方的执行按钮,你就可以在新窗口里面玩儿游戏了。
这游戏的画面确实不如极品飞车做得精美。但是如果你的孩子学完课程,自己做出了这样的游戏,你能想象出他/她和好友脸上兴奋的表情吗?
这个课是给编程零基础的人准备的。不用担心老师会快速嘟囔一堆让你望而却步的艰深专有名词。课程深入浅出,老师会一步步教你Python语言的知识,每次课都能让你掌握一个新技能,不断给你的小游戏添砖加瓦。
学这课需要多长时间?因人而异。我班上曾有一个学工商管理的学生,之前毫无编程基础。她在24小时之内就搞定了这门课的第一部分(课程共分为两个部分)并且拿到证书。
这样的编程课,你如何让孩子浅尝辄止?他们一旦上手,恐怕根本就
停不下来,因为
乐在其中。我不认为值得学习的必要技能可以通过蜻蜓点水的“尝试”便能真正掌握。
能力
学会了编游戏有什么用?能保送吗?高考能加分吗?能保证将来找到好工作吗?
咱别那么急功近利好不好?
记不记得几年前曾经有一款深受大众欢迎的游戏《愤怒的小鸟》?该款游戏霸占iTunes Store免费应用下载排行榜第一名很久。你知道它最终被谁赶下了冠军位置吗?
是这个当时年仅14岁的小伙子。
别的孩子都在疯玩儿的时候,他一头扎进图书馆,找书籍自学iOS程序设计,然后做了自己的一款免费游戏,叫做Bubble Ball。
游戏没有什么花哨的界面,但是人们疯狂地喜欢上了它。游戏上架才1个月的时间,下载数量就超过300万。
有了这种深受大众欢迎的好作品,名誉和财富会主动找上门来的。
游戏编程与其说只是一项技能,不如说是个催化剂。我们不妨来分析一下。
玩儿游戏的时候,规则是
别人定的,你是
消费者。
一旦你开始编游戏,规则就是
你来定的,你变成了
生产者。
千万不要小看这个微小的变化。从此之后,当你的孩子看到新的好游戏的时候,他/她获得的就不只是兴奋感,而是随时都可以汲取营养,学习知识。别人傻玩儿的时候,他/她在考虑的是“这款游戏我能不能做?”“为什么作者要这样设计规则?”以及最重要的“这款游戏为何受欢迎?”
这就是“外行看热闹,内行看门道”。
我们信息管理领域有所谓的“信息偶遇”,很多时候人们一直渴求的信息会突然自己找上门来。就像溢出的洗澡水之于阿基米德、落下的苹果之于牛顿。
许多人以为这不过是纯随机事件,可遇不可求。但是首先你心里必须有疑惑和问题存在,然后才更有机会受到外界信息的启发。如果你没有思考过吸引力的事情,别说苹果,就是被椰子砸了也照样没用。
能编出好游戏的孩子,肯定是具备优秀观察力的。此外他/她还会在游戏制作中逐渐感受到和用户的互动,会主动愿意了解美术、音乐、用户界面设计和心理学的知识。
他/她可能会遭遇失败,但这并不要紧。从不断的迭代和改进中,他/她会逐渐明白所有的作品都不可能完美和一蹴而就。这样的孩子,将来可以大概率摆脱“表现型人格”和拖延症的困扰。
游戏越做越大,便需要与他人的协作。他会学习沟通,照顾他人的感受,以及积累管理经验。
而且最好的消息是——作为家长,你根本不用去督促他/她,上述所有的知识获取与能力习得全都可以靠兴趣驱动,而且效果还比你照本宣科的劝导和说教要好得多。这就是
兴趣的威力。
比尔盖茨上中学时积极帮学校设计座位分配系统,为什么?
为的是能够和最漂亮的女生们坐在一起。
创造
谈到这里,家长们应该不再担心学编程对孩子知识和能力的“不良影响”了。下面我们来谈谈家长们可能最担心的一个问题——小时候学编程会不会限制孩子们的
创造力呢?
我们来看看他的例子。
他的外公是个大学统计学教授。因为眼花了,自己打字编程不方便,外公就把他抱在腿上,让他替自己把草稿纸上面的统计程序代码输入计算机。那台旧计算机是Commodore VIC-20,当时就已经不再是什么流行的型号。输入的程序语言是Basic,现在的孩子连编程入门都不再会使用这样的语言了。
但是他在外公的指导下学会了Basic语言后,开始编制自己的程序,而后触类旁通,自学了汇编语言等其他编程语言。
上大学时他发现自己计算机上面安装的操作系统用着不是很得心应手。而当时品质最好的操作系统Unix又太贵。
换做是你怎么办?找盗版?
他的解决办法是——自己做了个操作系统,还免费共享给了所有人。
你嗤之以鼻。这种手工作坊生产的山寨操作系统能好用吗?怎么能和微软的Windows比?别逗了!
如果你今天用的是安卓手机(基本上就是除了iPhone以外所有主流的智能手机品牌和型号),你在用他的系统。
如果你用过搜索引擎,你用过他的系统。
如果你用过电商平台购物,你用过他的系统。
甚至连“根据伟大的指导者金正日同志多次莅临指导”,“独立”研制而成的朝鲜操作系统,也不过是在他的系统上改了改界面而已。
如果他打算挣钱,仅这个操作系统的授权费就足以让他早早当上亿万富翁。
他没有要一分钱。
如果他愿意停下来,享受成功的荣誉。每天都出去做演讲也能过上富足的生活。
他也没有。因为他的创造力还远没有发挥完。
2005年,他又创造了Git。这东西能干什么请自行Google,但现在世界上最优秀的程序员们离开了这东西就无法协作。请自己脑补画面。
他就是Linus Torvalds,IT领域大神级别的人物。
他就是从小学编程的。用当时就已过时的系统环境学了过气的编程语言。
他长大后缺乏创造力吗?