授人以鱼或授人以渔?这是IT教育的一个老话题了。每一个教育者都希望向走进课堂的莘莘学子传授足以享用一生的“渔之道”,而非一时一地的雕虫小技;每一个学习者也希望学到的知识能够在自己的整个职业生涯中发挥效用,使自己不致陷于浮躁与震荡的无间之道。成就渔者,该是教育者和学习者共同的愿想。
作
能够终生受用的“渔之道”难道就注定是积满灰尘的陈货?为了适应企业的需要难道就必须放弃思想的深度?软件技术以前所未有的速度飞快发展变迁,日新月异的技术带来的巨大张力使教育者感到了一丝尴尬。他山之石可以攻玉,当此时,我们不妨把眼光投向大洋彼岸,或许能找到一些启发。
在我手边的是Kent Beck和Eric Gamma合著的一本Contributing to Eclipse。如果单看标题,这几乎是一本最专注实用技巧的书了――不过是介绍一种特定开发工具(Eclipse)的一个特定方面(插件开发)而已。但就是这本书,已经赫然出现在享有“技术奥斯卡”美誉的Jolt大奖的入围名单上。即使考虑到庞大的Java人群和两位作者远播的盛名,我们仍然要问:是什么让这本“实用”的书如此广受青睐?
翻开这本书的第四部分“模式的故事”,一幅奇景出现在我们面前:Eclipse庞大的体系结构被两位作者抽丝剥茧,运行时环境、工作区平台、JDT核心、UI表现层……所有的设计思路变成了一个个模式展现给读者。对于Eclipse的扩展者,这幅藏宝图的价值自不待言;而对于一个面向对象思想的学习者,这图本身又何尝不是无价之宝?我们还记得Gamma与其他三位大师为我们奉献的另一部巨著《设计模式》,23个模式让读者大开眼界之余也让读者困惑不已:如何在实际开发中使用这些模式?而这本Contributing to Eclipse就变成了一本最好的模式应用指南,再加上Eclipse原本就是开源软件,手握大师提供的旅游图,畅游在Eclipse的源码世界中,唯一妨碍你掌握设计模式思想的只有自己的耐性。这次第,又怎是一个“实用”了得?
更耐人寻味的是书中不时出现的“Rules”――Eclipse开发的准则,其中最有趣的当属“有样学样法则”(Monkey See,Monkey Do)。从一开始,两位大师就毫不隐讳地告诉读者:他们不会假装自己什么都知道,实际上,他们和读者一样,也记不住Eclipse里面纷繁芜杂的细节。这条法则告诉读者:每当你遇到一个问题时,你应该做的第一件事就是去找一个已经解决过的类似问题,把别人现成的解决方案复制过来,然后修修改改,套用在自己的问题上。这条法则岂非是所有优秀软件开发者的座佑铭?程序员有句老话:“优秀的代码出自借鉴,天才的代码出自抄袭。”在不经意之间,两位大师举重若轻地交给读者的,恰好是足以受用一生的“渔之道”。
翻回到这本书的前言,两位作者在这里讲了一个有趣的小故事:有位博士生马上要进行答辩,主题是“果实”(我们姑且不问这位博士的专业),但他只来得及准备关于黄瓜的知识。不过,这个学生至少具备了博士级的头脑,他成功地把每个问题都扯到“黄瓜”的话题上面,并把自己准备的东西发挥得淋漓尽致。两位作者谦虚地声称自己只有JUnit和模式这两条“黄瓜”,所以整本书中不时出现JUnit和模式的话题。而作为一个时常为技术的震荡和变迁担忧的软件开发者,这难道不是一个大有教益的故事吗――与其为西西弗斯的宿命而寝食难安,为什么不试着把所有问题都变成你的“黄瓜”呢?
用一个非常贴近实际的主题,两位大师就能写出这样一本极具思想性的书――从书名上我们可以感觉到那种悠远的内蕴,单凭一个“contributing”,就足以使这本书在“in Action”、“从入门到精通”们中卓尔不群了。也许我们的IT教育者――或者说,技术作家们该从这本书中学到一些东西。一边给你的读者实惠的“鱼”,一边在不起眼的角落、背景中潜移默化地向他们传授捕鱼之道,这或许是成就一个渔者最好的途径。