“我想学编程”的真正含义是什么
英文原文:What People Really Mean When They Say "I Want to Learn to Code"
关于编程教育,有两件非常重要的事情是首先要知道的:
- 大多数人其实并不是真的想学代码
- 学习代码并不是只需要写代码就可以了
如果你不了解上面两件事的话,那么你学习代码的方式就是错的,而且你永远也学不会写代码。
这第一点经过我反复琢磨之后,我认为它的意思是,如果你并不是真的想学代码,那么在你迈进这一领域的那一刻起,你只会觉得枯燥乏味得要命。
我称之为编码谬论。人们认为他们想要学习代码是因为他们真正需要的是做一个产品。
仔细想想,这也是理所当然的。如果不能来做任何事情,那么代码这个知识本身就没有任何价值。因此,对于大多数人来说,学习代码最大的动机就是能够使用代码来构建一些东西(第二动机就是能应聘到一个高薪岗位,O(∩_∩)O~)。
这就让我不由得思考起了第二点,学习代码并不意味着只需要会写代码就可以了。
曾经我们在学代码之前必须先了解有关于计算机的几乎所有的内容(也因此被称为“计算机科学”)。后来随着事物的发展,现在已经演变成除非真的需 要我们才会深入了解某方面的知识。例如,作为一个 Web 应用的开发人员,对于系统管理我几乎一无所知,因为我完全不需要使用这方面的知识。
所以,当有人说,他想学习编程的时候,大多数教学工作人员会按照他们自己的教学流程教课,讲数据类型、某种编程语言的各种结构,并且会让学生先对计算机有一个深入的了解。
然而问题来了,这并不是他们真正想要学习的。他们的目的是为了构建某个应用。所以,我们不能再理所当然地认为所有有关于计算机的东西一股脑儿的都应该学习。
例如,如果某人已经知道后端如何开发,那么现在教授给他前端开发知识才是对他们有意义的。这样一来,我们就减少了学生的负担,事半功倍。
关于写代码其实并没有很多需要学习的,但是也应该因材施教。下面这几点我认为是区分的重点:
- Web 开发
- 非 Web 开发
如果你正在开发 web,那么你需要处理:
- HTML – CSS
- 路由选择
- 数据库
- 服务器托管/ DNS
- app 结构
显然需要学习的东西很多,但是大部分对于非 Web 开发人员却是无关的(除了数据库和 app 结构)。
但是我看到的现行的教育方法更像是在“耍猴”。
学生:“我想学习如何写代码。”
(他们内心真正想的却是我想建立一个 web 和移动 app——但却不知道该如何表达)
老师:“好吧,那我们先学习数据类型。”
学生:“……”
(2 周后)
老师:“现在我们可以设计高效的算法了。”
学生:“我只是想制作一个超酷的网站!”
这样一种学习代码的方式谁会喜欢呢?!
作为教师,应该明白的是,当人们说他们想要学习写代码的时候,其实他们真正想得是建立 web 或者制作移动 app。
这是因为,对于他们而言,这就是写代码的意义,也是他们想要用代码做的事情。但是问题在于他们不知道如何正确地表达自己的想法。所以我们不能只看语言的表面含义。理解字里行间的真正意思也是我们作为教育工作者的工作之一。
我记得几年前有一个牧师这样说过,即使是在两难的情况下,我们还是应该讲真话。然后又有人问:“那要是说实话会伤害对方呢?”
牧师斩钉截铁地说:“如果有人问你问题,那么就告诉他们,他们真正想要知道的内容,不要瞻前顾后。”
教育行业也是如此,我们需要从别人的话里行间发现他们的真正意图。如果他们提出的是一些具体问题,但是超出自己能力范围的话,可以介绍其他经验丰富的人。
所以,这取决于教育工作者和专家如何引导人们走到正确的方向上,而不是让他们自己跌跌撞撞地摸索着往前走。如果我们能做到这一点,那么我们才不愧于人类灵魂工程师这个赞誉。
作为学生:学习你想要学的
在学习历程中,你能做的一件事情就是,更多地涉猎各方面的内容——以便于知道自己以后该往那个方向想往哪个方向发展。
译文链接:http://www.geekwww.com/what-people-really-mean-when-they-say-i-want-to-learn-to-code.html
翻译作者:极客网 – Lili