如何學習不感興趣但自己也認為很重要的東西?

舉個例子,在軟體編程中,演算法和數據結構很重要,機器學習和數據挖掘中用到的數學知識也很重要,個人希望成為軟體開發方面的大牛,熟練掌握各種演算法。但在實際學習中感覺記憶和理解這些演算法十分困難,尤其是各種數學知識,是努力不夠還是天分問題?我該放棄還是堅持?


實在不行的話,至少你可以把這些演算法在什麼時候好,什麼時候不好,什麼時候有用,什麼時候完全沒有用,什麼時候會出現瑕疵,一般結果不好都是因為什麼等【特徵】背誦下來。反正這些流行的演算法都有人實現過。所以這樣做,至少你遇到了實際的問題,你知道用什麼演算法好,然後把它搞過來用,這也不是不可以。


覺得輪子哥說得很有道理,僅就自身經驗補充幾點:

1、不一定是天分不夠,很可能是基礎不夠。比如機器學習涉及到線性代數、凸優化、微積分等知識,也許你還沒有學過這些先序課程,看起書來自然就累。如果是這種情況,我覺得你不能懷揣著速成的想法,應該循序漸進,登堂入室。

2、有些複雜的演算法確實需要一定的智力支持,如果你感覺到不存在先序課程知識的缺失,只是因為邏輯複雜而難以理解,那麼有兩種情況。第一,是教材表述有問題,建議換教材,或者去網上搜索關於這個演算法的其他資料,比如維基百科或者各個大牛寫的博客,圖文並茂,邏輯清楚,很多時候更適合入門;第二,有些高深的演算法看不懂可能確實是天分問題,但也不要沮喪,這隻能說明你不是天才而已。每個人的能力都有天花板,正視自己的局限,把精力放到自己擅長的事情上才是明智的。認真、勤勉並有明確目標,相信你會成為一個優秀的、值得尊敬的開發者!


你可以先來簡化版,記住適用場景就好了,腦中沒事多想想問題,不一定要寫出來,比如你知道hash是o1,set各操作是啥樣,紅黑樹用來實現排序結構等等等等。

你只要能做到見到問題給出演算法解就行,這樣第一步就成了。

第一步做好了即使你不會寫,反正也會挑選該用的庫了,據我觀察大部分人連挑選該用的庫和演算法都做不到。

第二步多寫點程序就熟練好了,做完後你應該能理解各個數據結構和演算法的原理。不過熟練也是暫時的,我大學後沒練過演算法,前段時間寫一個堆磕磕絆絆10分鐘才寫出來,因為堆不常用嘛,久了會忘細節也正常,但原理是不會忘記的。

第三步你需要看書,以後再說。


還是沒把你逼到絕路上,不然就不會發愁怎麼哄著自己學習了。


也許等你能把它做好了,興趣也就有了


用番茄工作法吧,把一個鐘的時長設定在可以接受的範圍內,比如是25分鐘,開始學習之前告訴自己,我堅持這25分鐘就好,然後休息,然後量力再繼續一個番茄鍾。如此以往,你什麼時候慢慢喜歡上所學的東西都說不定。


學習不好想學可又不知咋學


每次學習完了之後給一個自己喜歡的獎勵(吃一頓或者喝一頓啥的),利用這種替代強化的方式能夠完成一定時間內的學習任務。

如果在模式倦怠之前你喜歡上了,那就轉化為內因激勵,可長期持續下去。如果失敗,那就沒轍了。


做一個任務,需要用到這些知識,就會學習了。


對於這種不感興趣卻很重要的內容進行學習,過程是很枯燥的,我的辦法是每天學一點,夾雜在自己喜歡的事情中間去做。就像健身一樣(其實我挺懶的,健身對我來說很難執行),看小說看累了,去鍛煉一下感覺也不是那麼不可忍受。


coding先做起來再說了,找到感覺後再玩演算法。


推薦閱讀:

求問做美國數學建模要做哪些準備?
數學建模在遊戲數值策劃工作中的有哪些應用?
數學建模的模型指的是什麼?
數學建模?

TAG:學習 | 演算法 | 學習方法 | 數學建模 | 學習經驗 |