怎么在教学中抓住重点《Head First Java》

因为技术方向的调整,去年底开始学起了 Java,也不是正儿八经的学,看了点 Spring Boot 的基础,拿起项目直接套用其他语言的经验跑起来再说。增删改查嘛,除了库不熟,效率低点,实现功能是没有压力的。

现在酝酿的差不多,渐渐要开始搞自己的框架了,便打算补补基础知识,通过翻阅网上各种荐书的讨论,最终定下来从《Head First Java》入手。正好 O’Reilly Learning 上面也出了第三版的预览,便翻来看了。

这个系列的书我见过不少,但从没看过,因为一看封面就会觉得很浮燥,不怎么正经的感觉。

直觉很准,这本书确实不像其他技术书籍那么“正经”,尤其是里面配的照片,甚至有些搞笑。但作者很真诚,配合讲解的手绘插图也非常细致,足够 Head First,对大脑很友好,也许直白点叫 Brain Friendly 我就能抓到他的点了。

这里我不想讨论书的内容,而是更留意其写作的方法,体会较深的有这么几点:

  1. 在某个例子里,先不去考虑边界情况,尽管代码有BUG,但简短很多,这样读者就抓住重点,作者还一箭双雕,利用这个BUG自然的引出下文要解决的问题。 我之前写过不少教程类的东西,总是事无具细,把自己能想到的漏洞和各种可能发生的问题都写在解决过程中,别人如果照着做确实不容易出错,因为大多数异常情况都考虑到了,但是不曾想过可能会让读者迷失重点,对于有经验的人读起来也会比较浪费时间。也许采用备注等形式,把异常情况的处理跟在全文的最后,能让读者更能把握整体脉络。

  2. 某些例子中,某个具体功能的实现,作者会给出一段代码,称作 Ready-Bake Code,让读者先别管它是怎么来的,只管照抄进去,被跑出正确结果就行,这样读者的重心就可以放在作者希望读者关注的地方,而不用理会暂时不必关心的细节。 和上面一样,不必立刻详细的去解释所有东西,只要关注重点,有必要解释的,可以另外开一篇文章,让读者选读。

  3. 书的整体内容安排上,使左右脑交互使用,作者引用脑科学的研究提出大脑和手臂一样,连续使用右脑就和持续用右手提重物一样,需要休息,换另一边来,才能提高效率。 这个表述我第一次见到,但结果应该是没差了,《Learning How to Learn》的核心也是切换,但更强调有意识和潜意识之间的切换。不过真要把输出的内容整理成图文并茂,左右半脑并用,还是要下非常大的功夫在上面的。

  4. 明确的采用 prep code → test code → real code 的步骤,这个倒和我的做法有些许相似,对一些复杂的内容,我会先写注释,把步骤描述一下,然后再写具体代码。 虽然作者主要是从 TDD 的角度讲这个事情,但我发现很多代码逻辑理不清的都是没有把层级分解好,一股脑把代码堆进一个很长的函数中,导致难以理解和维护。先用注释将过程一步一步讲下来,然后换成几行对应的代码或者一个函数,可以很好的分解问题。

  5. 还有其他非常多样的形式:文字、代码、图片、问答、猜字谜、模拟人物访谈、顺口溜,花样百出,还给每种不同的题目类型设计了场景。甚至前面提到的“不正经”、夸张、搞笑也算是情绪方面的手段了。

好吧,写到最后,我才知道这个系列的中文版叫《深入浅出***》,确实配得上,希望自己也能做到吧。