如何对一门不熟悉的领域或者书籍划定其中最重要的20%?如何划定细枝末节?
之前读书和学习中没有深入思考过这些方法论的东西,觉得方法论只是空谈,但是现在觉得掌握一个合适的技巧如有利刃在手,披荆斩棘方可游刃有余。
废话不多说直接描述问题:就好像我是一个零基础的人拿到一本学习编程语言的书籍,我不知道要先学习基础语法,条件/循环控制,函数、类等等。而这些是一个语言的主体框架,学会这些可以看懂大部分的代码逻辑,这是花费同样时间得到知识的性价比比较高的地方。但是,因为我不知道这些重要,所以我就按顺序一直看一直看,而恰好这书里还包含了整个语言的特性用法、标准库的用法以及实现的原理,这需要花费很多的时间但是也不可能用到所有的部分,这是性价比不高的部分。而且有些书籍的章节顺序并不是前后章节依赖非常大一定要顺序观看才可以的,如果说不开上帝视角去接触一个新的东西该如何判断哪一部分是最重要的,哪一部分是比较不重要的?还是要合理的安排学习的进度?不能盲目追求糙快猛而要慢准精?
我觉得这是一个十分尴尬而且难以回答的问题。因为依靠个人的力量是不可能在全面了解一个东西之前就意识到哪一部分是重点的。总会需要前辈分享能够起到提纲挈领的人生经验(但通常很少)。
我认为知识大致可以分为两个部分:即区分理论和实践。就是认清这个知识是属于How(如何用?),还是属于Why(为什么要这样?(实现))。而How部分所花费时间得到的知识的性价比是最高的(通常来说也是用处最广的部分但都是基础知识)。
比如说编程语言的基础语法以及标准库的用法是属于How的,但是标准库实现则是关于Why的。拿到需求(我想得到什么)先问一句How?然后根据可以细分的细节步步为营,以实现目标结果为最高优先级,等到基础目标完成可以考虑回头深入地看Why的部分了。阅读书籍应以目录大略了解自己想要知道的重点部分是哪些。
就好像我读TCP/IP协议,我觉得整本书最重要的章节在17章到24章,之前的章节属于铺垫。而这些铺垫又太繁杂,不是我想要了解的重点,但是其中穿插了一些概念,跳过不看直接看重要的部分的话,提到这些概念时又看不懂。我认为这是属于Why的。因为涉及理论则这本是需要整本精读的,并且要做好索引可以快读定位知识点。
而我读APUE则很大一部分在讲系统的接口,且章节顺序关联不大,属于How的部分。但是,这也是比较麻烦的一部分,因为这里不仅仅是介绍了接口的用法,而且还面面俱到讲到了很多情况系统处理的方式(Why),就像冰山,表面简单,但实际暗藏玄机。如果说整本书通读则浪费了很多时间(我觉得至少有1/3暂时是用不到的),但是跳读又太失全面,碰到问题容易懵逼。这样的情况是应该先大略通读有个大概的了解之后然后再在需要时精读某一部分?我之前的做法是把整本都啃下来。唉,像Effective C++这样抓住主干提纲挈领的书太少了。
在学习一个新的知识或者阅读一本书籍之前最好找一些高屋建瓴的建议,能够突出重点、抓住主干。
我觉得正确的做法是:1.对于偏理论性的书籍则精读之。2.对于偏实践性的书籍则泛读,对整体知识有个大概的了解之后,再根据实际的需求再对需要的部分精读。重要的是在阅读时要记得建立索引以便可以快速定位。
仔细整理了一下读书的思路,这样的问题应该自己摸索找出适合自己的方式。之前也可能是我太心急想要一口吃成个胖子,仿佛急红了眼要把东西一下学完,也没正式认真的考虑过应该怎样去学才是比较好的方法。应了那句「独学而无友,则孤陋而寡闻。」
提纲挈领的文章和建议
先看目录,以工作内容为中心点辐射知识;深挖工作,对工作外的东西投入小精力即可。不要什么都看,不可能的。