初入职场的“菜鸟”,怎么攻克一门看起来很难的技术?

当我需要学习一门新的技术,如项目中使用到的Drools规则引擎,那么我该如何尽快学习它?由于新技术本来理论也不是很懂,加上自己平常代码敲的少,实践能力也不强,感觉自己学习一门新技术很慢。想从官网入手,但发现自己好像不太会看官网,看的很头疼。这种情况,有什么好的建议吗?


这是来自知识星球“码农翻身”的一个提问,我觉得可能很多人都有类似问题, 我就写了一篇长文回复。

下面所说的是通用方法,基于有足够时间去学习的情况。 我也知道,在一些时间极为紧张的项目中,不会给你时间让你一板一眼地按步骤去学习的,会直接扔到海里去学习游泳,比如直接从第3步开始,这种情况只有看个人的基础、悟性和学习能力了。


1. 建立基本概念


用google 搜索介绍Drools文章,会发现文章很多,此时坚决抛弃那些介绍安装、部署、使用的文章, 因为这些文章在这个阶段只会让人更加糊涂。

理想的文章中应该有这样的例子: 某个系统有一些业务规则,刚开始用代码(例如Java)实现,后来业务规则变化十分频繁,但是系统都上线了,程序员改动的成本巨大。

能不能把业务规则和代码分离开来,可以做到系统上线以后也来修改业务规则? 这样不就十分灵活了吗? 甚至业务人员都可以编写,维护这些业务规则。 程序员的工作量大大减轻。

规则引擎前来拯救!

当然,这一步如果有老司机当面来讲讲就最好了。这里自吹一下,在IBM的时候,我一般会把概念的介绍,把why给新人讲透,减少入门的难度。

ps : 码农翻身微信公众号主要关注这一层面。


2. 按照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. 输出[可选]


输出就是把自己的所学所得写出来,虽然是可选的,但是强烈建议完成这一步。

很多东西都是自以为理解了,等你给别人讲或者写出来的时候,就会发现其实有不少想当然的假设, 存在知识的盲区。

写作输出是一个总结,是对自己的一次考试: 是否真正地理解了。


分享到:


相關文章: