解决方法
维护一张“阅读列表”,用它来跟踪你打算阅读的书,并记下已经读过的书。
按照“分享所学”模式的精神,可以考虑把这张列表保存在公共空间。这能使其他人从你学到的东西中受益。我们使用的是http://bookshelved.org(Laurent Bossavit于2002年创建)上的wiki,但任何公共列表都可以。理想情况是,你的列表支持排序,并能区分哪本书是你何时读过的。
这一模式不只讨论如何管理自己想读的书,也是一种反映你以往阅读习性的机制。基于多年的数据,你可以在自己选择的学习资料中逐渐发现一些模式、趋势和缺口。这可以帮你更好地决定下一步读什么。如果把这种信息公开,其他人也会为你以后的阅读提供建议。这会使你发现隐蔽的联系和表面暗淡的珍宝。
任何一本书,你能从中获得的最有价值的东西就是一列值得阅读的其他书目。时间长了,你会发现某些书不断地从“参考书目”(bibliography)中跳出来,你应把那些书移到阅读列表的顶部。其他书会下沉。由于阅读列表实际上是个优先级队列(priority queue),最终你会发现有的书已经在队列中下沉得太深,你可能永远也不会再读它们了。这很好。这一模式的目的就是向你提供一种方法,为潜在的知识洪水排定优先级并进行过滤。
实施这一模式的主要难点是:你需要先对某个主题有深入的了解才能搞清楚哪些书需要读,按什么次序读。解决这一矛盾的方法之一是:开始时挑一本宽泛的书,让自己对目标主题有大致的了解;然后选择一些内容具体的书,从而掌握该主题中自己感兴趣的方面。另一种方法是依靠“同道中人”和指导者。指导者可以向你推荐一些必读书籍,与学徒伙伴们讨论则可以帮你弄清阅读它们的顺序。你还可以利用正在实施这一模式的其他人所提供的公开阅读列表。
另一难点在于搞清楚从哪里开始。你可以从微软出版社(Microsoft Press)出版的《Code Complete》(代码大全)一书的第35章,或者《The Pragmatic Programmer》(程序员修炼之道——从小工到专家)一书的“参考书目”中获得相当不错的书籍列表,借此来构建自己的“阅读列表”。你还可以查看本书的“参考书目”,看看那些曾经启发过我们的书籍。
这一模式的构思要感激Ravi Mohan关于“书链”(Book Chain)[1]的思想,以及来自Joshua Kerievsky的学习小组模式语言中的“顺序学习”(Sequential Study)模式。[2]“书链”讲的是如何请别人向你推荐一套能将你带入新主题的图书,这一模式更多的是讲如何管理自己感兴趣的一系列书籍。该模式与“顺序学习”也不一样,因为它并不要求按照这些书籍相互影响的年代次序来阅读它们。在这一模式中,能使你在旅程中走得更远的那本书,就是你下一步该读的。
记住这是你自己的阅读列表,这一点非常重要。让其他人的建议影响你,这很好,但只有你自己真正清楚你目前的状况。因此,你才应该是那个对自己下一步学什么做出决策的人。除此之外,在合适的时间阅读合适的书籍也很重要。比起乱读一通自己还没有相关经验的书,或者乱读一通自己尚不具备相关预备知识的书,在合适的时间读合适的书会有更好的效果。太多的人在学习过程中过早地阅读了《Design Patterns》(中译本《设计模式:可复用面向对象软件的基础》,机械工业出版),那时像《Refactoring》(重构:改善既有代码的设计)这样的书可以针对模式提供更浅显的介绍。去“找人指导”吧,让他们对你下一步该读哪本书提些建议。时间选择会极大地影响你对一本书的体验。
[1]http://ravimohan.blogspot.com/2005/08/apprenticeship-pattern.html.