前不久,一個技術 party 上有人問我:「我學習 Rails 已經2個月了,但仍是對整個開發流程缺少清晰的瞭解,我應該怎麼學呢?」這不是個別現象,在 ruby-china.org 上也常常有人發帖,說本身學習了 1個月、2個月、半年了,仍是不太清楚 Rails 的不少細節,不知道應該怎麼學。前端
看到這樣的提問,我第一反應是他/她們對本身的要求是否是過高了?程序員
我從沒有什麼 Web 基礎開始直接學 Rails 框架,到找到一份 Ruby 程序員的工做用了2年半。此後在正職工做上編程1年半,自由職業編程9個月。如今我考慮開發什麼的時間已經比要怎麼開發多了,這個過程用了4年半。編程
若是平均天天有效利用時間是3小時,至今已經接近了5000小時的量,按照10000小時到專家的理論,我還有另外一個4年半要學習,我感受這個估算仍是比較準確的。ruby
我固然不是隻學習一個工具,同時也學習前端、UI 設計、運維……但不會前3年學開發,後3年學設計分得這麼清楚。有時我又會看看跟已有知識徹底重合的工具,好比 Python 和 Nodejs,以避免錯過什麼。總的來講,到如今的程度用了4年半,以爲本身學得慢的朋友,能夠以此做爲參照。框架
大學畢業之後最讓我失望的一件事,就是發現本身不是天才。我身上沒有特殊才能,跟大部分人同樣,這多麼令我沮喪!運維
世界上確實有些天才,像是 26 歲得到 Best Hacker 稱號而後去開賽車,或是 21 歲環遊世界同時成爲 O'Reilly 的做者。而我只能坐在小房間裏面作一些不知道有沒有人須要的軟件,看來「奇蹟」是不會發生在我身上的了。工具
我常常犯低級錯誤,例如花一個下午發現一個拼寫錯誤引發的 bug,或者花一兩天時間搞明白一個問題,興奮事後又沮喪,爲何花了這麼多時間在這些淺顯的問題上。學習
那麼,既然我不是天才,就不要用天才標準要求本身了。花多少時間都好,解決一個問題就是一個收穫。再也不只看着那些天才,而是把昨天的本身做爲競爭對手,今天比昨天有進步,那麼這一天就是有意義的。笨人有笨辦法,一步一個腳印往上爬。spa
能解決問題不是由於天資聰穎,而是由於已經花時間實踐過了。若是有什麼問題還解決不了,那是由於實踐得還不夠。.net
萬事開頭難,對於技能學習也適用。起步的時候,不懂的地方太多,每解決一個問題都會引出不少新問題。隨着知識面的增大,接觸到的新知識也會隨之增多,你會感受本身永遠學不完。
但隨着知識積累的增多,吸取知識的速度也會加快,你會逐漸成爲「花一個下午看文檔瞭解基本用法」俱樂部的一員。這不須要什麼魔法,你只要遇到一個問題,解決一個問題,效率天然會提高。我如今每半年學到的新知識的價值都等於過去學到的知識價值總和。
因此在入門階段感到焦慮時,請從容的接受它,而且堅持下去,每一個人都有這個階段。若是你以前已經有一、2年的編程經驗仍是感到焦慮,那是由於以前的視野過小,如今就是踏入新天地的好時機,不要原地踏步。
當你拿出幾個月前的代碼,發現本身寫得超爛的時候,那麼恭喜你,你進步了!
課時觀念在真實世界不適用,在學校裏之因此能夠一個學期學習好幾門課,是由於只須要學到應付考試的程度,這種知識是不可靠的。真正掌握一項技能,須要長時間的實踐,或者說,須要終生學習。
沒有人告訴你要走什麼路線,何時前進,何時中止,一切都取決於你本身,志向決定高度。但也正是這麼多的未知和可能性,產生了這麼多的樂趣。