犹豫少儿编程学不学?放心学吧
01/
关于小孩学编程的问题,先说一下我认为编程具有的优点:
1、编程,可以强化人的逻辑思维。
因为编程粗暴点理解就是一连串有先后顺序(步骤)的指令,而过程中的指令是有条件判断的(如流程图那样)。所以前后指令是有逻辑关系的,而一整个程序下来逻辑也是必须紧密相扣的。
2、编程,可以强化人的设计思维。
一开始是条条大路通罗马,继而觉得没意思,想找点有挑战性的,找出一条最高效、省成本的路线,或者自己有兴趣的路线。这就涉及到需要自己思考如何才能实现?你说,这是不是涉及设计了?实际工作中的程序员在写代码前也必须思考一番——如何设计一个比较优的技术方案(是经得起评审的)。这个设计思维是我接触了好多所谓的“儿童编程”都没提到的,而我觉得这才是精华。就正如财务会计或者审计人员做底稿时,写了n多excel公式,但数据量一大就会慢,此时就会设计一下如何精简勾稽关系去提高打开表的速度。编程嘛,“编”就包含设计的意思。
经过这两个思维的强化,小孩必定或多或少都会养成一种“心思细密”的习惯,具体会表现在看见一个现象的发生时会自然去思考为什么会发生?是谁让它发生?(哪怕思考不深入,也会有这样的习惯);买东西时,可能会多对比,因为他要选最优。整体而言,对专注力有一定的提高。
我带过很多应届毕业生或实习生,他们都没技术背景更不懂编程。大多数经过半年多的编程接触,他们在逻辑思维上真的进步很大。简单举个例子,日常我们经常扫描或识别一个二维码进入某个活动界面,实际情况是任何一个活动都有期限的,下图中,1是刚来时的梳理思路,半年后2的思路已养成。所以编程不是随便写几句话,它是有一连串可以闭环的逻辑的,要想闭环则必须设计好(也就是要考虑好异常情况,按着链路设计好逻辑)。
02/
个人认为不友好的地方(不存在缺点):
1、编程需耗费较多时间。
真正的编程是极其枯燥的,千万别被市面上所谓的图形化编程误导(当然这是为了启蒙小孩的兴趣,也是所必须的)。真到写代码时,代码的各种规范、表达方式是需经过大量练习熟悉的,而且代码是需要反复调试,因此相对来说需要占用较多时间。
2、对眼睛不友好。少儿编程,长期编码,要注意眼睛,怕近视,如下图密麻的字符界面。
3、容易陷入程序化思维。
日常中,还真见不少被程序绕进去而本末倒置、为了做而做的程序员。编程说到底就是解决问题的一种方式,根本目的是为了解决问题(生活问题、工作问题)等。科技(编程)是对日常生活工作赋能的,但解决问题的办法不一定用得上编程。举个例子,业主投诉自家的电梯很慢,老是等很久。面对这一问题,一般工程师是想方设法如何提升电梯的上落运行速度,但其实程序之外还有一个办法可行,而且成本更低,效益更好,就是在等电梯的空间里装些镜子就可以了。人们等电梯时只要看到镜子都会照一照,这就将等电梯的时间转移出去了,从而不觉得慢了。所以,生活无处不是设计,编程之外还有更强的解决方案。
03/
回到少儿学编程这问题上,我直接抛观点:经济条件允许的,可以学,而且建议有这犹豫的父母必须送去学(因为谁都是不到黄河心不死的),但千万不要抱有太高期望,顺其自然,抛开犹豫让孩子自己学成怎样就怎样(也就是标题的“放心学”)。首先我们要相信孩子的潜能是无限的,每个人都说合适才是好的,但不去尝试又怎么知道合不合适?不学,谁知道不行?对吧。其次学的过程,让孩子自己发挥,逼着去学的不会有好效果(至少短期是这样)。天赋出来之时,根本不需要父母逼,少儿时怎么学都学不进去也不代表他没天赋,或许他以后在大学时突然强起来。但当在小孩5年级的时候,如果在编程方面没什么优势,那么记得及时刹车。那时,也并非完全没收获的,毕竟在逻辑思维+设计思维多少都会有一定提升,只是5年级以后将继续花在编程的时间回归到课本上,效果会好很多了。
有一些误区:
1、编程需要英语好。不对,编程不需要英语十分好,应试教育下的英语绝对够。但需要注意一点,技术这个领域是需要不断探索、交流、研究的,不可否认当前的技术依然是硅谷的比较前沿,一些技术类的经典书籍,读原著是比较通透一点,所以英语好对知识的获取是很有帮助的。
2、编程可提升数学。不对,数学是推动编程的,但反过来说就很牵强,编程是用来帮助解决问题的,也经常用于解决数学问题(如信奥),但最多也是对数学的知识巩固,说不上提升数学(尤其是K12的数学)。实际情况是低阶或者简单的编程,甚至日常工作中很多时候的编程都无需用到高深的数学支撑。真正涉及高深数学的编程绝对有,但少,一般都是利用数学知识解决偏底层的问题,或者解决性能或算法的问题时才用到。这也是为什么很多人大学都考不上,仅仅读了一两年北大青鸟编程培训机构出来就找到不错工作的原因,而现实工作中,很多厉害的程序员他的数学也没想象中的好。因此,先搞定数学吧,只有数学牛才有可能编写出让人顶礼膜拜的神级代码。(看到这,一些宝妈就会发起敲问了:“你说编程不能提升数学,但数学不是需要逻辑思维么?编程不是提高逻辑思维么?”。嗯,这是一个很好的问题,这也是这文章的核心所在。这也是我不反对少儿学编程的原因,我只是反对一些在K12内想利用编程提升数学的观点。我们对这问题拆解一下,首先编程是可以提高逻辑,但不是唯一方法,如果没其他好方法可以尝试编程。其次数学除了需要逻辑之外,还需要数感,需要抽象思维,并不是编程好数学就会好。)
最后,我们父母也要清楚认识到,锻炼逻辑思维或设计思维不一定只有编程的,还有很多其他方式,家长见缝插针式的引导,效果会比编程好几倍。对于少儿编程学不学,我觉得其实没什么好纠结的,主要就是看孩子的兴趣,然后再看学费、时间成本和精力就ok了,这几个因素都没问题的话,就赶紧送去尝试,但要记住高年级时看实际情况懂得及时刹车。
04/
对我小孩而言,编程学不学目前还不能决定,相比之下会更注重培养孩子的以下各项能力及数学等课本知识,唯有将这些底层技能掌握好,编程之路才会走得更顺。
1、思维拓展。养成多观察、多提问、多思考、多总结的习惯,只有孩子的思维活跃才不担心被固化、被程序化。
2、阅读理解。只有清楚理解到一个问题,才能找到多种解决办法及从中找到最优办法,例如让小孩帮忙买瓶冰的可乐,小孩是否有能力挖出真实诉求是现在很热也很口渴。这个能力也是日常工作中,能力强的员工与一般员工的区别。
3、逻辑能力。多问孩子为什么,反过来后会不会这样,涉及“一定”和“不一定”的问题交流。例如汽车少了个轮子是一定开不动的(正常情况下,杠精手下留情),但汽车开不动就一定是少了轮子吗?因为汽车开不动,所以我迟到了,所以我迟到的原因就是因为汽车坏了,成立吗?车开不动,不会改用其他办法么?多与小孩交流这类问题,逻辑上是一定有很大提升的。关于逻辑能力,我可能会引入少儿编程里的Scratch(图形化编程),纯粹练逻辑,不打算走下去(写代码)。
4、洞察能力。洞察也就是深层次的理解,是挖掘深层次现象或原因的方法。我常用的方法就是每当出现质量事故时,都要求团队给出表面原因、根本原因、临时解决措施、长远解决或保障措施。而培养孩子这方面能力最简单的方法无非也是多问为什么,多思考。上面几个能力是有先后顺序的,只有足够、深刻理解一个问题时(点),结合逻辑能力找到影响这个问题的直接或简直因素(因为..所以..., 线),经过多番思考,还可能找出其他方面的几个因素(面),最后一步步深挖洞察出根本问题所在,然后才找到临时解决办法,长远解决办法(空间关联,体)。这样的一个点线面体的拓展过程,就可以让孩子从一个问题可以发散拓展到整体(全局意识)。
5、学习能力。其实就是一个简单的 “ 输入 → 内化 → 输出 → 总结” 然后再下一路输入的过程,也就是费曼学习法。被动接收知识后,自己必须经过一番内化,其实是否输出不重要,只是输出是为了检视内化的效果,经过输出后,若发现不对,那就进行总结(总结哪里不对,其实就是新一轮的输入+内化)。这个方法其实不说,大家都知道,也会这么做。小孩听一个故事,然后自己亲口复述,复述出来的内容就是他内化的内容,假设对小孩100%输入一个故事,小孩会听明白或记住其中60%,但自己说出来是可能是40%,经过总结后,最后小孩的下一轮内化后会是60%,重复多几次后就是100%。
综上,每个人学编程的目的都不一样,无需理会他人意见,结合自身情况分析即可。于我而言,强基计划竞争十分激烈,可谓万人争过独木桥,入选的概率万中无一,只要选拔就必定会有第一名,谁是第一名?选拔机构不在乎。但我的孩子是我的,对我而言就是100%,马拉松式的人生中我希望自己的孩子能轻松快乐一点,有一个正能量的人生价值观,有好的底层能力,有好的学习态度与习惯(谦虚&终生学习),能独立处理好各种人际关系(情商),学习好不好不敢奢望但我会和孩子一起努力,。