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