知之者不如好之者,好之者不如乐之者。
有朋友问,编程难吗?一点都不会的话能不能学会呢?
也有朋友问,我们家小孩很喜欢打电脑游戏,能让他学习编程吗,要多大才可以学啊?
还有朋友问,很想学习编程,但是就是坚持不了,不知道怎样才能学会编程,有没有快点的简单的办法?
学哥的回答是:能,每个人都能学会编程。越早学越好。方法也很简单,兴趣+方法+坚持。
Facebook创始人扎克伯格说:
编程已成为一项基本技能,每个人都该会。
仅在美国,每年就有50万个计算机相关的工作岗位,但是每年只有5万名计算机科学的学生毕业。
编程显然已成为了一项基本的技能,是每个人都应该做的事情,就像阅读一样。它是每个学校都应该教授的技能。
苹果公司创始人史蒂夫乔布斯说:
人人都应该学会编程,因为它会教你如何思考。
编程主要是人脑思维方式的映射。解决问题的时候,人的思维方式是需要完整性和逻辑性的,而通过编程训练,可以不断培养良好的思维方式,帮助人掌握逻辑思考的能力。
有人说,我会开车,但我并不需要知道车怎么造出来怎么修车,同理,我会使用软件就够了,没有必要学编程。没错,我们并不是为了编程而学编程,就像我们学修车并不是为了去修车,而是通过学习简单的修车知识帮助我们更好更安全的去开车去保养车。
从心理学上来讲,全程专注于一个目标上,能够享受到做事情不断带来的满足和激情,会让人感受到做事情的乐趣,而编程,就是完全具备这种乐趣的事情,当你茶饭不思,努力思考一段代码为什么没有成功运行,当经多多次思考和尝试,最后解决了问题的时候,内心有极强的满足感,这是一种非常棒的体验。
编程还是一个非常高效的,用于实现想法的工具,对于小孩子来说,乐高是他们塑造世界的玩具;对于成人来说,编程其实就是一个更加具备拓展性的“乐高”。
想想看,你是否有过这样的经历:
喜欢打游戏的--凌晨三点了,一点都不困啊,再来一局lol!
喜欢看小说的--时间过的好快啊,都五点了,再看一章雪鹰领主就睡!
喜欢看视频的--今天晚上通宵也要把仙剑奇侠传看完!
为什么我们在做这些事情的时候,一点也不觉得累,而是感觉时间过得飞快呢?
我想是因为做这些事情的时候,是很放松的,是消遣的,没有目标或者指标的要求的,没有压力的,所以才会乐此不疲,废寝忘食。
那么如果是编程呢,你需要学习,需要思考,需要开动脑筋,需要练习,需要总结,这都是有压力的。
如何能够化解或者避免这些压力或者疲倦呢,我想只有自己真正的喜欢它,爱好它,才能不觉得累,才能坚持下去吧。
学习知识重要的是培养学习的兴趣,俗话说“兴趣是最好的老师”。对知识的学习感兴趣,就会变被动为主动,以学习为乐事,在快乐中学习,既能提高学习的效率,还能够加深对知识的理解,这样学到的才能够灵活地运用。
学习编程,一定要从兴趣出发,给自己定一些确定的目标,比如说:发布一个自己的个人网站,做一辆遥控的小车,将家里的门锁换成手机控制的,给家里的鱼缸做一个远程喂食系统,等等。
这样带着目标去学,带着解决实际问题去学,会比毫无目标要更有动力,更有效果。
我有一个认识很多年的好友,老赵。他有一天打电话给我说,他女儿在上高中,有兴趣想学编程,但不知道从哪里着手,希望我能从技术方向上提供一些学习路径建议。然后我就刷刷刷列了提纲如下:
技术路径:html > css > javascript > php > mysql
学习内容:w3school.com.cn网站
学习方法:跟随网站教程逐步学习,掌握基础知识后练习一些模拟项目
从一个做技术的程序员角度来看,这个路径是比较适合零基础的初学者的,但是过了一段时间之后,老赵又来电话了:女儿按照这个方法学习了一段时间之后,发现学不下去了,就好像知道机器的每一个零件,但就是组装不出机器来。
仔细分析了之后,有点明白原因了:学习网站的内容大而全,不容易分清主次重点;不知道如何融汇贯通多个技术点完成一个实际项目;缺少辅导碰到问题不知道如何解决;
看看这个学习网站,确实容易让人望而生畏啊,这个网站应该更适合编程入门之后的学习:
因此,我一直在思考,有没有一种更好的方式来学习编程呢,有没有一种更有效的路径来学些编程入门呢?
最近在给一所小学四五年级的小朋友做一个公益编程兴趣课,看到这些孩子渴望的眼神,开心的笑容,真的是很受感染:
这些小朋友只有十岁左右,但从上课的体会来看,学会编程入门是完全没有问题的。
感受最深的一点是:理论知识一定要讲的有趣,结合生活中的例子效果更好,结合硬件多动手效果最好。
中国的很多家长,望子成龙望子成凤,会花很多钱给孩子报很多培训班,却很少花时间陪孩子做他们喜欢做的事情,但其实陪伴比学习对他们的影响更大。
编程,就是家长可以和孩子一起学习一起成长的一种方式。想想看,当家长和孩子一起,每完成一段代码,每解决一个bug,每一次让小车跑起来,都会是满满的开心和收获!
考虑到这样的目的,我在设计教程的时候,就是按照10岁孩子的理解能力作为基准,尽量将高深晦涩难懂的名词以及技术,通过浅显易懂的语句,以及联系日常生活的比喻,变得更容易理解。
同时,通过软硬件结合控制显示效果的方式,让编程显得更有趣,并且尽量将软件工程的概念贯穿整个教程中,让大家逐步具备软件工程的思维方式。
另外,学习过程中,交流和沟通是非常重要的一环,我会帮助大家建立微信群或者QQ群进行交流沟通。
知乎上有个问题的答案很有意思:
问:为什么零基础自学编程者,大多半途而废?
答:大多数人的努力程度,自学不了任何东西。
一万小时定律,相应大家都听说过,学会编程入门和成为IT专家,是不一样的目标,所以我们不需要一万小时,但这并不是说学会编程就很轻松,学习本身就不是轻松的事情,不付出努力,任何事情都不会成功。所以,坚持就是一件非常重要的事情。
一年之计在于春,一日之计在于晨,一生之计在于勤
做任何事,最好都要做计划。计划按照时间维度可以分长期、中期、短期。
我个人的体会,将大的目标通过计划,逐渐分解为细微的目标,每完成一个细微的目标,都会给自己一点成就感,给自己不停的刺激,获得愉悦感成就感,从而逐渐完成目标。
那么我的教程系列计划是这样的:
第一部分:python入门和简单控制传感器
第二部分:html+css静态网站和阿里云上线
第三部分:js游戏连连看
第四部分:php+mysql动态内容网站
第五部分:网站集成(图书管理系统)
第六部分:手机遥控小车
第七部分:android开发遥控器+图书管理系统
第八部分:ios开发遥控器+图书管理系统+Three游戏
第九部分:手机控制四轴飞行器
第十部分:3D打印
每个部分大概20到30篇教程文章,每篇教程文章阅读学习时间大约在半小时左右。
喜欢编程的朋友,先设立一个小目标吧:编程入门。
最后,转载一句雾老师的话:
我们读书,我们接受教育,我们向有智慧的朋友求教,一切的目的,都是为了赋予自己这样一种能力--无论时局如何变化,无论命运把我们丢到何等陌生的环境,我们仍然能够活下去,爬起来,站直了。