现有的编程课程,书本,教程,对非计算机专业、转行的初学者而言,都非常糟糕。
- 抽象得太抽象浓缩,看完无法迁移。伪代码无法实现转化为实际代码。
- 具体的手册太具体,一大堆功能、函数、方法交给你。为了教会你,用的都是彼此分离不同属没有关联的例子。只是为了讲这个方法的用法而用,实际使用的时候依然用不好。只有正确的用法,不指出常见的错误方法。典型的就是 Python 著名的库 Pandas 的作者写的《Python数据分析》、《鸟叔的Linux私房菜》。很多编程入门书,真的就只是入门书。对于有计算机编程基础的人员,入了门,很快就可以开始做项目。但是对于从零开始的人员,则需要经过痛苦的摸索阶段。
- 另外一些书则是介绍一些奇淫巧技,对于初学者毫无帮助。
- 还有的书因为出版的缘故,写得极其精简简略,生怕多重复强调一点。实际上,就像复习是最好的学习,而不断的重复也是让初学者更好入门的招数。不要怕啰嗦,只要能把道理讲清楚,特别是对于网络发布的情况。反而应该反对过度的凝练。传统的教育方法是书本凝练,课堂详细展开。但是对于自学、转行的人员,无法达到这样的条件。
- 还有就是对于零基础的人员,缺乏足够的知识组合。其实学习本身应该是融会贯通的,就像在学校,不会一学期就学这一门,学完这门才学另一门,都是同步进行。而如果课程设置合理,完全可以刚在这门课学到的知识,就用在了下一门的基础上。形成良好的闭环和循环增强,巩固了旧知识,学会了新知识。
- 刷LeetCode怎么刷?这块其实也是一个痛点。我最开始刷LeetCode的时候,想得最多的就是,我写的这个解法,它是怎么在后台被测试的?如何更好的构建类?而一直没有一个合格的人告诉我是如何运作的,似乎所有的人都默认为大家都知道了。QTMD。
- 也就是说,目前存在一个 huge 的 gap 横亘在初入门和熟练资深者之间,导致初学者长期卡在初学者阶段,无法良好的进入下一阶层。这个问题需要改变。这也是我们目前现代化教育的弊端:
- 学生学不会。
- 学生学会了不会用。
- 学生用了但是不是应该的用法。
我们的教育也是出大问题了。
现在市面上有不少号称针对初学者的教程,比如:《一百天学会python》《零基础入门Linux》,但实际上一点都不实用。要么是太简略,该教的必备知识没教,要么是太简陋,只不过是把官方文档堆了出来,要么就是太庞杂,一坨东西呼人脸上,无所适从。
所以我想,自己试着一点点,把基础知识和引用知识,捣碎了,结合具体事例,反复灌输,传授出来。
太基础的我也不讲,因为网上已经有很多很好的。
我的大纲设计是:
- 这个知识点,到底是什么,是来解决什么问题的。
- 这个知识点,在python下是怎么做,在Perl、Java、kotlin、Go、C/C++ 下又分别是怎么做。
- 配合实例,怎么把这个知识用起来。
希望能够成功。