一日不编,如隔三秋
前几日生活的琐事缠身,有几天没有继续编程学习,今天面对空白的编译环境,竟然有些恍惚。设定了场景,发现刚学习的内容无从下手,回去翻看官方文档,找了半天,沮丧感来袭。仿佛要用一个汤勺,舀尽面前的滔滔江水。
这段时间写了Data103数据科学课回顾、教十年前的自己学编程、Data103数据科学课后30天、一起玩Python几篇文字,部分想法成为了内隐知识,总觉得缺点什么。刚好开智学堂发布了“黑客养成计划”的系列文章,给了我很大的启发:
顺藤摸瓜,我又找到了这几篇文章:
- 理解 Pythoneer 路线图
- 编程|零基础学编程?Python 中文社区创始人给你五个建议
- 一个妈妈和编程的270天死磕日记
- 心理学博士编程手记:我是怎么在三个月拿回全额学费的
- How to Learn Python for Frank Hu?
- Python中文社区创始成员ZoomQuiet:究竟什么是编程?
初阶学习者
我在卡片大法中提到了初阶学习者的定位。在编程世界里,自己也属于初阶状态,找到正确的学习方式并加以大量的实践应该是最重要的。 前段时间阳志平老师讲的一个故事:上了Python一期课程的学员,告诉老师他最大的收获是学会了如何学习。今天写博客的时候才明白这个故事的含义。编程这件“小事”最重要的是“编程”本身,而不是寻找最佳的学习方法。这个目的搞错了,有可能本末倒置。
正确的入门姿势
「learn python the hard way」是Python经典中的经典入门材料。简单的东西背后蕴含的不仅仅是简单。看似简单的材料我自己前后刷了两遍,每一遍的感受都不相同。第一遍:浅尝辄止,为了求快,到后面就只看代码和解释;第二遍,结合官方文档,死磕前17个练习,查阅文档,找到书中案例指向的知识点,恍然大悟。看到这篇文章Zoom.Quiet:如何快速掌握 Pythonic 要义?后意识到,自己可能要刷第三遍,甚至第四遍了。
用最短时间刷得最核心的 20% 知识点,然后就别学了,直接来解决实际问题吧。千万别将一门开发语言,弄成一门学科来研究/深入。 其实,自学中最难的就在无法获得足量的成就感/持续的正反馈。
LPTHW传递出来的绝对不仅仅是简单的语法结构,每一次简单的练习背后都有大量的相关知识点和实践可以尝试,而输入->运行->输出->调整的方法贯穿了编程的始终。每一次简单练习也不会让人疲劳,反而容易激发起自己训练的热情。所以正确的入门姿势是:首先完成习题,抽取和理解知识点,用自己想到的案例来实现,写博客输出(输出姿势下面会讲到)。
正确的输出姿势
教会别人得能想清楚,说明白,举个实际的案例,最好结合其他的知识点融合成复杂的案例。我以前的学习误区是:在学习过程中把知识点直接摘录下来,记录在文字的草稿里。这样降低了难度,提高了博客输出的便利性。现在意识到,这没有结合必要难度理论,博客写的再好,也成为了重复制造轮子。甚至有一些本末倒置,因为博客的输出仅仅是一个结果,过程却被自己忽略了,最大的不应该。先学会知识和案例,通过卡片积累素材,根据必要难度理论,要自己用自己的语言和自己的记忆来书写,用自己的案例教别人,而不是书上的案例摘抄。在写博客的时候重新做一遍案例,而不是Crtl C和Crtl V。编程也要以案例为主,知识点讲解用自己的语言说清楚,并给出索引文档。这一种痛苦的可以训练,成为习惯的时候,我相信自己真的入了门。
如何理解平台期
童牧晨玄:登峰造极的艺术讨论了一个枯燥却核心的话题:如何理解平台期。
想成为本领域内的高手,就必须要跨越平台期。平台期可能是一个漫长的过程,从你学会了基本Python语法开始,到自己能够顺利的解决各种复杂的编程问题,个人觉得至少需要两年的时间。可以说这两年的漫长平台期会“熬死”很多人。事实上,我曾经就死在了平台期。
文中提到了三种人,身上惊出一身冷汗:
- 站在门口,从未踏入殿堂的人:享受新鲜事物的快感,却无法在了解新鲜事物后持续的学习,接受漫长的训练过程。
- 急功近利的人:仿佛明天就是世界末日,不断的寻找更好的方法,解决实际问题。忽略基本功的训练,不断的找找找。用书上的话说:在感情方面,不能忍受平淡,通过不断地制造浪漫来保持高潮。
- 丢失关键路径的人:呆在平台期里久久不肯离去,忽略登峰造极过程中的关键过程。在平台期里享受平台期带来的舒适和枯燥,却忽略了走上巅峰的关键路径。不再接受全新的挑战。
保护好内在动机
第一次学习编程的人,需要有“死磕到底”的精神,如果这一关过不去,不管过多久再次捡起编程学习的大旗,都会需要再来一次。与其不断空想,不如用一次“笨办法”学会一门语言。至此程序员的世界不再困难,学习第二门语言的难度会大大降低。Data103数据科学课后30天中提到的对开源世界的理解,让自己产生了使命感,期待真正参与到开源世界中来。虽然现在是小白,我坚信通过不懈的努力,一定可以做到。
原则正确与细节正确
如果说前面讲到的道理是“原则”,原则正确并不能让我们真正的学会编程,还需要做到细节正确。把原则落实到具体的细节中,经过大量实践,训练自己的编程能力,而不是“学习能力”
编程学习方法的调整计划
- 博客的输出案例要自己写
- 提高学习时的难度、初步回顾的难度
- 多案例、多反馈、解决实际问题
- 知识体系了解路径,以解决问题为主
现在的学习策略
当时的学习
学习时大脑处于工作记忆状态,在该状态下尽量的多融入案例,而不是仅仅看知识点,官方文档,这对于编程是远远不够的。
- 学习知识点,通过案例的方式学习,尽量了解透知识点、代码的案例等
- 用自己的方式根据知识点编写新的案例,做好记录
过后的学习
必要难度在这里体现最为明显,此时自己需要调用记忆进入自己学习时候的工作记忆状态。这时候一定要坚持住,不能立刻去看源代码,去翻书。这一关必须要过去。
- 不借助任何的外力和工具,立刻想到知识点,用案例实现出来
- 不借助任何的外力和工具,通过博客把自己理解的知识点与自己写的案例输出
巩固学习
过了必要难度的坎,给自己的“神经网络”加点料
- 尝试把知识点结合,解决自己实际遇到的问题,用代码来说话,用代码来说话,用代码来说话(重要的事情说三遍)
- 不借助任何的外力和工具,写成博客,输出
最后送给自己四个字:知行合一
[完](http://blog.junyu.pro)
声明: 本文转载需标明出处,禁止用于商业目的。
ChangeLog
161226 新建