天天看點

一點學習感想

看部落格,讀書,看一些技術分析和源碼,自己慢慢也有了一點對技術的感想,這裡簡單總結下,有點亂,不過還是記錄下來吧!

 1.  一張紙折疊51次多厚,51張紙堆一起多厚?是以學習要有條理,聯系,會思考不同技術間的聯系,通性,形成自己的一套技術體系,技術藍圖,學習什麼,學習到什麼程度,要學習的技術工具在你的技術藍圖上是什麼位置的,起什麼作用,這些思考相當重要,也決定了你的學習效率,深度,如果自己的學習線路不是有規劃的,或者完全是工作需要什麼再學什麼,互相間的聯系思考很少,那就是類似于直接的把51張紙簡單的堆在一起,學習研究了再多的技術,架構,工具其産生的最後成果可能比别人要小得多.

2.  這種聯系性思維也不是一開始工作就能形成的,首先是必須要有對技術的熱情和持續學習的意志力,這是前提,然後就是對于如何學習,學習的效率,學習形成的廣度和深度如何去拓展的問題.剛開始工作時,一般都沒太多的經驗,對整個技術圈的了解也不深,是以開始有點盲目學習是非常正常的,除非有個大拿幫你指點你如何學習,一步一步的教,不過這種不切實際,首先沒有誰會有這麼足夠的時間先去了解你已有的技術程度,還有你自己真正喜好特長等,去給你指定什麼學習規劃,而且他人的有效經驗也不一定就對你完全适用,最多給一些通用的建議,最終還是要靠自己去探索,思考-學習-總結-思考…,持續的,有耐心的形成自己的一套對技術的了解體系.

3.  拿我自己的學習經曆來說,剛開始工作時,就探索Spring,不為什麼,大家都在研究,而且好評不斷,是以就去學他,一開始簡單看了兩本書,工作上也有應用,之後就花拉好幾個月去讀代碼,的确有一點用,可是半年之後,我想回憶我讀Spring的意義時,我想不出來任何東西,很是懊惱,後續還去讀了picocontainer, jdon等相關的IOC架構的實作,自己還實作了簡單的IOC小架構,再之後想想,其實我一直要抓取的就是IOC的思想及其的一些實作,學習這些架構,讀源碼花了很長的時間,從最終結果來看是有了想要的成果,可是從效率,時間成本上看,是失敗的.現有的技術架構,工具多如牛毛,如果每個都想去學,根本不可能有那樣的時間精力,也完全沒有必要,是以形成套自己的技術藍圖,然後在這樣的技術藍圖下,看哪些技術隻要了解就好,哪些是要去實踐實踐的,哪些需要深入研究其具體實作原理的,都要有不同層次的學習要求的.

4.  再舉例子,之前學習動态代理,其實是從學Spring裡開始的,後來發現ORM(如hibernate)裡的延遲加載,junit的mock實作等都是使用動态代理,而這項技術項目中也着實使用了其功能,如計算某個方法的耗時情況等,當時就覺得某項技術對他的了解能融會貫通到好幾處不同架構的使用上,這樣的學習了解才是非常有效率的.其實就是學習要舉一反三,發散思考,衍生出去.另例,設計模式大家都會去學習,進而使用,我在學習設計模式好長一段時間,看了好幾本設計模式相關的書并有一定的相應實踐後,對設計模式有了一定的深入了解.不過,随後我的思考是,在學習設計模式去尋找資料書籍時,幾本上都是JAVA或C++, C#之類的實作版本.同時,在一些技術論壇上也提到象Ruby之類的動态語言,有人說Ruby語言文法本身就實作二十種多有的設計模式的功能,是面向對象語言C++, C#等語言本身的靜态特性等倒置語言本身無法支援的一些動态特性,使得我們要通過一些設計模式去解決一些常見的問題.随之之後的是Ruby的發放光彩,而JAVA7也投票是否要加入閉包等動态特性以提高開發效率等,這些一系列的思考和現狀,使得我不能不去學習Ruby類的動态語言及函數式語言如Lisp等,以解開我的疑問,JAVA語言到底缺少什麼,動态特性的優勢是什麼,我不僅僅是通過網上搜到的大家列舉的動态語言或函數式語言的一些相對優勢,是要自己去實踐看看其到底能帶給我什麼,是以我開始學習Lisp和Ruby

總體來說,持續學習,多看部落格(有可能自己寫部落格),多與其他人交流,然後就是要多思考,盡量要有規劃有聯系的去衍生學習,深入學習.