首页 > 杂记 > 正文

为什么有些技术书籍难以读懂?


对于在某个领域初入门径的人来说,一本好书真可谓良师益友,阅读起来就如同聆听一位耐心的导师的谆谆教诲。它可以帮你节省大量的摸索时间,快速越过「新手期」,到达一个有能力进一步钻研精进的阶段。然而,现实经常事与愿违。我经常看到的情况是,周围的同事和朋友,为了了解某项技术,花费精力和金钱选书、购书,最终买回来才发现,根本「读不懂」。然后只能把它放在书架上,从此再也不会看上一眼。

之所以「读不懂」,固然有可能是读者的水平问题,比如缺少必需的理论基础,但大多数情况下都是书本身的问题。这类书所展现的往往是一些代码片段和片言只语的组合,缺乏前后连贯的逻辑性,令人完全不知道从何读起。国内的技术书籍,尤其是讲解某项具体应用类技术的书籍(比如,教人学习XXX编程之类的书),很多都给人这种不佳的印象。而国外的书籍,好书的比例会高一些,但相当多从事技术的同学往往英语过不了关,没有足够的能力阅读国外的文献。

为什么这些技术书籍会有这样的问题呢?我也跟周围的很多朋友都谈论过这其中的原因。下面我就从个人的思路来分析一下,然后再回头看看我们应该怎么应对。

第一,任何一件事,要想做到周详细致,都会花费非常多的时间和精力,直至远远超过最初的计划。

在这一点上,写作和编程其实是十分相似的。回想一下我们平常的编程工作,把一个功能特性实现出来,粗犷的写法和精细的写法在时间的投入上相差甚远。同样,写技术书籍或文章,要做到禁得住反复推敲,思路能够循序渐进,前后连贯,就需要补充大量的细节,花费巨大的精力。

我之前在《做技术的五比一原则》一文中提到过,这就像是写一个电影剧本,要想写出优秀的作品,一个剧作家所要做的绝不仅仅是坐在电脑前用键盘敲出一篇文字那么简单。实际上,他的工作量可能是这个的五倍、十倍,他需要准备大量的材料。相反,如果省去那些本该花费的精力,那么就缺少足够的资料可供选择,最后写出来的东西就肯定会「贫瘠不堪」了。

再说说国内的客观环境。技术书籍的作者,大都不是全职的作家,写书也只是利用业余时间完成的工作。国内的IT公司,特别是互联网公司,本来工作就已经非常紧张了,从中再抽出大量的时间来写作,确实是很困难的一件事情。另外,很多技术书籍的作者都希望追踪当前热门的最新技术,而很多新技术的热度也就那么一两年。为了在有效的时间窗口内完成,很多作者都承受不起旷日持久的时间消耗。

第二,写得越多,越容易出错。

所谓言多必失。回避细节,模棱两可,确实能省去出错的风险。当我们在一本书中读到一个概念或一个推理,并且当我们此时此刻特别想获得更进一步地解释的时候,却发现作者一笔带过,甚至什么也没说,这多半就是作者在故意回避了。但技术写作,容不得半点模糊。记得在一本大学本科《线性代数》教材的前言中,有这样一句话,“每一句话甚至每个字都是经过反复推敲得到的,字字值千金”。确实如此,一本论证严密的技术书籍,固然容不得半点错讹,同样也不能够有逻辑的缺失。

要知道,写技术书籍与写文学作品(特别是小说故事),思路乃大大的不同。现代的叙事艺术,讲求的是「冰山理论」,整个的故事背景和世界观,犹如一座巨大的冰山。作品明确表达出来的,只是冰山一角,而剩下的部分,需要读者自己通过想象去完成。这是文学创作的手法,是作者故意为之。但技术书籍的写作恰恰与此相反,它就是需要面面俱到,尽量不放过每个细节,把疑问都摆出来分析清楚,尤其不能在逻辑链条上有裂痕。

实际上,技术书籍的用词描述,要求非常严格。每个细节都需要深入调研,每句话都不能随随便便写进去。这又是需要反复斟酌、花费精力的地方。不回避细节,对每个知识点进行深入挖掘,也是一本好的技术书籍的重要特点。

第三,也是最重要的一点,目标读者群定义不清。

说到这一点,写作和做产品的思路应该也是类似的。设计一款产品之前,首先要搞清楚的就是产品的目标人群是谁,然后尊重用户需求,考虑用户体验。我们平常碰到的一些不好的技术书籍,大概定位就没有考虑清楚。如果是入门的书,那么就应该从一开始就做好引导,沿着学习新事物应有的顺序,设身处地从读者的角度去讲述。如果是进阶的书,就应该首先说清楚要讲的东西在整个体系中到底属于哪个部分,然后集中精力把该讲的讲透。

反观做的不够好的那些书籍:入门的书,引导不够,细节不够,前后逻辑的承接不够,新手买回来发现「读不懂」,然后只能束之高阁;进阶的书,大多成为一本代码笔记,不够系统,更缺乏深入的剖析,读不懂的人怎么也读不懂,能读懂的人已然是个中高手,也用不着继续读这些东西了。

所以,写作是需要一点点产品思维的。技术好的人未必能写出一本好书。

对于某项技术的理解能达到的深度,可以认为有三个阶段。从完全未知到经过调研,这是第一阶段,是「以为自己会了」;真正实现出来,是第二个阶段,这才是「真会了」;最高阶段则是阐述清楚,对别人讲明白。这里所说的对别人讲明白,就不仅仅是自己理解的问题了,还需要按照对方的思路。

现在我们知道,选书很重要。但如果选不到好书怎么办呢?这其实涉及到我们获取知识的途径问题。我之前在《知识的三个层次》一文中和大家讨论过,知识可以划分为三大类:具体知识、归纳的知识和演绎的知识。对计算机行业的工程师来说,用处最多的恐怕是第II类知识(归纳的知识)。但是,这一类知识是没法快速积累的。要获取这一类知识,往往需要多年的工作经验和亲身实践。

本来,一本好书很可能就是这样一类知识的高度总结。那么,在没有一本好书的情况下,我们怎样才能更有效率地掌握一门技术呢?我们可以看看那些能写出好书的作者,他们获取知识的途径是怎样的。显然,他们不是仅仅通过百度或谷歌来获取知识的,因为这样获取的知识不够系统。实际上,对于某项技术,我们应该重视技术官网和相应的Specification。我们在《技术的正宗与野路子》一文中曾经探讨过,这些才是知识的真正来源。至少对于计算机这门应用学科来说,除了源代码之外,最精深的技术思想就蕴藏在Spec中。很多Spec也是第II类知识(归纳的知识)的高度总结,称得上「字字千金」。如此说来,要想深入一门技术,阅读Spec已经是最快的法门了。当然,这需要最基本的英文阅读能力。对于从事计算机编程的人来说,英文阅读这一关是迟早要过的。

最后我想说的是,如果你想入门某个领域,或者已经对某个领域有所了解但想要进行更深入的专研,你可能看了很多资料仍然不得其门而入,但是不要灰心,那多半不是你的能力有问题,而很可能是还没有找对学习的资料。

(完)

其它精选文章


原创文章,转载请注明出处,并包含下面的二维码!否则拒绝转载!
本文链接:http://zhangtielei.com/posts/blog-good-book-and-bad-book.html
我的微信公众号: tielei-blog (张铁蕾)
上篇: OpenGL ES和坐标变换(一)
下篇: OpenGL ES和坐标变换(二)