最近在研究strut2,在学习过程中当然 少不了一本书,于是在书店瞎逛,发现李刚老师的<
李刚创作理念:上善若水
上善若水,水善利万物而不争,处众人之所恶而不争,故几于道——《老子》
在泱泱中华浩如烟海的典籍中,我独喜欢这句话,它仿佛一句箴言,揭示着人生最平实,却最深奥的轮回。在苍茫天地之间,只有水的姿态如此绚丽多姿:在天,为云为雯,绚丽华美;在谷,为川为渊,汹涌浩瀚;在地,为陵为山,晶莹剔透。
常常想忍不住,怎样的人生才可做到“若水”?
经历多年软件开发后,我暂时性地离开了一线开发岗位,开始了新东方IT培训中心的Java讲师生涯,也开始做一些技术咨询、员工培训等工作,成为了一个软件开发的布道者。
在后来的日子里,我觉得这是一种轮回:一种从学习到学习的轮回。不同的是:多年前,学习的是我;现在,学习的是我的学生、我的客户。因为这种轮回,有机会重新回顾我当年的苦难:心里饱含万千学习激情,但一个又一个的问题迎面扑过来,这种激情是否还会持久?
现在学生告诉我:学习是一件很快乐的事情,特别是解决后问题后真的很快乐!但如果一个问题折腾2天都得不到正确答案,那就非常不快乐!
从他们的话中,我悟到一个道理:何谓快乐?我想,快乐是经过千辛万苦后抵达目的后满足感。快乐有如下等式:快乐=千辛万苦+抵达目的。如果整个过程只剩下千辛万苦,没有抵达目的,那么所有的千辛万苦就等于零了。如同上帝罚西绪弗推石头,每天重复推同一块石头上山,那就变成了惩罚!
有感于此,我创作的图书目的是希望能带给学习者快乐,如果他们正经历着软件开发中百转千回的挫折,他们可以从图书找到问题的解决方案。因此我所创作系列图书只有一个目的:解决问题,解决各种实际问题。整个创作过程中,坚持以解决开发问题为目的,以知识内在逻辑为主线,以浅显直白为方式,希望可以带给阅读者快乐。
创作过程,我不愿意使用那些太过专业的概念,而是先介绍各知识点的用法,以及对应的知识点语法,而各种专业概念,我宁愿放在最后介绍!不得不承认,计算机领域的专业概念是如此层出不穷,又如此词不达意!例如网络编程中的Socket,不知道哪位“天才”将其翻译成“套接字”,这多年前曾是我的恶梦;再如时下流行的AOP编程中的Advice,有的说是建议,有的说是通知,完全是不知所云!这种名称,对初学者该是怎样的折磨啊!
常常会想:这些概念的名称很重要吗?为什么一定要给它们一个如此“深奥”的名称?例如讲解方法重写时,我归纳出方法重写的规则:三同一大一小,分别是父类、子类的方法名相同、参数列表相同,返回值类型相同,子类方法的访问控制相等或者更大,子类方法抛出的异常相同或者更小。当我的学生去面试时,给他的面试官介绍这条规则时,他的面试官连声质问他:什么叫异常更小?异常之间只有父子关系,没有大小关系!(实际上,从父类到子类,就是一般到特殊的关系。因此可以认为子类的范围比父类的范围更小,就如苹果类的范围比水果类的范围更小)这是一种现状:大部分人热衷于那些很正规、但陈腐的说法,很少有人愿意“化神奇为腐朽”。
坚持认为:化神奇为腐朽可能需要更深厚的知识,更高的视角才可达到这种境界。不管人类知识如何演变、如何复杂,各种知识都是具有极深的关联、类比的,即使是某些十分晦涩的知识点,等真正明白了它的含义后,一定会发现它类似于日常生活中最平常的事情。例如介绍设计模式的图书,大多说得的非常专业、甚至有点神乎奇技。但我更愿意这样介绍设计模式:当你看到一条水沟横亘在你的面前,你应该跳过去,而不是再继续前走!这就是设计模式。但如果一个初学者对一个所谓“高手”介绍这个定义时,一定又会被连声质问。
创作一本图书时,目的很重要!因为我的目的是解决问题,带给读者快乐。因此我希望用最司空见惯的示例,类比最深奥的知识,希望让读者从最平常的知识,过渡到那些所谓的专业知识。帮助读者找到晦涩知识和日常知识之间类比,从而让读者产生“所谓某某某知识,原来不过如此”的感觉!
很多所谓的“高手”,积累了一定的知识,但远远没有达到“悟”的境界,大部分时候只会人云亦云,却往往以为自己掌握的才是最正确的真理!这是学术界永恒的悲哀,一如布鲁诺被烧死在罗马鲜花广场上一样悲哀!而国内的开发界更多浮躁,我所面试的老师大都是某公司技术经理、项目经理,甚至包括某大型IT培训结构跳槽的老师,但当要求他们写一个简单的网络通信程序时,他们却往往理由很多:没有文档、没有IDE工具、不能上网查资料、准备不充分……他们的理由比他们的知识多!可能这是中国大部分程序员的现状:他们都是“高手”,动辄精通“Java、C++”,但一旦要求当场完成一个小程序则困难重重!实际上,很多学生经跟我学习一个月后,就可以完成一个模拟QQ在线游戏大厅的应用,再晚一点,可以开发出MySQL企业管理器(功能与MySQL Front相同)。但我却一直告诫他们:你们还很差,还需要更多积累!
改变这种浮嚣!是我创作图书另一个目的。整个创作过程中,一直坚持“代码就是硬道理”的准则,坚持把所有的知识点以小应用的方式演示出来。因为:程序是写出来,而不是说出来的。读者可以从我所创作的系列图书中,每本都可以看到丰富的代码范例。
创作一本图书是很辛苦的事情,甚至有些得不偿失。曾有人告诉我,如果你想通过写书来赚钱,你应该写如“如何上网”、“如何使用Windows”类似的题材,因为受众面广!但他不明白:我不曾想过通过创作图书来赚钱。我作为新东方IT培训广州中心教学总监,新招聘的老师都可领近一万的月薪。因此,我从未想过通过创作图书来赚钱。包括下一步计划创作的WorkFlow以及Shark,受众面更窄!但我依然会写,而且会很认真地写!
正如我写介绍Struts2他图书一样,我希望第一本介绍Stuts2的图书是用中文写成的!同样,在多年的企业应用开发中,我觉得WorkFlow的用处是如此之大,有必要让国内的软件开发者了解它,使用它,所以我要介绍它。
国内还有一个很奇怪的对比:网络上有很多“愤青”,他们很爱国,他们自信得有些自大,他们无所畏惧,每天在网络上以口水征服世界。与之相反的是,很多软件开发领域的人则无比自卑,他们认为国外的软件人才一定比国内的好,国外的图书一定比国内的好!当我所出版的《基于J2EE的Ajax宝典》面世后,有人在网络上评论:写得这么全面,肯定是从哪里抄袭的!有时候,我们宁远记住国外人的话,但不愿记住我们自己说的话。例如,软件开发领域众所周知的DRY法则,其实很多年前我就说过:如果你在一个系统里两次以上重复了相同代码,这个系统的设计是可以改进的。
不可否认,国外的IT技术比国内IT技术的整体水平要高,但并不是国外的所有软件开发者就比国内所有的软件开发者优秀!在浮嚣的背景下,国内依然有一些埋头沉湎于代码的软件人,他们默默地支撑着中国的软件业,他们才是真正的程序员。而我,作为一个曾经沉湎于代码的程序员,希望能把这种务实的精神传播出去,用我图书,用书中的代码,把这种务实的精神传播开来。个人以为,这也是一种爱国,而是我喜欢的爱国方式:切实爱国!
上善若水,水善利万物!无从知道我是否善于利万物,但我正希望自己能利万物,希望自己创作的图书能为中国的软件业作出微薄的贡献。如果我的图书为真正的程序员解决了问题,带给了程序员快乐,那就是我最大的快乐。