很多进入计算机专业就读的学生,最初至少有一大半对真实的软件开发完全不了解,是“一张白纸”。
不幸的是,学了四年之后,许多张“白纸”又变成了许多罐“浆糊”,带着对软件开发可能是畏惧,也可能是无所谓,但绝对不是喜欢的感触离开校园。
编程真的那么没劲?那么难和枯燥?
今天达妹想和大家好好聊聊“编程究竟难在哪?”这件事。
PART1
没有建立“正向”兴趣循环
台湾知名技术专家蔡学镛先生写了一本《编程ING》,给出了一张图:
我认为这张图道出了问题的关键——学习过程中的“正向”兴趣循环是否成功地建立。
强烈的兴趣与不断获得的成就感是整个学习过程的“引擎”,它为学生完成整个学习任务提供源源不断的强大动力,有无数的事实支持这个观点。
而传统的教学观点认为,本科的主要教育目标之一是为学生在本专业领域未来的发展“打下扎实的理论与实践基础”,所以从一开始就要“严格要求”、“科学训练”。
这个观点不能说错,但我认为,我们的计算机教育,尤其是针对初学者的教育,首要的任务是引发兴趣。没有兴趣,一切免谈。
之所以很多大学生觉得编程难,其原因就是现有的计算机教学方式从一开始就给了这些学生“痛苦”的编程体验,并且在后期枯燥的专业课程学习中不断得到强化,最终使很多大学生对编程敬而远之或畏之如虎。
PART2
从未接受过解决问题的训练
从小到大,我们受到的教育终极目的是有一个:考取理想的学校。每一张张考卷都是一个个堆砌起来的知识点:三角函数,解析几何,数列,函数…...
这么多知识点,你需要做的是背下它们,或者说的更高级一点,理解它们。
即便是强调思辨和分析的“文科类”,也可以靠死记硬背答题模板拿分,就连作文都要有统一的标准。
(图片来源于网络)
我们非常擅长理解和记忆,并井井有条地套公式。
这一切,到了学编程这里,统统不奏效。
我大一的时候刚开始接触C语言,非常痛苦。那会儿,没有任何计算机基础,编程语法大多靠背——C++语法、操作系统各项定义、计算机网络各种协议、常量、作用域、多态...........
身边不少同学也这样,“高考精神”还深深印烙在骨子里,我们都认为学习一门编程语言最重要的就是掌握其语法,所以为了将语法烂熟于心,最直接的方法就是记忆。
结果可想而知,即便拿了相应的学分,没有人敢说自己会编程。
我们接受了十几年的应试教育,为了最大化公平,考试必须有一套清晰的标准。正是如此,我们更看中重应试技巧而非知识本身,学习变成了追求标准答案,求知变成了死记硬背。
绝大部分人,难以形成系统的学习方法论的意识,以至于很多人一旦脱离试卷,在社会中面对实际问题的时候,完全没有一套行之有效的方法论支撑其解决问题。
而编程的核心,不是编程,不是语法,甚至不是算法或数据结构本身,恰恰是如何分解问题——发现规律建立解决问题模型,映射到合适的数据结构和算法上,最后才根据算法写程序实现。
PART3
从未学过创造
清华大学前校长陈吉宁曾提过一个观点:
清华大学里有很多“A型学生”,但未来社会最需要的是“X型学生”。
“A型学生”,指的是传统观念里的“好学生”,他们的成绩总是能得“A”。
“X型学生”与之不同,他们的成绩并不一定拔尖,但愿意承担创新风险,勇于尝试新鲜事物。
两者最重要的差别,在于创造力。
可是我们连作文还不敢写得太跳,生怕阅卷的是个老古董,大笔一挥,让你再考一年。创造力,更是我们在学校想都不敢想的事。
绝大部分学生的思维,早已在填鸭式的教学中,变成了一个只会收纳外部知识的容器,根本无法用所学的东西创造出任何东西来。
所以,当我们开始学编程,面对“Hello world.”这个等着我们创造的世界,其实是非常茫然的。
(图片来源于网络)
因为编程没有“题型”和“公式”能把你解决问题的过程简化成填空,编程提出的问题基本都是空而泛,需要你根据脑子里的逻辑推断,利用所学编程语言的各项功能组织成代码,来解决问题。
整个世界的运转,都是靠你的大脑想象出来的。这是编程的难。
但是,只要你明知其中不易,仍有一腔骁勇,你可以尝试在编程的世界中,保持“实验者心态”,不断探索自己的想法,质疑自己的假设,从所犯错误中学习宝贵的经验,就一定能在编程的魔法世界中得到更多宝藏。
(图片源自网络)
如果你看过近期大火的《乐队的夏天》,那么在参赛的三十一支乐队中,你一定会被其中一支叫做“刺猬”的乐队所打动。
刺猬乐队的子健,他是台上的狂躁主唱,台下的学霸码农。
即使每天都在和冰冷的数字打交道,但作为程序员的他,体内有被保护得非常好的创造力,使得他拥有满腔的诗意与细腻的内心,更可以谱写出令人折服,引人共鸣,充满无限色彩的音乐作品。
PART4
他们没有觉得编程很难
为什么很多不是计算机专业的人能够通过IT培训机构学会编程技术?没有觉得编程很难。
培训机构里学习的课程内容是根据市场上企业需求开发的,学习就是工作,通过工作实现学习。
并且教学大纲都是循序渐进,由浅入深,首先做的就是培养学生对于编程的兴趣,从中获取成就感,以兴趣为导向,步步为营,在每个阶段课程穿插实战项目。
教师会去引发学生的兴趣,鼓励他们去探索未知的领域,主动地学习和吸收知识,培养技能,积累经验。
解决他们在学习过程中遇到的困难,及时指点,帮助学生建立学习的“正向”兴趣循环。
所以,很多人即使不是计算机专业的,也能够在很短的时间内学会编程。
编程一点都不难,用电脑听得懂的语言,告诉它帮你做你想要做的事情,只要认真学,谁都可以。
难就难在,"学以致考"和"学以致用"是不一样的;记忆和创造是不一样的;学好学科和理解世界是不一样的。
当然,并非要彻底否定应试教育。在中国教育资源极其不平均、经济文化撕裂的大生态下,以考试为目的的教育,提供了一套非常清晰的评判标准,通过分数这个显性的指标来筛选和划分学生群体,选拔出社会精英,可能是当下最公平的取舍了。
只是时代在不断的发展,无论是学校,家长还是孩子,都应该反思一下现在的所接受的教育形式,如何发挥出每一个自己的个性,让他们成长为更好的人——学编程的过程会给你提供答案。