走过的路

我身边有些朋友被我对python的热情感染,也有意愿要学习python编程,可大部分开始的时候斗志昂扬,然后接触到枯燥琐碎的基础知识后就渐渐神情萎靡学不下去,强撑一段时间后终究放弃。所以我希望探索出一条线上(online)线下(offline)结合的办法,解决无法自学又有意愿学Python的情况。

我尝试着在线下引导两个小学刚毕业的孩子和一个初一的孩子入门python,感谢两个朋友的信任,勇敢滴把孩子送过来给我做实验,还有一个是我自己的小孩。除了我自己的小孩ZH天天耳闻目睹看我折腾python还算有点意愿要学,另外两个小孩根本就是在懵懵懂懂的情况下被自己的娘半强迫性质地送过来的:

ZB今年中一(距离中二不到100天,嘿嘿),他妈妈不太懂电脑,我也懒得跟她解释啥叫python,为什么要学python编程......因为比较熟就直接跟她说“ZB必须学编程,送过来!“。我这朋友回头跟儿子ZB说哪天哪天要去哪里上python时,ZB既惊讶又抵触,中一的孩子独立意识开始觉醒。我这朋友是又好言相劝又各种诱惑哄,再加上给买了一双球鞋(现在孩子能看得上眼的球鞋都贼啦啦滴贵啊),这ZB才勉强答应过来试一下,但要求保留随时中断的权利。

JK跟我小孩ZH同年,都是刚刚经历过小升初的“苦难”,考完后无所事事,被“看孩子无所事事就不顺眼”的妈妈送了过来。JK的妈妈是一听到跟电脑相关的东西就犯晕的类型,看我天天跟打了鸡血似的逮到空就折腾这个python被感染,觉得python大概是个好东西:虽然我不明白它是啥,但我知道它是个很好用的工具,学会使用它只有好处没有坏。唯一的担心是JK学不进去,因为她自己看了一会PythonABC的视频后头昏目眩浑身乏力,必须果断关闭!JK貌似还没开始叛逆,妈妈说这玩意好就乖乖过来学吧。

我自己的小孩ZH小升初考试前天天跟我玩猫捉老鼠的游戏,大考期间也不例外,他就是一个中心(千方百计玩游戏)两个基本点(任何时间、任何地点)。那真是上天入地滴玩,一玩起来极度痴迷,不让玩就六亲不认。家里pad的密码经常性的被破解,破解手段也不是多高级,就是偷瞄啊、胡乱猜啊、看我敲密码时手的活动区域啊......这种不入流的手段。躲到厕所里玩、趴在床底下玩、钻到衣柜里玩这些都是小case,而且演技贼高,知道密码或者找到pad的漏洞可以绕过密码能跟我装很久“我玩游戏的时间完全受制于你”。几次下来我就变得疑神疑鬼,总觉得密码被破解了,总改密码我又怕把自己給改忘了。

我能想到的应对方法我都用过:摆事实讲道理,没用;一起制定玩游戏的规则和时间表,没用;让他自己管理自己的游戏时间,更没用;河东狮吼,没用;大打出手,没用;我甚至跟他一起分析过“游戏为什么让人迷恋”这种文章,依然没用。

被逼无奈,只能使用最阴一招,就是引导他学会自己编游戏,以毒攻毒。我封锁游戏期间,他会自己在卡片上画游戏玩,所以我打算先教python,然后让他自己去研究pygame,我对那玩意可没有兴趣...

 

我家老二现在玩的是Scratch,他是这样入门的:小一的假期我看他整天无所事事,就网上找了个scratch班,扔过去一个星期。一个星期你能指望一个一年级的小孩学多少东西?

这时我们受到了一位高手的指点(如果你在纽约,我可以介绍你一位非常棒的教scratch的老师),他介绍我们一本scratch的书,然后我们的问题变成怎么让一年级的老二老老实实坐在那里看那本翻起来貌似很有趣的scratch的书......

那时我家老大(就是天天跟我斗法玩游戏那位)已经在娃爸的指点下入了scratch的门,老大那时五年级,他就看那本书做书上介绍的project,老二在旁边打酱油旁观。我不知道老二学进去多少,反正每次他哥照着书做完他都跟着得意洋洋。

后来老大就“开始进入”小升初备战状态(我的意思是“应该进入”,我认为老大“从未进入”过,老大认为自己“当然进入”啦,自己这一年过的老辛苦老憋屈啦。就这件事上我得出的结论是:有的人真的无法在一件事上用10分力,他的全力在你看来是5分力,可在他自己看来可能真的就是10分力),这样他就没法再带着弟弟做scratch了。

正好这时我自己在学python时发现AI Sweigart(automate the boring stuff的作者)在youtube上有个scratch的视频系列。就想说服老二自己看这个教育视频,自己跟着上面做,可老二兴致缺缺,根本坐不住的样子。

这个我很无奈,我觉得可汗学院讲数学的视频好极了,感觉老二分数概念不清时让他看他也是一副受罪的样子看不下去。

转机的出现是因为我给老二找了个学习小伙伴,一位非常聪慧的小姑娘(传说中“别人家的孩子”)。我不清楚老二之后热情高涨滴学scratch是因为有了学习小伙伴,还是因为有了小女孩一起学,为了跟人家卖弄。

总之他俩一起看完了AI Sweigart的Scratch视频系列,还有我朋友推荐的那本Scratch的书,据说接下去想自己做游戏(这种话听听就好)。TA俩也打着学scratch的名义偷玩游戏,我和小姑娘的妈妈建立攻守同盟,就是TA倆学的时候我们必须有个人在旁边晃悠。

哼,这个偷玩游戏的祸根就是我家老大种下的,他带着弟弟偷玩,然后我家老二见样学样滴带学伴偷玩。

但对老二scratch态度的转变我印象深刻,这是我在教老大python时为什么要给他找学伴的原因。我没在家里教三个小瓜,机缘巧合让我找到了一个合适的地方,就是我朋友的补习中心。我这朋友很雅致,学画画二十几年,我这种粗糙理科女很艳羡的艺术女,所以她的补习中心也很雅致(内意思就是没有数字化电子化的痕迹)。

我进来后就开始“破坏雅致”的行动:挂上幕布接收投影仪打过来的图像,各种调试手提投影仪(光线太强只好换更大功率灯泡的投影仪),一大堆的电线插座,最后就是用mifi解决了网络问题(python安装第三方模块时要用到网络)。如果不是我这朋友的补习课室让我心仪,我可能都坚持不下去(就三个小屁孩,弄家就行啦)。万事俱备,只欠仨瓜!

给三个小瓜上课的内容得调整一下,那些幻灯片的部分他们看视频就好了,再说讲了他们也听不懂。

我让他们先见识见识python有多厉害,然后就带他们动手做,做下去就知道“哦,原来写程序是这么回事啊”。

我又对“python有多厉害“的演示程序做了增增补补,还是做个幻灯片吧,总要介绍一下python是啥都能干啥吧,结果这个幻灯片根本就没放,因为一放幻灯片,小朋友们就目光涣散。

我的主要目的是带他们入门,帮他们把环境搭起来,带着他们调试各章节的程序,在做的过程中体会。如果能激发出他们对python的兴趣,课后他们自己肯看PythonABC的教学视频那就功德圆满了。

我很相信下面这张图

所以我的如意算盘是带着他们调程序,调程序的过程中把python 的基础知识灌进去,能灌多少灌多少,灌不进去的课后靠他们自己看线上视频。最后鼓励他们以后做出什么好的实例分享出来(既是立即运用又是向其它人教授)......

(这篇写的颠三倒四,因为同时给老二听写,老三还不停捣乱。老二情绪低落,需要安抚,因为老大小升初考试后正在快乐滴放飞自己,或曰光明正大滴玩游戏,老二妒火中烧哭了好几鼻子啦????)

 

人到中年,每天不晓得在忙啥,忽悠就一天忽悠就一天。再不写会把三个小瓜跟我学python的场景给忘了哒,现在脑海里也就只剩下几个片段而已,得赶紧动笔记录下来。

 

刚一开始,我试图跟他们解释什么是python,为什么学python,python都能做什么,怎么学这门课?在线上PythonABC课程中,我用了好几个视频的时间来啰嗦这些。对小朋友注意力幅度窄我有预计,所以已经大刀阔斧滴往下砍掉了大半,但仍是太多。一看反应就知道他们听的一知半解,所以只能迅速结束幻灯片部分,切换到python应用实例,试图用实例展现python程序是如何提高效率节省时间自动化简单枯燥重复的任务的。

现在反思我觉得我给的实例太多了,选取两三个应该效果更好。我当时是恨不得把我得到的所有python的好处都捧出来给他们看,忽略了他们还太小,理解力还上不来,突然这么多不熟悉没见过的东西出现在面前,除了眼花缭乱外根本无法全部消化的,而且有些便捷是你要切身经历了不便捷才能体会出来的。更郁闷的是youtube-dl这个第三方模块那天还出了问题,我本意是让他们体会python强大的第三模块,他们肯定用过YouTube,如果一条命令就能把喜欢的YouTube视频下载下来不是很酷?这几天我试youtube-dl貌似恢复正常了。

一直到带着动手做程序小朋友的情绪才被调动起来,当时的情景比我预计到的忙乱多了,这还只是让他们照着屏幕敲程序的情况下。对于初次接触编程的小白来说,编程这道门没我想象的好进,处处是坑。我虽然也算python的初学者,但之前受过系统训练,而且曾被C语言折磨过。所以无论是对编程环境、语法结构还是处理意外和错误都轻车熟路,自学python时这些对我就不是问题。可看三个小瓜处处碰壁、步履维艰、不停滴求助,我意识到没有编程基础的小白入门要克服的困难真是不少,拦路虎是接二连三滴往出蹦啊!难怪我几个朋友都自学不下去:一个是枯燥的基础知识磨人心性,再一个就是刚开始总会遇到一个又一个的关卡,这些关卡过来人稍加指点很容易就过了,没人指点自己鼓捣起来就是很费劲,除非能把自己遇到的问题描述清楚然后发到网上去问。

让人欣慰的是小朋友很有兴趣、干劲十足,虽然只是最最基础的顺序选择和循环,但毕竟把环境搭了起来,然后输入了真正的程序,还在老师的帮助下解决了各种小bug,把程序运行起来了……比听老师自己讲,自己被动听有成就感多了!

这是第一天,实际上第一天结束后我很兴奋很有成就感,我准备的课程材料他们全都完成了!可惜后面证明我太盲目乐观了。 

到了字符串和列表小瓜们理解速度开始放慢,我记得费了好大劲跟他们解释索引(index)。等到函数字典文件意外时,明显感觉到他们有些吃力,我一边放慢速度一边大幅度砍准备好的程序,只讲最基础的概念尝试最简单的程序,难的复杂的都只能靠他们后面看线上课程自己慢慢理解,还好有线上课程!所以我再三叮咛线下课程结束后一定要继续看线上课程,一定要跟着做,跟着做完之后把程序拿掉只留注释自己添程序,或者干脆注释也拿掉完全自己用程序实现既定目标,小瓜们都满口答应。有一个小瓜加了个前设:“只要我有时间”,我马上给他妈发微信,要他妈确保他“有时间”。

python只是个工具,学python对于已经建立起逻辑思维、解析能力的人来说就是多一个工具而已,可对于刚刚小学毕业没多久的三个小瓜来说,不只是认识了一个“神奇”的工具,知道“哦,原来可以这样解决啊”,还是个观摩如何把大问题敲碎,然后把砸碎了的小问题各个击破的过程。这个体验肯定没法跟游戏体验比,基础知识还是琐碎且枯燥的,所以还是得大人推,什么时候他能用python程序解决自己的问题或者自己找到了构建程序的乐趣什么时候就不用管了,那一天啥时候到来啊?!

我觉得现阶段小瓜们的任务除了继续学线上视频,就是读别人的程序读懂别人的程序,敲别人的程序时知道自己是在做什么,而不是机械地敲字符。要是能在别人程序的基础上做些个性化的改动那就太好了,有拦路虎就上网找武松,现在网上什么程序找不到?!咱们遇到那点问题网上都能找到解答或提示!

 

我自己的小孩现阶段是肯看线上视频,没多热情也没多排斥,对我打断他玩游戏要求他去看视频不是很爽,但也不用我多废话,能做到默默关掉游戏跟着视频学一段的样子吧。我的态度是你可以不做这行,但这个工具你必须得学会用!要等到他在自己感兴趣的领域(比如游戏),用程序有所实现才算真的入了python的门。

PythonABC线上课程:

https://study.163.com/course/courseMain.htm?courseId=1004106037