编程专业的探索与发现 | 实务学堂年会演讲
前言
各位老师同学、家长、志愿者和朋友们,大家好,我叫陈一帅,和大家汇报、回顾一下过去在学堂的两年半,我们的编程学习和发现之旅。问题
我们已花了两年半时间来解决一个问题。记得欧阳艳琴曾经跟我说:她准备做十年(指创办学堂)。
要解决一个什么问题呢?
2019年夏天,在北京,我们跟志愿者见面会上,欧阳说过这样一个问题:「有一些没有接受过比较好的基础教育的孩子,他们马上就要走向社会了,我们需要帮他们做好准备。」
具体到编程这个专业来说,我引用一个叫CodeNation的编程公益组织的问题定义,就是:为资源缺乏的高中生提供技能、经验和联系,让学生能够进入软件技术职业。
我们觉得这个问题的定义和学堂的定义是匹配的:目标是要进入软件职业。如果是要进入职业的话,Ta就不仅要有技能、经验,而且还要跟公司有联系、交流。
为了解决这个问题,我们已经做了两年半,中间有特别多的曲折,也有很多的坑,还好我们没有放弃。
相关工作
最近有几个刷屏的新闻:
北京的青云学生计划——一群穷孩子的人生实验,也是面对当时的北京近六十万的打工子弟;
纪录片《棒!少年》——有一些家庭条件不是特别好的孩子,参加了棒球队,在里面实现他的梦想。
我们和他们类似,针对的是同样一群孩子,但我们的目标是Ta有全人教育的编程。这是我们的问题。
历程
在实务学堂这个教学板块里,最上面这一块是编程方向,也就是说这属于专业技能,下面呢?为了成为一个幸福的程序员,我们还需要下面很多的内容,包括身体的、心理的、职业的。
这两年半,我们一共经过三个阶段:
素质教育的探索,是在2018年,花了半年的时间;
2019年,我们扑向了职业教育;
2020年经过一些调整,又回到了素质教育,再加上职业教育。
下面我们就简单来看一下这三个阶段。
2018年 素质教育
在这个阶段,我们用Python语言来带我们几个同学。当时我们的王艺璇同学就在,我们就带王艺璇同学,还有几位同学一起学了Python语言。然后我们有几个发现:
第一个发现是:Python作为一个编程语言,是一个抽象的语言,还是比较高端的技术形式。它和学生在逻辑、数学、英语、物理的基础方面还是有一点点张力。
比如说我们要画一个五角星、或者用程序来控制潜艇和机器人的运动,这涉及到很多几何、速度、面积,移动的数学物理概念,所以需要一些抽象能力以及模型能力,特别是数学模型的能力,这是第一个发现。
第二个发现是:我们的学生,他们其实面临着高中毕业后要干什么的问题。他们在思考自己的前途。所以在毕业的紧迫性上和我们培养的速度上,又有一点张力。
大家知道要培养一个程序员,是需要很多基础性的东西的,特别是数学英语的基础。而且编程需要大量的学习和练习的时间,也需要很多的跟老师的反馈。那么这里面我们感觉到有张力。
第三个发现是:因为我们学校那个时候还有初中生,所以不同年龄、不同知识基础、不同学业水平的同学,把他们都放到一个教室里来上课的话,其实是很有张力的,很容易就是说那些高中生就觉得太幼稚了,而初中生就会觉得太枯燥了。
所以当时就已经发现了这三个张力,后面发现:这2.5年,其实就在围绕着这三个张力在展开。
下面就简单跟大家介绍一下我们怎么处理这三个具体问题的,特别是遇到过的坑。在这个过程中,我们也学到了很多东西:
学习的内容要跟学生他寻找一条出路的意识吻合,就是「要有用」,要「能找到工作」。
要现实一点。因为他们是高中生,我们只有1~3年的时间,以他们现在的基础,我能培养出一个什么样的人出来,到时候能不能找到工作?
必须个性化教学,课程材料要匹配学生的水平。
这其实是个优化问题,即:在有限的时间内,在学生的初始条件下,怎么帮助他们学习,达到一个什么样的目标。所以现在需要做的是:把教师资源、课程资源、学习资源进行优化分配。按照各个学生的特点,把学生最后培养出去,这就是我们2.5年干的事情。
所以首先就做了第一个调整:我们把课程从Python调整到了前端,做web开发。当时还有魏林老师,他教Java。我们教Java是因为当时Java程序员也是很受欢迎,职业职业前景特别广阔。Java就作为我们的后端。当时我们这么配合:我做Web的前端,魏林老师做后端,就是Java那块。
第二个调整是我们开始找两个东西。
第一个东西是自动化的练习系统。我们发现作为一个志愿者,每周去学校一次其实是不够的,同学们编程过程中会发现很多问题,有的时候一个特别简单的问题就卡在那里,他去百度搜索很容易就迷失,他不知道怎么处理这个问题。所以我们就开始寻找一个自动化的练习系统,就让学生能够在这个里面练习,一旦出一些小错的话,练习系统能够给他反馈,让他立刻能够自己解决,这是我们想要找到的第一个东西。
第二个东西是课程管理系统。课程管理系统能帮助老师来管理课程,了解学生的进度。
这几个改变,后来发现也贯穿了整个两年半的探索过程。
然后我们的第一个探索就是开始用可汗的教学系统。学生们反映特别好。
王艺璇的作品
这是当时王艺璇同学做的一个作品。从这上面大家可以看到它的练习系统的样子,左边是代码,右边是结果。大家做起来特别开心。
王艺璇的学习时间分析
然后这是可汗上的学习时间分析系统,从这里我们可以看到王艺璇在过去的时间里一共做了多少分钟的练习。你看她做了近1500分钟。这1500分钟里,她是在课上做的还是课后做的,它也有详细的跟踪。这正好是我们需要的课程管理系统,当时大家用得还是很开心的。
但是可汗有一个问题,就是:最后大家会问,这个能找到工作吗?我们发现好像还是不行。因为可汗是针对高中生的兴趣教育、素质教育,不是职业教育。所以在寒假的时候,我们就往职业方向稍微走了一点点。我们就给学生布置寒假作业的时候,是用的 W3school的前端练习系统,那个是稍微职业一点的。
2019年 职业教育
19年我们就全部开展职业教育,这时候魏林老师自编了一套Java课程,然后用了一个练习系统,在上面做Java的练习,而我调研了中国大学慕课网,以及一些职业培训机构的课程,看能不能用上。但我们一直没有找到一个特别好的练习系统和课程管理系统,特别是前端这方面的。
这时候有一个特别重要的发现,特别幸运地发现了FCC(FreeCodeCamp前端练习系统)。它是一个特别好的前端练习系统,而且内容特别专业,因为它是面向那种想要找到一个新的职业方向的工程师的,所以当时真的是如获至宝。
这时候又有另外的一个同学出现,这个同学就是罗明扬同学。他应该也坐在大家中间。他是19年3月份入学的,当时没学过编程,但他的基础非常好,他高中的成绩还是可以的,数学和物理的基础还是可以的。
3月份的时候他写过一句话:编完程序以后,看到它们跑起来真的很开心。这时候他其实已经找到自己的喜爱了。
这时候我们就把中国大学慕课网上南京大学的软件工程入门课,北京林业大学的web前端开发课程,给罗明扬同学,他就自己去学了。他看视频、刷题,再加上FCC,他就上手了。上手以后,他就往前走了。
罗明扬的成功给我们一种错觉,就是「前端不用教」,关键就是提升学生的自学能力就可以了,给学生好的材料,他们自己就会往前走。后来发现这是一种错觉,为什么?除了罗明扬往前走了,走到职业学校的那些培训教程去了,其他同学都没有跟上。其他同学也在看慕课的视频,也在做作业,也在刷FCC的题。但是等到他们看职业学校的视频、做练习的时候,就完全跟不上,他发现自己被压倒了那种感觉,不知道视频在讲什么。
所以这时候有的同学就产生了自我怀疑,他说「为什么罗明扬行,但我不行?我是不是不适合编程?」我们当然知道这是不对的。这时候我们也特别难过,就跟同学们解释:不是这样子的,不是你们不行,是陈老师找的材料不行。
所以我们就觉得现在的课程材料中间一定还缺东西。但是,这是什么东西呢?我们就接着找。
同时我们也想推动每个学生变得像罗明扬那样,我们就用时间管理和目标管理的一些方法来做。我记得特别深刻的是当时田发伟老师他就守着家祥给他制定详细的计划、每日打卡,因为公司里头就是这么工作的,这是一个方面。
另一个方面,我们接着去找一些材料。当时觉得国内的材料不行,所以去找国外的材料。找到一些特别好的材料以后,特别开心。就赶紧把它翻译了教学生。
最可怕的一次是我把哈佛给本科生一年级的经典课程CS50里面两个小时的web前端课程,我把它翻译了以后,给同学们也用两个小时讲完了。因为当时觉得职业教育是我们的目标,我们等不了一个月。哈佛讲两个小时,我要是用一个月讲怎么办?哈佛要读4年才能毕业,我们的同学就要16年才能毕业,那不行,对不对?所以我们就用同样的进度给同学们上完了。上完之后,发现大家全都懵了。显然,大家基础是不一样的。
现实是怎样的呢?
现实是:去年我给大家讲过的这些CS50的内容,今年经过了一年的学习后,我又跟他们讲了一遍,讲了2周,而且是今年所有同学里4位进度比较快的同学,大家终于听懂了。可见我们走了弯路。确实是有个大坑,我们跳进去了。
2020年 素质教育+职业教育
我们怎么从坑里爬出来的呢?我们遇到了4个特别幸运的转机。
第一个转机是王欢老师在哈佛给我们发来了哈佛教学研究中心的网站,我们就去看这个网站,这个网站特别详细地介绍了怎么设计课程、怎么上课、学生学习是有规律的,......,它都详细地讲了。
特别重要的是:它给我们讲述了怎么具体设计一个课程。它说要「以终为始」:你期待学生期末时做出什么样的作品,那么你就以这个作品出发,做课程设计,要分解到每一章。它是以作业为中心来做课程设计的。这特别重要,当时就觉得这个真的太好了。
第二个转机就是张鑫老师带着我们学校的几个老师和同学认真地学习了他学习过的一门课程《青少年心理学》。
他说青少年的大脑发育,是有一个过程的。神经元网络是要生长的。青少年刚开始是比较感性的,Ta的理性、自控能力受制于Ta的大脑生理结构,有一定的缺陷。你不能盯着所有的同学,非要弄成第二个罗明扬。罗明扬18岁了,他是长大了的。你不能非要盯着一个16岁的孩子每天打卡,把Ta弄成第二个罗明扬。
所以当时张鑫老师就跟我们说:你要等。
但当时我很焦虑,我说我不能等。张鑫老师说:「你要给他们自由。」我说我不能给他们自由,他们要毕业呀。
但是后来我接受了,我可以等的。这是第二个转机。
第三个转机特别有意思,我接着去找课程,就找到了 CodeNation。
CodeNation是一个特别有意思的纽约一个编程公益组织,图中下面的英文是他们的使命,我们翻译了一下:「为资源受限的高中生提供技能、经验和联系,使他们能够进入软件技术职业」。所以他们面向的是美国那些也是基础教育有些不足的孩子,他们希望他从高中开始慢慢地进入软件技术职业。这个和我们一致。
然后我们认真研究他们的课程,发现课程特别好,有一个很好的阶段划分,如下图:
刚开始,它是接触,是课后班。让你接触编程,做一点点小游戏。
然后,它有个暑假的集训,像小学期似的,给学生体验一把,每天都要来。
最后,如果你真的想要进入职业,那么就给你上更高级的课程,然后提供企业实习机会。
当时就觉得他们的课程挺好的。
我们不能把所有学生一下都弄成第二个罗明扬,得让Ta先接触,接触后觉得ok,然后在小学期给Ta集训,让Ta们来体验,体验完了,Ta真的想要进入职业,再进入职业。
然后CodeNation的课程材料也给了我们特别好的启发:每节课就讲一个知识点,特别小的知识点,这个知识点又分为几段来讲。刚开始讲一点点概念,然后编程示范,示范之后还有个小测验,是测验学生有没有掌握这个概念。如果这个测验不能过的话,老师就能发现问题,接着再给大家讲讲。
CodeNation的练习也特别好,是一些动画、小游戏。还有一个特别好的自动化练习系统。
因为我们一直都没有找到一个特别好的自动化练习系统:当学生出了一个错,系统给他提供一个很人性化的解释,所以他们就自己开发了一个这样的自动化练习系统。真的太厉害了!
最后一个转机,就是我们找到了Canvas这个免费的课程管理系统。虽然是免费的,但又特别专业,斯坦福、MIT都在用,所以覆盖我们的需求是没有问题的。
有了这4个转机之后,我们就对编程的课程进行了重构。我们运用了哈佛的以练习为中心,把CodeNation的练习翻译、入库。每次讲课后,我就会整理视频,把视频切分,跟练习对上,放到B站上,这样的话,慢一点的同学就慢一点,没关系的,只要Ta愿意学,还可以再回过头复习、琢磨。然后Canvas可以跟踪学生的作业状态,能够一目了然。
最有意思的是2020年有一个上帝的恩赐。
我们去了广州。广州环境好、空气好、水也特别好。在广州还有特别好的是什么呢?在广州我们遇到了舒欣老师。他有自己的教学理念,还有实际的Web前端的开发经验,还能够提供线下的教学。
因为线下的反馈跟线上的反馈完全是不一样的,学生能够感觉到老师是怎么开发的。
说实在的,两年了,中国这么大,我们现在只找到这么一位。常常是一位老师也特别好,但是他不能线下教学。
真的很难找!
所以我们特别感恩舒欣老师的加入
2020年 春季学期
这个时候我们真的是从头来过。从2~6月我们就用CodeNation的课程给同学们讲,然后做一遍作业。到了小学期,舒欣老师每周会来学堂一次。他上到哪,我就教到哪,我们一起配合。
这是舒欣老师带大家做前端实战的时候,教大家开发苹果的网站。大家看这是苹果的网站。如果同学们能够用以前学过的知识做出来苹果网站,是不是特别开心,特别有成就感?同学们就特别开心,说学了这么久,原来学的这么有用,就特别开心。
大家看舒欣老师上课,同学都是怎么坐的,特别认真,对不对?这是我们一个特别优秀的同学,你看他坐得多么端正。
陈艺文同学认真地听课
然后我就运用伯克利大学的网站设计教程,跟舒欣老师配合。这个是伯克利大学一些学生开发的,但是算伯克利大学的学分,所以内容非常专业,项目也特别有趣。
伯克利大学网站
这是我们周光明同学做的一个作业,这个界面是非常专业的。
周光明同学的编程作业
陈怡老师在海边每次也会录一段英语单词发过来,然后同学们就跟着陈怡老师练习口语,因为有时候需要英语交流的。特别感谢陈怡老师
同学们在背单词
所以小学期结课以后,大家反馈:一个月学到的比一个学期还多。我们真的找到一条出路了。
2020年 秋季学期
到了9月份,我们继续加强。学堂搬进新教室后,同学们的状态也特别好,金玉老师就教我们如何做计划。
金玉老师教大家做计划
我们还分了班。分班就有一个特别有意思的事:只有我一个编程老师教?怎么办?也不能让我每天都来上课。所以这时候欧阳老师就说「我来上。」我还劝欧阳老师说:「算了,学校的事情太多了。」欧阳老师给我回了一句,「这是我内心的声音,我希望支持到老师和学生。」
那欧阳老师她要上课的话,得先学习编程。
欧阳艳琴老师的编程作品
所以这是欧阳老师在9月份学了CodeNation的课程,做了一个圣诞音乐会海报的作品。她自己先学了一遍。
欧阳艳琴的Web学习计划
然后这是欧阳老师做的详细的Web学习计划,为什么要做计划呢?她用学习计划来给学生们演示,让学生们知道什么是计划,我觉得这个特别好,然后欧阳老师就在上课分享了,我给她录了一个视频。大家可以点进去看她的分享,特别有意思~
这个时候,我就给同学们上纽约大学的Web绘画,因为舒欣老师曾经跟同学们分享过一些Web绘画的一些知识,挺有意思的,所以我就找到这个课程。下面是陈艺文同学的作品。
陈艺文同学的编程作品
我们又发现新的一个问题,广州艾利丹尼森公司特别好,邀请我们去访问,还做编程测试,特别感激他们。但是他们测试的是什么呢?测试JavaScript的算法。这我就特别痛苦了,因为还在教前端HTML、CSS,还没有教到Javascript算法,就去「考试」去了。
某同学参访谷歌后发的朋友圈
所以我就想起来,当年同学们参观完谷歌发的微信朋友圈,很开心。张鑫老师当时还特地去问了谷歌的工作人员,招聘怎么个面试法?谷歌的工作人员说只考算法。
其实李志老师就在教算法课,已经教了一个学期,教得非常专业。下图就是算法课的作业。
然后我们徐老师也在教计算机课,教Linux,所以我们是非常专业的。但不幸的是我没有教Javascript的算法,所以这就有点着急。
幸好这时候有熊治杰老师来了,他给大家上JavaScript算法课,大家也很开心。
这时候明扬也回来了。他一直以来的梦想就是带同学们做项目,所以他给同学们介绍自己目前的工作,然后说「你想学什么我就教你什么。」同学们说「我要学前端框架。」「我要学数据库。」明扬就周末回来带大家做项目。
那么现在编程专业分班了,有4个班,所以我们就用Canvas管理来教学,用一个上课的时间表。
运用Canvas管理的时间表
每个同学一登录就能看到自己有多少作业要完成,今天要上哪些课,就会一目了然。所以这正好就回应了学堂两年半以前的需求,就是我们希望有一个课程管理系统,然后练习系统的话,我们现在用的就是FCC。
我们认为我们基本上走出一条路了,课程也适合同学们的循序渐进的个性化学习的需求。
这是我们编程专业的总结。
这是我们的培养目标。未来,我们希望能够做一些基于项目制的学习,因为现在基本上大家已经成熟了,可以自己往前走了,或者至少我们老师扶着Ta们可以自己往前走一点点了,我们就要给Ta锻炼一些综合能力了,包括交流、表达能力,我们甚至还想过要写课程设计、要写论文,培养他们分析问题和解决问题的能力。
挺有意思的是,我也把我在这个过程中学到的一些东西,用到了大学的课堂上。发现大学生他也非常惊奇、非常喜欢。有同学跟我发微信说:
这时我想起了罗明扬最开始来学堂的时候,日志里写的那句话,他说「现在比以前那种压迫式的教学方法好多了。」这也挺好的。
科研
科研方面,我跟大家简单汇报一下。我的科研工作就是教育数据挖掘方面。这些工作,有一些大学生感兴趣的,我就带他们做项目。
我们可以做一些前端的智能练习系统,一些反馈系统,以及知识图谱、推荐系统这种。我们也做一些利用人工智能造福社会的项目,比如说基于人工智能我们来识别那些攻击性的语言、欺骗性的说服技巧。大家知道现在网络上这方面的问题特别大。
最后我要特别感谢魏林老师、田发伟老师、郭超洪老师、王欢老师、极客学院的李桐老师
最后向大家推荐一个彩蛋,就是张鑫老师做的这个播客《太阳能坚持到什么时候?》因为这是我强烈要求张鑫老师做的。
为什么?
因为我们认为程序员要幸福的话,一定要有人文的底蕴。所以我们希望给他推荐一些阅读的书籍。这是张鑫老师和我们学校的几位同学一起做的,我也是坚持每次都听,确实特别好。
总结一下,我们发现:在同学们这里,编程变成了我们跟世界交流的一种方式。
陈俊雁同学的编程作品
陈俊雁同学的作品,让我感觉到:在他的作品里面,他其实建立了一个自己的世界,这些作品是他跟世界交流的一种方式,可以从他的作品中看到他的自我,这就是最好的一种艺术作品。我觉得特别可贵。
Debug
我们也发现:编程是我们应对世界挑战的一种处理的方法。什么方法呢?就是Debug(调试)。
我们编程的时候,如果出现了一个Bug(错误)的话,怎么办?我们就是要Debug,就是一步步调试,把Bug抓出来。
艾克同学的画
这是我最喜欢的一张画。是上次学堂开放日,艾克画的一张画:大家都在Debug,完了之后特别开心。
那么这个Debug需要什么?艾克说他需要三个东西。
第一个是Love,就是「爱」。同学们的爱以及他对编程的爱,支持他Debug。
第二个是Together,就是「在一起」。他说我一个人Debug难受,我喜欢的是在一起Debug。因为艾克他是一个特别喜欢跟大家在一起的人。
最后一个是Study,就是「学习」。Debug就是最好的学习方法。这是什么意思呢?就是他发现了:当我面对一个错误的时候,不会被人批评,受到惩罚,不需要恐惧,而是去接受这个错误,去解决它,从错误中学习。
我就觉得特别好,因为如果你能从编程中学到这个的话,相当于它改变你面对未来人生中遇到的各种挑战时的态度。这是非常厉害的。
自由
最后,我觉得是:编程让我们获得自由。「自由」是张鑫老师跟我说的话,他说「最重要的是自由。」对,我觉得编程能够让我们得到自由,为什么?它让我们得到心理上的自由、知识上的自由,财务上的自由,对吧?你能找到工作,这些都是自由。我就觉得这个也是我们的目标。所以欢迎大家加入我们志愿者的行列。加入我们导师的行列,我们真的特别需要老师。
志愿者报名表,欢迎扫码填写
也谢谢大家继续关注我们、支持我们
谢谢大家!
编辑、排版「林楚虹」
●●●● 2020年会演讲文章 ●●●●
●●●● 2018年会演讲文章 ●●●●
为什么来实务学堂做教师 | 「小蒜苗」的奋斗 | 同学们狗年成长记
点击进入详情链接