原创: 码农翻身刘欣 9月7日
当我需要学习一门新的技术,如项目中使用到的Drools规则引擎,那么我该如何尽快学习它?由于新技术本来理论也不是很懂,加上自己平常代码敲的少,实践能力也不强,感觉自己学习一门新技术很慢。想从官网入手,但发现自己好像不太会看官网,看的很头疼。这种情况,有什么好的建议吗?
这是来自知识星球“码农翻身”的一个提问,我觉得可能很多人都有类似问题, 我就写了一篇长文回复。
下面所说的是通用方法,基于有足够时间去学习的情况。 我也知道,在一些时间极为紧张的项目中,不会给你时间让你一板一眼地按步骤去学习的,会直接扔到海里去学习游泳,比如直接从第3步开始,这种情况只有看个人的基础、悟性和学习能力了。
1. 建立基本概念
用google 搜索介绍Drools文章,会发现文章很多,此时坚决抛弃那些介绍安装、部署、使用的文章, 因为这些文章在这个阶段只会让人更加糊涂。
理想的文章中应该有这样的例子: 某个系统有一些业务规则,刚开始用代码(例如Java)实现,后来业务规则变化十分频繁,但是系统都上线了,程序员改动的成本巨大。
能不能把业务规则和代码分离开来,可以做到系统上线以后也来修改业务规则? 这样不就十分灵活了吗? 甚至业务人员都可以编写,维护这些业务规则。 程序员的工作量大大减轻。
规则引擎前来拯救!
当然,这一步如果有老司机当面来讲讲就最好了。这里自吹一下,在IBM的时候,我一般会把概念的介绍,把why给新人讲透,减少入门的难度。
ps : 码农翻身微信公众号主要关注这一层面。
- 按照User Guide/Tutorial写例子
最好是选官网的User Guide/Tutorial,好处是完整和准确, 坏处就是纯英文的(对于英文阅读有障碍的同学而言)。
有些优秀的、用心写的博客中的例子也不错, 但是想要找到合适的成本较高。比如:找到一个博客中的例子,跟着做,写着写着就出错,就做不下去了。
特别值得一提的是,有些注重知识积累的公司,自身就积累了很多优秀的教程,让新人跟着学习。
为了写例子练手, 需要搭建环境,如Java 环境,配置XML,安装Eclipse插件等等。
仿照着User Guide/Tutorial做一遍也就差不多了,基本的用法就能掌握,例如Drools中rule是怎么写的, rule中和Java中的data model 是怎么进行交互的?
如果能把自己项目中Drools相关的部分运行起来,当作例子学习更好。 不管如何都要亲手写代码,做一遍。
3. 拓展
经过前两步,基本上就掌握了这个新技术的最小集合。 接下来就是学习相对高级的技巧,能够应对工作的要求。
回到项目中,看看真实项目是如何使用这个技术的, 用到了哪些特殊的、或者你还没有掌握的技术点,主动去搜索,去看Reference , 去问老员工。
拿Drools举例, 可能会需要学习如何通过Web界面来管理规则,rule的存储,工作流等等。
此时你在群里和别人交流的时候,问的问题也比较有质量了,别人至少不会嫌弃你“连安装都不会!”,“这么简单的问题都不懂!”
经过这一步,基本上就可以熟练地工作了。
4. 深入技术原理
很多人到第3步就停止了,对于那些真正喜欢技术的人,会刨根问底, 看看技术背后的原理。
针对Drools来说,需要理解一些理论的东西,例如Rete,ReteOO,PHREAK等算法。
计算机的基础知识经常在此处会发挥作用,如果基础扎实,就会学得很快,否则就慢慢补充吧。
如果说前面几步主要靠网络上的“碎片化”的文章,此时强烈建议去读书了,静心阅读,深入思考,不断地去修炼自己的内功。
5. 输出[可选]
输出就是把自己的所学所得写出来,虽然是可选的,但是强烈建议完成这一步。
很多东西都是自以为理解了,等你给别人讲或者写出来的时候,就会发现其实有不少想当然的假设, 存在知识的盲区。
写作输出是一个总结,是对自己的一次考试: 是否真正地理解了。
学习技术是有加速度的, 比如说老刘多年前写过一个简单的Compliance引擎,也做过工作流相关的项目,如果再去学习Drools这样的规则引擎,很多概念就很容易理解, 我相信我可以迅速地完成第1,2,3步,展现出来的效果就是在工作中迅速上手了。
(完)
欢迎加入我的知识星球“码农翻身”,一起学习进步。