初入職場的“菜鳥”,怎麼攻克一門看起來很難的技術?

當我需要學習一門新的技術,如項目中使用到的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. 輸出[可選]


輸出就是把自己的所學所得寫出來,雖然是可選的,但是強烈建議完成這一步。

很多東西都是自以為理解了,等你給別人講或者寫出來的時候,就會發現其實有不少想當然的假設, 存在知識的盲區。

寫作輸出是一個總結,是對自己的一次考試: 是否真正地理解了。


分享到:


相關文章: