未来世界的人将会分成两种人:一种是会编程的人,另一种是不会编程的人。
会编程的人可以创造、可以写出改变人类社会的软件;不会编程的人,如果学会使用别人写的软件,则可以充当辅助的角色,否则连忙都帮不上,只能在观众席看热闹。
在未来的舞台上,孩子能扮演什么角色,就看父母的智慧了。
家长不能等,也不要等
有一个大学计算机系在读的男生在Quora(相当于国内知乎)上提问,他说他上了计算机系后,老觉得自己程度差人一截,后来才知道有些同学从小就接触电脑编程,功力已经很深厚。他想听听别人的意见:我要怎么做,才不会觉得自己怎么都比不上那些从小就开始写编程的人?”
这是别人活生生的例子,与其像他一样长大后再来怨叹,如果小孩还在国小、国中或者高中就读,为什么不让他们现在开始就学编程?
最近有位妈妈来找我们,询问她的女儿现在是小学六年级,学程序会不会起步太晚?我们告诉她,还是小学生,学程序怎么会太晚?
也在不久之前,有一位家长来问他的小孩才五岁,学编程会不会太早?
ScratchJr
我们告诉他,美国麻省理工学院的媒体实验室(Media Lab)发明了一个小学生学编程的工具,叫做Scratch。她说她知道,我们说那你知不知道Scratch还有一个版本叫做ScratchJr,她说没听过。我们告诉他ScratchJr是设计给5、6岁的小朋友学程序设计的工具,它和Scratch基本的功能相同,但界面更简单,而且不需要有阅读能力要求,学龄前的小朋友,就算不识字,也可以用ScratchJr来学程序,有这样的好工具,为什么不学?
我想说的是,5岁的小孩开始学不嫌早,国中、高中,甚至大学开始学也不嫌晚。愈早学的人,将来的发展会比别人实力更强、更深入。
电脑编程,是一项好处非常多的学习项目。以下我列举了11个孩子一定要赶快开始学电脑编程的理由,希望能改变许多父母的想法,让孩子早日拥有电脑编程的技能,创造他们不一样的明天。
1 学编程可以智商变高
变聪明和智商变高是不同的两回事,学编程可以让小孩不但变聪明,而且智商变高。研究结果显示,学过电脑编程的学生在不同的认知能力测验(Cognitive Ability Tests)分数上,比未学过电脑编程的学生高出60%。
德州大学的脑神经专家研究结论:从事新奇具挑战性的脑力活动,比如学习一种新的语言或一种新的电脑编程语言,可以激活任何人(不只是小孩子)的脑细胞,让学习者不但保住已有的脑细胞(不用的脑细胞会自动死亡),而且能增生新的脑细胞。脑细胞越多,中间的联系网路愈绵密,愈畅通无阻,这个人就愈聪明。
这是因为在和电脑交流的过程中,你会碰到无数的困难,因此“解决问题”会是你经常性的工作,在不停绞尽脑汁的过程中,会不停地犯错,失败,在除错、解决路障的过程中,你的Critical Thinking(思考力)、Creativity(创造力)、Algorithmic Ability(演算力)都会大幅精进。
学电脑编程会让人变聪明,智商变高,这是毫无疑义、不必争论的事实。父母不但要让小孩子赶快学外,自己也应该来学。你会发现,这会是一段美妙的智力探索的愉快经验,同时也可以和小孩有更好的互动机会。
2 学编程让你成为一个优秀的沟通者
我们看到有一些政治人物或领导人,常常执行一些政策,原本有好的立意,符合公众利益的出发点,结果却常常弄得大家怨声载道,一片美意变成一意孤行,这是哪里出了问题?
通常是沟通出了问题。我们的学校根本没有教怎么沟通,学生接受了16年或更久的学校教育,出了校门不知道怎么沟通,一般人如此,社会的领导阶层也不例外。
学习电脑编程就是学和天底下最笨的人沟通的活动,那个最笨的还称不上人,就叫电脑。
电脑不是能从事很复杂的计算吗?不说它聪明绝顶就算了,怎么能说它笨呢?对,电脑能做很复杂、很困难的运作,那是因为指挥电脑的人聪明,电脑本身可是一点都不聪明。
它需要非常明确,百分之百不含糊(Unambiguous)的指令,一个命令、一个动作去告诉它。只要指挥稍有含糊,它就听不懂,它就直接罢工,动也不动。要不然就是做出令人不解的举动。
一旦能让电脑以它听得懂的程序语言沟通,那么和聪明的人类沟通就能畅行无阻。所以说学习电脑编程是绝佳的沟通训练,是学习成为一个好的沟通者的第一步。
3 由Learn to Code 到 Code to Learn
麋鹿音乐程序
学习电脑编程(Learn to Code)只是第一步,接着是使用电脑编程来学习其他学科(Code to Learn)。
学习电脑编程的过程里,学习者会学到相关的事物。首先,他们学到包括变量(variables)、循环、条件等数学及计算机式的思考方式。
他们也学到怎么把复杂的问题切割成小任务(tasks),怎么解决问题,怎么一步步的调试(debug),怎么设计projects,怎么重新整理思路,怎么处理互动情节,怎么说故事,怎么和队友沟通;这些都完完全全超越了一般人以为电脑编程。
举MIT发展出来的Scratch为例,小孩子学习Scratch的第一个project常常是设计生日卡。上Scratch的社群看看,那里有全球的儿童上传、超过好几百万项的作品,里面各形各色的projects横跨包括美术、音乐、数学、语言、社会科学、历史、地理、科学各种不同的领域。
有人设计出圣诞老人(Santa)和圣诞老人的麋鹿(Reindeer),每一头麋鹿都拿着不同的乐器,都在吹奏着圣诞歌曲的一部分。这不就是分辨各种不同乐器的声音最好的学习法吗?这,就是Code to Learn (由学习电脑编程来学习其他科目或事物)最好的例子。
4 学编程可以训练写作及表达能力
说故事与创作性的写作(Creative Writing)有三个重要的元素,那就是故事的结构(Structure)、故事里事件的顺序(Sequence),以及用最清晰的表达方式(Clarity of Expression)来叙事。结构、顺序、清晰表达这三件事也是编程最重要的三件事。
结构松散,顺序错乱,叙事含糊的程序写作,虽然也能指挥电脑去工作,但绝对是事倍功半。简单地说,就是一个不好的程序写作。
因此好的电脑编程的学习,能够有效的帮助学习者培养出脉络清晰的写作─即说故事─能力,这是极少被人提及却很重要的学电脑编程的好处。
5 编程是一种特殊的思考训练
我们常说,律师或法官的训练是很严格的,法律的条文更是严格,不容有你说我说他说的不同解释。因此,法律是规范人类行为最严格的条文,应该毫无疑问。
电脑编程相比于法律条文,其严谨有过之而无不及。而且和法律条文不同的是,它没有国界,从科技先进的硅谷,到最贫穷落后的国度,它都是只此一家,别无分号的一招一式走天下。
如何分解一个任务
在学习编程的过程中,需要把一件很复杂的事,有系统地拆成许多小部分,这样电脑才能理解。拆解任务的思考训练,让学习程序的人在解释或执行一件复杂事情的时候,也会采用同样的方式。如果电脑能理解,那么其他人能理解得更清楚。
编程对大脑是一种很特殊的训练,主要是因为沟通的对象不是人,而是一台笨机器,机器无法读出言外之意,只要是你说了它听不懂的话,有一点点语意含糊或者不是事先约定的文句方式,它马上就给你吐回去。
不仅如此,电脑编程的训练还是一种抽象式思考(abstract thinking)的训练,你要学习如何对电脑说明你想要的事物的特性(features)、概念(concepts),还有你要电脑做的行动(actions),这些都是非常引人入胜的心智活动。你学会了怎么做抽象思考,同时也会学到许多其他的思考方式。
学习电脑编程可以改变你的思考方式以及处理事情的方法,你会变得有能力把问题看得更清楚,解释得更清楚,评估得更清楚。你会养成找出patterns(型态、型式)的习惯,由patterns找出过去解决过的问题,再结合其他的patterns,设计出更复杂问题的解决方案。
6 经由编程学习计算机式的思考方式
常听有人说,学电脑编程的益处就是可以学到逻辑思考的能力。那我们观察到的学习编程的孩子是如何学习计算机式的思考呢?
1.铺陈问题:使用Scratch里面的人物、影像、音乐、对话等元素,创造他们的场景、结构、情节、顺序来说他们想说的故事。
2.组织数据:把故事元素以想像的走法组织起来。
3.表达数据:移动方块,根据情节、结构等来操作故事的元素。
4.演算式思考:思考如何以迴路或其他自动化的方式,以达到最有效的解决方桉的过程。
5.算法运用:当他们在程序设计中运用学过的方式去解决复杂的问题后,他们将解决问题的方式运用、移转到解决学业或生活上所遇到的问题。
7 赋予学生能力解决社会问题
人类在面对天灾时的无助和渺小,从有人类开始一直到今天都没有停过。和过去不同的是,科技的进步慢慢开始促成人类利用科技来解决天灾所带来的问题。
四川大地震发生时,Ge Zhouchen还是一位高中生。2014年他和大学计算机系的同伴们,一起用软件建构了一个在紧急灾难事故时的通讯平台,他们的平台让政府的救灾部门和其他营救团体,甚至受灾人在停电、网路不通的状况下,仍能交换讯息。
这就是用软件,用电脑编程来解决社会问题的一个最好的例子。电脑编程的能力给了这群学生改变世界的可能。
同样的斯里兰卡的四位大学生,为了改变他们国家处处都是垃圾的现状,开发了两个手机app,一个给垃圾车上的人员使用,另一个则供民众使用。民众会在app上看到垃圾车抵达时间,然后由垃圾车人员扫描发给每户使用的QR code,以记录每户的垃圾量。
学习电脑编程是empower(赋能)的过程,学会以编程来指挥电脑,能解决的绝不只是科学或工程的问题,有愈来愈多的新创公司、非营利机构、社会企业(social enterprises),或者B-corp认证的盈利公司,都在用软件解决社会问题,把我们共同生存的世界推向一个更美好的境界。
8 学习编程更了解未来世界的运行规则
Marc Andreessen
Marc Andreessen的文章《为什么软件正在吃下全世界》提到Facebook、Groupon、Twitter、Zynga、Foursquare、LinkedIn这几家软件公司,这还只是他的公司和他个人投资的少数软件公司。
环顾一下我们的生活,Google、Apple、Facebook、Youtube、Uber、Airbnb、Amazon、Microsoft等等,这些科技公司正在改变人类的生活,主宰着人类的未来,这是不争的事实。
我们很多长辈,需要儿孙辈帮他们处理手机或者平板。但是以科技进展的速度来看,不要说是长辈们,对每一个人来说,学习新科技是每一天的工作。比如,现在我们很多人出门已经不带现金了,买什么都用电子钱包。这还只是最浅显的例子,其他像是无人驾驶的汽车、新的通讯方式机器人的发明、3D打印机、不同的看病方式、新教育等等都正在颠覆人类的生活方式。
这一切,都牵涉到软件与硬件,也都牵涉到科技。电脑编程的学习,让我们了解许多新的发明,新的做法背后的原理,让我们更能理解新的潮流,让我们成为整个人类社会向前的一份子,而不是站在路边看火车急驶而过的人。
要进入未来社会的人,每个人尤其是小孩都需要对电脑编程有基本的学习和了解,这并不是未来要以程序设计为工作的人才需要有的训练,而是现代公民基本的教育。
9 用编程能力开创自己的事业
我们说过学习电脑编程带给你自由与快乐,这已经是一件很棒的事了。但是学电脑编程的妙处还不止于此,它能够带给你无穷的威力。怎么说呢?
1.学习程序让你能自己做自己的网站。
如果你能编程,就能随心所欲地架构自己的网站,那你的程度就超过至少80%以上的人。有许多人就为此去学编程,这就像辛苦学习一种外语,到某种程度之后,可以和外国人直接沟通一样,是非常令人振奋的事。
2. 学编程让你可以制作产品,甚至创办一家科技公司。
如果说制作网站是第一个学程序设计的里程碑,那么用程序编写出一样产品就是一个更大的里程碑。这就好像烹饪学校的学生终于学成,到餐厅去担任主厨一样。
当然产品有初级、高级之差,有粗糙、精美之别,有设计原型(Prototype)、完成品之较。这并不打紧,因为高级的、精美的、高规格的产品都是由初级、粗糙、原型开始,这是时间、功力和人力的差别,都是假以时日可以做到的。
以电脑编程的能力创业者,有太多成功的先例,如创办Microsoft的比尔盖兹、创办Google的Larry Page和Sergey Brin、创办Facebook的马克扎克伯格,他们创办的事业都是改变人类生活的公司,这些公司有一个共同点:都是由创办人一行一行的电脑编程写出来的。
或许你觉得你没有像他们一样大的能力,但是不要妄自菲薄,一步一脚印,连你自己都不知道你能走多远,你确定你真的做不到吗?
10 软件行业的工作机会远超其他行业
电脑编程是一种介于科学、工程和艺术之间的混合技术,它适合男生,更适合女生,适合数理工程倾向的人、也适合文科倾向的人,它既具有数学般严谨规则,又需要艺术创作的原创力(Creativity),它有点难又不太难,任何人都可以应付自如。
我们住在西雅图的时候, Microsoft的总部在Redmond,Google就在Redmond微软总部的外面设立一个办公室,专门招揽Microsoft出走的人才。这种抢人大战,在我们搬到加州的硅谷之后,看到的可说是更触目惊心的肉搏战,Google、Facebook、Apple、Yahoo,还有许多大大小小的公司,都在近距离之内互抢人才,从Facebook付给尚在学的暑假工读大学生的薪水(一个月大约美金8400元),就可以想见全职工程师是多么吃香。
历史上,可以说没有一个行业的从业人员有如此的需求,这是一个大好的机会,而且在未来几十年之内,软件的人才都会供不应求,现在不开始学程序设计,更待何时?
而且,程序设计的能力如果自小开始培养,等到进入职场时,程度就能超过他人,所能负担的工作难度和复杂度也会高过他人,待遇自然和工作能力成正比。如果要看成是一项投资,这项自小学程序的投资,其报酬率将会十分惊人。
相关阅读: