【轉】關於編程,你的練習是不是有效的?
對於我來說,提升技能的項目會有四種:
- 純興趣驅動的項目。即我的Idea列表上的一個個酷炫的項目,先滿足自己再說。
- 理論驅動的項目。這一類的項目會比較少,因為我們需要牽強地驅動出這樣的項目,然後以理論的方式驅動它。
- 興趣結合理論型。有一個長長的Idea列表,難免有些時間會和將要學習的理論有很大的交集。這種的練習效果是最好的。
- 整合成文章、電子書。這一步主要是為了分享、鞏固知識點、討論。
簡單地來說,就是:
- 刻意的理論練習
- 興趣實踐
兩種不同的走向,上面的第三點和第四點,算是獲得一些更好的效果。開始之前,讓我們再次討論一下情緒周期的問題。
編程與情緒周期
如果你每天都有很多可支配的自由時間時,你也會觀察出情緒周期這件事。
所謂“情緒周期”,是指一個人的情緒高潮和低潮的交替過程所經歷的時間。
這種周期看上去就好像是一圖所示,但是總體上好像會長一點。
這一點在我的GitHub上看起來就有點明顯了,至少它是一年的一個周期:
對於我來說,我會交替寫代碼和寫博客、電子書。因為它以一定的規律在叠代著:
- 適合寫大量代碼的日子
- 適合學習理論的日子
- 適合玩遊戲《文明》、看電影、睡覺的日子。一般來說,這種事件的出現天數比較少。
主要還是集中在前兩點上,代碼練習與理論學習。
練習與計劃
持續性
對於練習來說,需要保持相當高的持續性。很明顯的一點是,參考我的GitHub的連擊。對於我的連擊來說,主要有下面的兩個意圖
- 裝逼
- 驅使不斷自己練習
如果有一個很好的動機來驅動自己去練習編程,那麽GitHub的連擊就是一個很好的入口。當然,GitHub已經不再顯示連擊多少天了。
在我們達到所謂的10000小時之前,我們還需要這麽久:
這只算上了工作上的時間,如果我們還有一半的時間也在練習上面,那麽就會縮短為2.4年?
答案是:不可能!
懷孕需要10 個月,但是顯然即使10 個人同時努力,也不能在一個月內生下孩子。
為了保證更好的練習效果,我們需要在每次短暫的時候之後,休息一段時間。為了實現這個我們可以用兩種方式:
- 多喝水。無論是學習還是工作,喝水總是有利於大腦思考,還有利於你多上廁所。多走動,可以防止你有各種職業病。
- 采用所謂的番茄工作法——可以找個借口讓自己休息。
不斷地休息,才能讓下一個練習走得更往,這樣才能保證好的練習效果。
練習之前,你需要知道三件事
- 練習要有計劃才會有效果的!
- 練習要有計劃才會有效果的!
- 練習要有計劃才會有效果的!
對於不同的類型來說,你需要不同的練習計劃。
編程:使用新技術、新思想
在練習編碼的過程中,使用一些新的技術和新的編程思想可以幫助我們走出舒適區。當然如果你要在項目上用上新技術的時候,你也會采取相似的練習來做這樣的事。而這也是大部分人嘗試新技術的開始,如在每個新的編程語言的入門手冊上,他們都會來一個經典的:
然後我們就會做一些類似的項目來快速上手這個語言,如以前我們用Java實現了一個Blog系統,我們就可以用Node.js實現一個Blog系統。同樣的,我們也很容易將其應用到不同的語言環境中。
假定,你在A項目上使用了Java語言,而你們的新項目使用了是類似於A的業務,那麽你就可以采用新技術或者思想來實現。
理論:練習和總結
理論本身有可能很難理解,從而很難應用。因此,在學習理論的最好方式還是應用,而要構建一個好的場景並不是一件容易的事。
我們需要不斷地探索過別人實踐過的一些例子,模仿一些相似的用法,然後創建自己的類似的項目。同樣的,我們還是可以基於我們以前實踐過的項目,在那之上做一些改進來學習理論知識。
理論還有一點比較麻煩的是,記住它。在我們練習了很多之後,我們可能很快地就忘記它了。因此,你需要筆記或者博客來做這樣的事。
不過,我還是覺得博客比私有化的筆記會有一點,好的東西應該分享出來。既然你都已經保存了,那說明它很重要。既然它對你很重要,那麽它也對別人很重要,要不你怎麽會保存呢?
最好是能寫一些文章來發現自己了解了多少,如果是一系列的理論,那麽就可以整理成電子書了。
【轉】關於編程,你的練習是不是有效的?