万年自学党聊聊如何选择编程学习资源?

876

大家好,我是鱼皮。

昨天在某乎看到一个问题:“ 准备自学Java,但是B站有两版视频,应该看哪个?

如今,编程学习资源越来越多,很多想学编程的朋友都会遇到类似的资源选择问题。对于初学者而言,选择合适的编程资源尤为重要,否则就容易被劝退。

作为一名万年沉迷自学党,结合自己大学的经历,分享下我选择学习资源的方法。

主要包括两个方面:

  1. 选择何种类型的资源?

  2. 同类资源如何对比?

资源类型

学习资源类型有很多,比如书籍、电子书、在线网站、在线文档、视频、讲义等等。

我认为选择学习资源的要点是:以能学下去为前提,保证学习效率的最大化

因此,我会 在不同的阶段选择不同类型的资源

早在高考结束时,我就读过一本 C 语言经典书籍《C Primer Plus》,强行读了几十页后,我就被大量的术语和理论劝退了,这本书对我而言,为时过早。

因此,刚刚步入大学,初学编程时,相对于枯燥的课本教材,我会选择比较轻松、能帮助我上手和培养兴趣的资源。前端和 Python 对新手还是比较友好的,因此除了学校教的 C 语言外,我主动去学习前端。在学习前端时,我没有选择看书,而是先通过一个 在线实战、敲代码闯关的网站学习基础语法。

这里也给大家推荐一些在线练习网站:

前端:

入门编程 & 自学前端必备网站!

Java:

超有趣的 Java 自学网站!

Python:

高效交互式在线编程学习

算法应用:

打怪升级,在线练习编程的神器!

当然,还有很多,大家可以先到编程导航(www.code-nav.cn)上找找看,后面以推文的形式慢慢给大家推荐~

通过在线练习网站,帮助我快速了解了一门编程语言,培养了我的兴趣,并能够直接写出一些入门级代码。在这之后,就不要再依赖这些网站了,目前没有任何一个网站能帮助你从入门到精通!我会倾向于选择 阅读一本经典书籍 来巩固这门编程语言的基础,比如 Java 我选择了《Java 核心技术卷 1》,这本书排版优雅,内容殷实,总之就是好!

当然,不是所有人都喜欢阅读,我有事也会觉得看书比较无聊。如果看书看不下去了,可以到网上看一些视频课程入门,但看完视频后,一定要倒过来阅读经典书籍,躲不掉的。基础都不牢固,就强行去学开发框架,一定会犯很多低级错误,踩很多坑。

追求速成?不存在的,哪有那么好的事儿,欠下的这些打基础的时间,都会在日后以 bug 的形式加倍奉还!

那怎么算是打好基础了呢?

没有一个明确的边界,总之就是你能把书中或视频中提到的知识理解并能写出代码实际应用,就 ok 了。比如学习面向对象的继承时,你不能只知道继承的语法,还要知道继承的好处,以及在什么情况下应该使用继承。能用学到的知识去解决问题了,就算过关~

打好编程语言基础后,我已经可以编写一些简单的软件了,下一步就是提升开发的效率,学习企业级开发框架。我会选择看一些 视频教程 来学习主流开发框架,因为学习框架一定要先会用,再去理解和深挖它的原理和工作机制,网上的视频相对于书本来说,会更有趣一些。当然也不是只看视频,还要跟着老师的节奏敲代码、多练习。一个系列的视频看完后,就 一定要亲自做出个项目,否则跟没看一样,纸上谈兵,一看就会,一写就废。

当我学会了一门编程语言对应的开发框架后,我会到网上找一些简单的 开源项目,阅读他人的代码,跟着项目代码进行练习,学习他人的写法。想学好编程,除了多敲代码外,还要多阅读他人的代码,否则很多代码规范,或者一些小技巧、骚操作你都 get 不到。而且一旦你不接触别人的代码,只按照当初的视频教程去写,假如培训机构的哪个写法不规范,可能你会被误导一辈子!

img

**别笑,这就是很多同学的真实写照!**问他为什么写这么烂的代码,他说:“我看别人视频里就是这么写的呀!”

随着你的编程经验不断积累、能力逐渐提高,你自然会去接触一些更专业、更规范、更底层的知识。此时学习的最好方式就是 阅读技术书籍。尤其是大公司,面试时一定会问到底层知识,所以一定要彻底地、系统地学习一门技术,就拿 Java 的虚拟机 JVM 来说,要去了解他的设计思路、实现原理、性能调优等。优秀的程序员不仅要能写出代码,还要能写出 好代码(高可用、高性能、高并发、可扩展、可维护、规范等),而这就需要大量的理论知识储备和实践经验。

虽然都说 “面试造火箭,工作拧螺丝”,但是大厂对人才的需求 不是看你的现在,而是看你的未来,能否去承担更大、更具挑战和价值的任务。

随着你的阅读量越来越大,知识面越来越广,你会发现学习新知识比以前轻松了不少,这时最有效的学习新技术的方法就是阅读 官方文档。因为官方文档一定是所有资源中 最新、最专业、最全面 的,其他所有的学习资源都是建立在官方文档的基础上的。与其道听途说,为什么不自己一探究竟呢?这也是很多专业的程序员喜欢阅读文档的原因。

当然,除了阅读官方文档外,还有更猛的、更无情的方式,直接看源码!在源代码面前,没有任何秘密可言。

Talk is cheap,show me the code!

资源对比

上面讲了我在不同阶段是如何选择学习资源类别的,下面再聊聊同类资源面前,如何对比?

我会重点考虑以下因素:

1. 资源时效

即书籍的出版时间,或视频、文章的创作时间。

编程技术的发展非常迅猛,不信你看 Java,半年一个小版本、三年一个大版本;再看 Elasticsearch,四年不到,版本从 1.x 干到了 7.x!

所以一定要选择比较新、未过时的资源。经典理论、基础知识、编程语言的视频时效还长一点,内容基本不会有太大的变动,几年前的也都能看。但是如果要学编程框架或者类库,一定要看近 2 年内的,有新的就尽量看新的,比如学习 Java 的 SpringBoot 框架,要看 2.x 版本而不看 1.x 的。否则就会像我大一暑假一样,傻傻的看了不少已经被淘汰的框架用法,按照书上敲代码怎么都运行不了!

2. 作者或机构

看书时,我会尽量选择技术圈内比较知名的大佬写的书。

倒也不是名人效应,要知道,程序员们都觉得自己写的代码最牛逼,所以,能在 IT 圈儿获得认可的大佬,一定在技术上有很大的影响力,创作也会更专业!

对于培训机构的网络课程,我觉得比起机构的名声,更重要的是老师。如果某位老师的学员反馈还不错、认可度高,而且声音、讲课方式等也让你感到舒适,那么可以试着跟一位老师长期学习。

比如我早期还跟着一位人美声甜的小姐姐学 C++ 来着 😊!

3. 资源内容

现在人人都说自己的文章、自家的课程是最牛逼的,大家也千万不要信。

在选择资源时,我会先看一遍目录,了解个课程大概,假如说很多知识你都已经会了,也许就不需要再跟着这份资源学习。

比较重要的一点是,要和同类的资源做对比。

就像本文开头提到的问题,如何在两个系列视频课中做出选择呢?我会扫一遍两套视频的目录,了解视频大致的内容,对自己能学的知识有个预期,再做决定。

从课程目录预见内容

4. 目标匹配度

一千个人有一千个哈姆雷特,每个人对同一份资源的评价也会褒贬不一,所以要选择相对适合自己的课程。

就拿上一点提到的 资源内容 举例,我通常会选择目录相对更全面、覆盖知识点更多的课程,生怕错过任何一个小细节,当然遇到了已经熟悉的知识点也可以快速跳过。反之,如果有同学时间紧张,追求速成,可以反其道而行之,选择一些小而精的课程。

5. 资源质量

比如书籍和文章的排版、视频的清晰度、语音设备有无杂音等等,这些都是最基本的要求。在学习的同时,也要注意保护好我们的视力和听力哦~

6. 配套资源

优秀的书籍和视频课程都会配套一些学习资源,比如代码练习、习题答案、讲义、笔记等。利用好这些资源能帮助我们更高效地学习,不容小觑!很多培训机构的网络课程也都比较贴心,这些配套资源基本都是免费的。

7. 资源认可度

选择学习资源就像是购物,建议多了解下他人对该资源的看法。书籍的话可以参考豆瓣评分,视频的话可以看播放量、收藏数、点赞数、好评率、一些网友评论等。

但也存在问题,现在是流量为王,网上刷数据、刷评论的太多了,所以也不要被数据遮蔽了双眼。建议在选择学习资源时,多去问问身边同学,听听他们的真实意见,比如:“你觉得这个课怎么样?大概多久能看完?看完后能学到哪个程度?有哪些章节不需要看么?” 等等。

也建议大家养成好的习惯,把你认为不错的资源保存下来,不仅能帮助自己复习,还能分享给更多同学~

(上传到编程导航上也是个不错的选择哦)

编程导航网

如果以上几点还不足以帮助你选择资源的话,可以先分别 试看一部分内容,再做决定也不迟~


直到最后,我也不会对开头那个某乎的问题给出明确的答案,因为这两套资源反馈都还不错,可能分别更适合部分朋友,没必要非得区分个优劣(而且这两家我都惹不起)。看了些其他同学的回答,也基本是保持中立吧~

授人以鱼不如授人以渔,结合鱼皮分享的一些资源选择的要点,我相信聪明的同学都会有自己的选择了!