關於學習問題,一千個人有一千個答案。我無法保證想法適合所有人,但這是我真實體會與經歷,希望提供參考。我也嚴正聲明:我也是學習者,持續追求中,這裡只是交流,非說教。
恭喜進入「艱難困苦與其樂無窮並存」的行業。想速成、發財是難以實現的夢想。Bill Gates、李彥宏難以複製。做好長期艱苦準備是必須的。身邊朋友包括我自己都經歷過這過程,累並快樂著。如此辛苦、無立竿見影「錢」途,唯有堅持與興趣能支撐發展。這是最重要的一條。
兩年前我同樣陷入追求技巧、應用、抄襲的自我陶醉。當將精力投入基礎與本質研究,發現別樣天地。再花哨的應用、絕妙技巧,都架構在技術基礎上。沒有對本質的深刻理解,談何進一步。
堅持、不放棄枯燥,從基礎踏實學習,必有突破。 這突破有量變質飛躍。以 .NET 為例,必備基礎包括:
可從《你必須知道的.NET》目錄大致了解。推薦基礎書籍:
書不在多,有仙則靈。以上幾本足打好基礎。
不管業界如何詬病 OO,大牛如何不屑,那是他們的事。但凡從專案、產品厮殺出來的高手,都理解 OO 的強大。OO 也是軟體技術必要基礎、修煉基本功。但 OO 修煉遠比 .NET 基礎難,像悟道一樣。很少有人能完全在 OO 面前說徹悟,但因重要,必須找東西摩拳擦掌——始終如一的修煉,打好持久戰。
推薦經典:
有好書仍不夠,要繼續走王陽明「格物」老路:看經典框架、寫熟練代碼。偶像曾語重心長說:做軟體不寫上千萬行代碼,根本沒感覺。按此標準,我還只是小學生。廢話少說,去格物吧。
OO 世界的「物」大致包括:類別、物件、屬性、方法、欄位;封裝、繼承、多態、介面;設計原則(單一職責、開放封閉、依賴倒置、里氏替換、介面隔離);23 種設計模式;分層思想、模組化、AOP、SOA、ORM…… 這些互相關聯、互為補充,修煉並不孤單。
.NET 技術應用範疇誇張(GDI、ASP.NET、WCF、Mobile、ADO.NET、XML WebService…)。不可能了解全部,因此必須選擇與捨得——選擇有方向,捨得有興趣。CLR 永遠是 .NET 技術的心臟。透過表面傾聽心臟聲音,順著血管脈絡了解框架,才能明白機制玄機。別只盯著蛋糕掉了禮物。打好基礎,從 CLR 底層機制與 FCL 開始,逐漸追求技術選擇。善於分辨,不盲從。找準方向並堅持,難能可貴。眼光是關鍵。
不多說,推薦的值得花功夫。經典是好起點。我會在部落格持續推薦更好專著。
看似無足輕重,但軟體是可持續資源。對己對人遵守規則,有職業道德。良好編程習慣是良好學習習慣開始。看著自己的代碼像藝術般優雅,怎一個「爽」字了得。推薦:Krzysztof Cwalina, Brad Abrams - .NET 設計規範。
具體方法因人而異,我不主張學習他人方法,因為人性難以複製。可模仿技藝,但無法刻畫靈魂。懂得了解自己的人是真正智者,挖掘自身潛力永遠是課題。尋找行之有效方法很重要,但不要模仿,只有創新才能成功。沒有方法就是好方法,苦練多看,永不過時。
有幸遇德高望重、樂於奉獻的師長是人生幸運,但概率極小。答案是互聯網:Google、Baidu、MSDN、博客園、《.NET 禪意花園》。
好東西多被老外佔據。中文社群師夷長技以制夷,但英文是必經攔路虎。務實下手,推薦技術英文網站與大牛部落格,一箭雙雕:
上述 1+7 條,是一些並非經驗的經驗,誰都知道,但不是誰都能做到。累並快樂著,永遠是這行業、這群人的主旋律。在技術面前,我嫣然一笑,發現自己其實很專注,這就夠了。希望更多人少走我曾經曲折彎路,那條路上實在是幸福與心酸一股腦兒毀了一段青春。