這個問題也是 Frequently Asked Question。大概會發生在學 Rails 半年或一年後的 Developer 身上。我會推薦兩個解法:
1. 找一個願意「罵你」的導師給你方向
注意,我這裡講的是「罵你」不是教你。出社會大家都是成人了,沒有人有義務「教你」,公司是上班賺錢的地方不是學校。有前輩願意「提醒」你的成果需要修正其實已經要心存感謝了(如果你工作年資只有一年,可能無法體會。工作到第二三年就知道這是什麼意思了)。
不要抱怨前輩都「不教」,人家願意「罵你」已經是願意花時間提醒你做不好的部分修正。如果人家默默的都不講話放你去跳坑,你可能已經被同事打報告建議上司開除了。
找到一個願意「罵你」的前輩,可以讓你學習的速度加快不少。畢竟學習最困難的天險是「你不知道自己不知道哪裡不行」。
2. 自行修煉
我實在不推薦這樣的做法,因為自行修煉需要很強大的動力與學習動機,否則進度非常的緩慢。被人鞭策、有專案壓力,永遠是最強的助力。
有幾個方向推薦你去嘗試:
1. Refactor
裝 Codeclimate 和 Hound 這一類的程式,這些程式會告訴你,你開發的程式結構有多糟。
通常問題會有 fat class, duplicate code, vague variable, 違反 SRP, etc ....
把這些部分修掉,你的 Ruby 或 Rails 功力將會提升一大截。因為要做到這些事,你先得學一些「正確的 Ruby 與 OOP 封裝觀念」。再來就是會開始接觸到 Pattern 的寫作方式
推薦閱讀資料:
2. 學寫簡單的 Test
因為要 Refactor,所以程式一定會被改到爆炸。我不建議新手一開始就花時間學「用正確的方式 Test」或者學 「TDD」(資料太多根本看不完)。而應該學,如何先改東西前,先補 Test,build test case。
然後邊改邊跑 Test。確保你改的東西不會改爛舊的功能。當你發現 Test 很難補上去,那一定表示當初程式封裝的很爛,無法補 Test。
這時候就能學到怎樣做好的「封裝」,接下來才是學寫「正確的 Test」。
推薦閱讀資料:
3. Tune 效能
很多人的 Rails 網站大了一點會有效能問題。相信我,Rails 已經夠成熟了。大部份人的網站慢的原因 95% 以上是 Rails Developer 因為 Rails 寫太爽,結果 DB, Frontend 知識缺乏。
(後端部分)
因為 Rails 的 ORM 太強力,很多人把 Rails 當 Ruby 在寫,所以忽略了有記憶體膨脹以及 DB query 數量的問題。
這時候裝 NewReclic 或 mini_profiler 可以抓出效能問題。然後再回去讀一些 MySQL 的 JOIN 與 Index 與 db 正規化基本觀念。就可以學到很多 Tune 效能的心得。
(前端部分)
用 Yslow 掃一下,根據 Yslow 的建議改。
( Cache 部分)
Rails 有很強大的 Cache 教學,針對特慢但 tune 無可 tune 的部分上 Cache。這時候開發者就會開始關心架構上怎樣設計的很好上 Cache。用比較好的方式節省資源
4. 整理 View
View....大家都把 View 當垃圾桶。
我推薦一個技巧:限制一個 View 只能兩頁 SublimeText 2 的編輯器長度,以這個原則去用 Helper / Partial 整理,在當中會學到超多技巧。
5. 打包 Gem
在過往開發過的程式,一定會有重要的自己寫的流程或者是 Library,試著抽出來打包成 Rails Gem opensource 出來。打包的過程可以學習到 Rails 「這個 Framework」的架構與啟動流程。
最後 : 寫部落格或到聚會上發表演講
上述講的都只是個人練習部分。真的要把這些變成自己的能力,把這些心得寫下來教給其他人,或者到聚會上發表短講。
一個人越藏私,進步的越慢。(我沒有在開玩笑)
唯有將一門技術說得通,教得會別人,這東西才真的變成你的知識與資產。
歡迎大家留言繼續問我 Rails 相關的問題。
另外初級 Rails 工作的問題,請直接造訪 Land Dream Rails Job。