對自己狠一點,開始寫作吧
我時常會有這樣的感覺: 自己心裡覺得對一個技術點已經掌握了, 但是當我試圖給別人講述的時候,發現並不能輕鬆自如、深入淺出地講出來。
這就說明了一個問題: 自認為掌握了,其實並沒有真正地掌握, 大腦只是對這個技術建立了一個整體的概念,在一些細節處做了想當然的假設,等到你用語言再來表達的時候發現,哦, 原來這個假設並不完全成立,是有問題的。
在學習吸收率金字塔中, 「轉教別人(Teach others)」屬於主動學習, 效率是最高的。 但是在工作和生活當中, 你是很少有機會去給別人講授的。
那怎麼辦? 總不能拉著你正忙著的同事說: 哥們, 來, 我剛學了CQRS,我給你講講吧。
也許你的同事很有禮貌, 耐著性子聽你磕磕碰碰地講完了,然後不知所云, 前幾次還行,次數多了,就對你敬而遠之。
既然沒法給別人講,那就退而求其次吧, 把自己的理解寫出來。
當然不是泛泛地記流水賬,或者把幾個孤立的點羅列在那裡, 而是要把思路理清楚, 尤其是要寫出為什麼要有這個技術?這個技術解決了什麼問題,然後才是這個技術是怎麼使用的。
當你逼著自己去回答這些問題的時候,很快就會發現,自己的理解還不夠,還需要查找更多的資料。
在你通過google找資料的時候, 你會發現,哎呀,網上的這些文章怎麼這麼差勁,重複的內容這麼多, 大部分都是複製、粘貼。大部分都是在講述怎麼使用, 對於「為什麼」 從來都是隻字不提,或者猶抱琵琶半遮面, 羞羞答答的不說出來。
這個整理資料和思考的過程是很珍貴的, 這樣才能把信息變成你自身的知識。
如果實在搞不定,就帶著問題去論壇提問,去QQ群發言,找大牛請教, 總是可以解決的。
舉個例子,你接觸到了一個新的知識點: Java 動態代理。
你也看了書或視頻中的代碼,知道了這個技術是怎麼使用的,接下來想要寫篇文章, 首先要努力闡明的問題就是「為什麼要用Java 動態代理」? 這玩意兒到底要幹嘛? 我已經知道了它能夠對一個類進行增強, 還是在運行時做的增強, 但是增強一個類有什麼用處?
我完全可以新寫一個類對原有的類做增強啊? 為什麼要在運行時做呢?
如果你順著這個思路挖掘下去,會在通道的盡頭找到一個寶貝: AOP。
具體到技術層面,還有一個問題, 就是為什麼Java 動態代理只能對interface進行操作? 不能對class進行操作? 這個問題如果也深挖下去, 你會發現另外一個寶貝: 動態位元組碼的生成。
繼續深挖就能看到ASM, CGLib這樣的東西, 看到他們怎麼在內存中操作class文件的位元組碼, 位元組碼的格式是什麼樣子的? 只好去看看Java虛擬機了。
到了最後,你也許會體會到, 奧, 原來Java是一門靜態語言, 在運行時不能對現有的方法邏輯進行修改,不能新添加方法, 所以得用別的手段,如ASM, 動態代理等創建一個新類來做點「額外的」事情。
趕緊寫一篇文章吧,把挖掘的結果記錄下來,別人只是學會了什麼Java 動態代理,這只是冰山的一角, 而你則看到了整個冰山。
有人可能要問了: 我也可以按照這個思路去學習,為什麼要寫下來呢? 原因很簡單,不寫出來,很容易放棄深度思考。你會覺得,哎呀我已經知道怎麼回事了 -- 其實一些關鍵的細節被大腦給忽略了。
我們已經進入了一個碎片化的時代, 我們的大腦已經養成了碎片化的習慣,一天不看碎片化的信息就覺得不舒服, 這樣下去會慢慢地喪失深度思考的能力。
寫作會逼著你去思考,梳理知識體系,防止自己被碎片給填滿。
其實很多人都知道寫作是一件很好的事情, 就是犯懶,執行不下去。 還是行動起來吧! 逼自己一把,對自己狠一點 ! 有自制力的人, 能夠堅持的人才更有可能成功!
ps : 寫出了好文章, 歡迎向老劉投稿啊。
TAG:碼農翻身 |