请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术交流,必有回复!

疯狂Java联盟

 找回密码
 加入联盟
查看: 19411|回复: 23

上善若水

[复制链接]
发表于 2008-8-3 18:54:51 | 显示全部楼层 |阅读模式
上善若水——兼谈我的创作理念

上善若水,水善利万物而不争,处众人之所恶,故几于道——《老子》

在泱泱中华浩如烟海的典籍中,我独喜欢这句话,它仿佛一句箴言,揭示着人生最平实,却最深奥的轮回。在苍茫天地之间,只有水的姿态如此绚丽多姿:在天,为云为雯,绚丽华美;在谷,为川为渊,汹涌浩瀚;在地,为陵为山,晶莹剔透。


常常忍不住想,怎样的人生才可做到“若水”?


经历多年软件开发后,我暂时性地离开了一线开发岗位,开始了新东方IT培训中心的Java讲师生涯,也开始做一些技术咨询、员工培训等工作,成为了一个软件开发的布道者。

在后来的日子里,我觉得这是一种轮回:一种从学习到学习的轮回。不同的是:多年前,学习的是我;现在,学习的是我的学生、我的客户。因为这种轮回,有机会重新回顾我当年的苦难:心里饱含万千学习激情,但一个又一个的问题迎面扑过来,这种激情是否还会持久?

现在学生告诉我:学习是一件很快乐的事情,特别是解决后问题后真的很快乐!但如果一个问题折腾2天都得不到正确答案,那就非常不快乐!

从他们的话中,我悟到一个道理:何谓快乐?我想,快乐是经过千辛万苦后抵达目的后的满足感。快乐有如下等式:快乐=千辛万苦+抵达目的。如果整个过程只剩下千辛万苦,没有抵达目的,那么所有的千辛万苦就等于零了。如同上帝罚西绪弗推石头,每天重复推同一块石头上山,那就变成了惩罚!

有感于此,我创作的图书目的是希望能带给学习者快乐,如果他们正经历着软件开发中百转千回的挫折,他们可以从图书找到问题的解决方案。因此我所创作系列图书主要是一个目的:解决问题,解决各种实际问题。整个创作过程中,坚持以解决开发问题为目的,以知识内在逻辑为主线,以浅显直白为方式,希望可以带给阅读者快乐。

创作过程,我不愿意使用那些太过专业的概念,而是先介绍各知识点的用法,以及对应的知识点语法,而各种专业概念,我宁愿放在最后介绍!不得不承认,计算机领域的专业概念是如此层出不穷,又如此词不达意!例如网络编程中的Socket,不知道哪位“天才”将其翻译成“套接字”,这多年前曾是我的恶梦;再如时下流行的AOP编程中的Advice,有的说是建议,有的说是通知,完全是不知所云!这种名称,对初学者该是怎样的折磨啊!

常常会想:这些概念的名称很重要吗?为什么一定要给它们一个如此“深奥”的名称?例如讲解方法重写时,我归纳出方法重写的规则:两同两小一大,分别是父类、子类的方法名相同、参数列表相同、返回值类型或更小,子类方法抛出的异常相同或者更小。子类方法的访问控制相等或者更大,当我的学生去面试时,给他的面试官介绍这条规则时,他的面试官连声质问他:什么叫异常更小?异常之间只有父子关系,没有大小关系!(实际上,从父类到子类,就是一般到特殊的关系。因此可以认为子类的范围比父类的范围更小,就如苹果类的范围比水果类的范围更小)这是一种现状:大部分人热衷于那些很正规、但陈腐的说法,很少有人愿意“化神奇为腐朽”。

坚持认为:化神奇为腐朽可能需要更深厚的知识,更高的视角才可达到这种境界。不管人类知识如何演变、如何复杂,各种知识都是具有极深的关联、类比的,即使是某些十分晦涩的知识点,等真正明白了它的含义后,一定会发现它类似于日常生活中最平常的事情。例如介绍设计模式的图书,大多说得非常专业、甚至有点神乎其技。但我更愿意这样介绍设计模式:当你看到一条水沟横亘在你的面前,你应该跳过去,而不是再继续前走!这就是设计模式。但如果一个初学者对一个所谓“高手”介绍这个定义时,一定又会被连声质问。

创作一本图书时,目的很重要!因为我的目的是解决问题,带给读者快乐。因此我希望用最司空见惯的示例,类比最深奥的知识,希望让读者从最平常的知识,过渡到那些所谓的专业知识。帮助读者找到晦涩知识和日常知识之间的类比,从而让读者产生“所谓某某某知识,原来不过如此”的感觉!

很多所谓的“高手”,积累了一定的知识,但远远没有达到“悟”的境界,大部分时候只会人云亦云,却往往以为自己掌握的才是最正确的真理!这是学术界永恒的悲哀,一如布鲁诺被烧死在罗马鲜花广场上一样悲哀!而国内的开发界更多浮躁,我所面试的老师大都是某公司技术经理、项目经理,甚至包括某大型IT培训结构跳槽的老师,但当要求他们写一个简单的网络通信程序时,他们却往往理由很多:没有文档、没有IDE工具、不能上网查资料、准备不充分……他们的理由比他们的知识多!可能这是中国大部分程序员的现状:他们都是“高手”,动辄精通“Java、C++”,但一旦要求当场完成一个小程序则困难重重!实际上,很多学生经跟我学习一个月后,就可以完成一个模拟QQ在线游戏大厅的应用,再晚一点,可以开发出MySQL企业管理器(功能与MySQL Front相同)。但我却一直告诫他们:你们还很差,还需要更多积累!

改变这种浮嚣!是我创作图书另一个目的。整个创作过程中,一直坚持“代码就是硬道理”的准则,坚持把所有的知识点以小应用的方式演示出来。因为:程序是写出来,而不是说出来的。读者可以从我所创作的系列图书中,每本都可以看到丰富的代码范例。
创作一本图书是很辛苦的事情,甚至有些得不偿失。曾有人告诉我,如果你想通过写书来赚钱,你应该写“如何上网”、“如何使用Windows”之类的题材,因为受众面广!但他不明白:我不曾想过通过创作图书来赚钱。我作为新东方IT培训广州中心教学总监,新招聘的老师都可领近一万的月薪。因此,我从未想过通过创作图书来赚钱。例如我已出版的《Ruby On Rails敏捷开发最佳实践》,以及下一步计划创作的WorkFlow和jBPM,受众面更窄!但我依然会写,而且会很认真地写!

正如我写介绍Struts2的图书一样,我希望第一本介绍Stuts2的图书是用中文写成的!同样,在多年的企业应用开发中,我觉得WorkFlow的用处是如此之大,有必要让国内的软件开发者了解它,使用它,所以我要介绍它。

国内还有一个很奇怪的对比:网络上有很多“愤青”,他们很爱国,他们自信得有些自大,他们无所畏惧,每天在网络上以口水征服世界。与之相反的是,很多软件开发领域的人则无比自卑,他们认为国外的软件人才一定比国内的好,国外的图书一定比国内的好!当我所出版的《基于J2EE的Ajax宝典》面世后,有人在网络上评论:写得这么全面,肯定是从哪里抄袭的!有时候,我们宁愿记住国外人的话,但不愿记住我们自己说的话。例如,软件开发领域众所周知的DRY法则,其实很多年前我就说过:如果你在一个系统里两次以上重复了相同代码,这个系统的设计是可以改进的。

不可否认,国外的IT技术比国内IT技术的整体水平要高,但并不是国外的所有软件开发者就比国内所有的软件开发者优秀!在浮嚣的背景下,国内依然有一些埋头沉湎于代码的软件人,他们默默地支撑着中国的软件业,他们才是真正的程序员。而我,作为一个曾经沉湎于代码的程序员,希望能把这种务实的精神传播出去,用我图书,用书中的代码,把这种务实的精神传播开来。个人以为,这也是一种爱国,而且是我喜欢的爱国方式:切实爱国!

上善若水,水善利万物!无从知道我是否善于利万物,但我正希望自己能利万物,希望自己创作的图书能为中国的软件业作出微薄的贡献。如果我的图书为真正的程序员解决了问题,带给了程序员快乐,那就是我最大的快乐。

签名.bmp
 楼主| 发表于 2008-8-3 19:03:57 | 显示全部楼层
常常有人会问:
为什么我可以一年出几本书,我想这篇文章可作为答案吧。

其实一年写多少书不重要,就像几乎很少软件培训老师能想象:
不带任何参考资料,所有案例代码都当堂敲,当堂调试——
不管是小到运算符测试,大到当堂写多线层网络通信程序,
还有当堂开发Struts的核心代码——是开发,不是简单使用。
还有当堂整合开发SSH案例

——其实我写一本书背后付出了多少,又有谁知道?在写一本书之前,
我曾经总结过多少相关文章,又有谁知道?

书的质量有问题吗?光盘代码能运行吗?能给读者带来帮助吗?
——这是我关心的,也是一个正常读者应该关心的。
发表于 2008-8-3 22:32:10 | 显示全部楼层
看完老师这篇文章...四个月的培训过程立刻重现在眼前..
以前为了作业出现的问题.搞了几天.那种痛苦..解决问题之后脸上的笑容.永远是最开心的笑容.通宵编程到头发都白了.都是值得的.
现在公司就出现了很多个说aop....面向方面编程的.是什么东西.很痛苦!还是五年工作经验的.ЯЭ .我就和他说其实是面向切面编程.大致说了老师教我们什么是AOP说给他听.然后叫他去买spring2.0..
我才知道老师帮我们减少了多少痛苦.цк
 楼主| 发表于 2008-8-3 22:35:52 | 显示全部楼层
现在不要再买我写的spring2.0啦——不要到时又来骂我啦ЯЭ
那个有点过时了,
现在spring2.5已经全面转为支持AspectJ啦。
《轻量级J2EE企业应用实战》第二版会重写Spring部分,重点AOP,AspectJ支持。

刚才还看到“那边”有个高手装X лъ
Spring是什么,Spring的关键就是Java或oo,下面有截图:лъ   


哈哈,现在我教你们如何装X,不管别人说什么,
你一言以蔽之——         
关键思想是java或是oo,绝对错不了。цк
要不我们以后上课,总是模仿这个高手:关键思想是java或oo!

看到该帖时,我突然像看黄泉笑话一样(甚至比部分黄泉笑话还有搞笑、喷饭效果)笑了。

呵呵,对于Spring,我个人认为核心是IoC和AOP,
(当然你说是Java或OO,那肯定错不了。
或者,下次你就说都是二进制码!这个更错不了。)
其实这两个部分我基本可以自己实现,即使不用Spring框架。
相信上此论坛的不少同学也可以实现IoC,
但实现AOP部分可能就少很多了。

再者,到目前为止,
我依然不曾看过《webwork in action》——并不是说此书不好,而是我没这么多时间去读。
ss.png
发表于 2008-8-3 22:41:44 | 显示全部楼层
期待老师的第二版.我英文不行吖.其他书又会变魔术...还是老师的书最好.
2.0也支持AspectJ吧?我在靓女那里就看见他有用到了.
 楼主| 发表于 2008-8-3 22:52:51 | 显示全部楼层
对,从spring2.0就开始支持了。
但我那时还写的是spring 自己的AOP API。算是有点过时了。
不过AOP思想是一样的,只是实现机制有区别,配置方式存在区别。
发表于 2008-8-3 23:04:43 | 显示全部楼层
我下次和别人说spring是0101按一个J2EE出来的!
发表于 2008-8-3 23:24:01 | 显示全部楼层
老师.我现在都不敢讲笑话了.现在象这图的人好多..晕.
前几天我要做一个发送邮件的东东.我们那个项目管理的人跑来和我说.你一定要把XX先加载到内存去.说得很有气势...然后还说了一句.你想想我为什么要这样叫你做.我知道你一时半会接受不了.等会我告诉你..我回了一句.一般人都会加到内存去的.不就是static一个变量么.系统一运行就要调用.肯定静态它啦.
然后我又很喜欢拿人来开玩笑...有个人那天说我.你的体形有点象现在涨价得最厉害的动物.
我又回了一句:你今天在公车的装扮.短裤加雨衣..很象小女孩的恶梦!
他来了一句:玩笑不能退敌.但能伤友!然后天天和人家说我嘴很损.喜欢拿人开玩笑....例如我说他象猥琐老!我差点没死给他看.友个鸟啊.还不是你来搞我先的.引用张冲名言:我操!真想开辆坦克把他压死!我操!
搞得我喜欢那个MM一直对我的嘴有意见.说我说话能不损或者是不夸人么(夸人我好像只夸她啊.).没办法和我沟通!.我现在的嘴在公司是禁用品!
发表于 2008-8-3 23:36:57 | 显示全部楼层
原帖由 yeeku 于 2008-8-3 22:35 发表
现在不要再买我写的spring2.0啦——不要到时又来骂我啦ЯЭ
那个有点过时了,
现在spring2.5已经全面转为支持AspectJ啦。
《轻量级J2EE企业应用实战》第二版会重写Spring部分,重点AOP,AspectJ支持。

刚才还看到“那边 ...


对啊,那个挺搞笑的,还小有名气呢,说书不好又不能指出哪里不好,明显就是那种吃不到的葡萄是酸的的感觉,这就是“高手”了,长见识了啊
 楼主| 发表于 2008-8-3 23:40:45 | 显示全部楼层
原帖由 hammer 于 2008-8-3 23:24 发表
老师.我现在都不敢讲笑话了.现在象这图的人好多..晕.
前几天我要做一个发送邮件的东东.我们那个项目管理的人跑来和我说.你一定要把XX先加载到内存去.说得很有气势...然后还说了一句.你想想我为什么要这样叫你做.我知 ...


老早就说了,国内软件开发业就是这样,
高手很多,但一旦上机写代码就理由很多。

我觉得你这个笑话,其实比你发的有些笑话搞笑多了。
您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

视频、代码、电子书下载
请关注"疯狂图书"公众号
QQ交流1群: 545923995  未满
微信群请扫二维码
QQ交流1群:
545923995
(未满)

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11094030号 )

GMT+8, 2019-5-19 17:38 , Processed in 0.261586 second(s), 7 queries , File On.

快速回复 返回顶部 返回列表