這篇文章, 我想和大家分享一些我學習生涯中的一些體會, 其中一項, 就是技術要拿得起, 更要放得下.
回想數年前, 我也曾經在C++虛擬繼承類的object memory layout研究過程中激動過. 也為了實踐不同的COM Apartment Model寫過多種測試程式. 當然, 也為了到底是學Java還是.NET躊躇過. 也在論壇上為了牛角尖問題和人家打過口水仗, 也拿自己用彙編寫的程式炫耀過. 也懷疑過演算法到底對實際工作有多大協助, 也沉迷於論壇上回答問題賺的專家分.
學習的路上也吃了不少虧. 曾經花了幾百大洋買MFC的中文類庫大全, 其實就是個MSDN的翻譯. 買過粗製濫造的技術書, 以至於學到最後還以為Java和Javascript就是一個東西. 曾經看到OpenGL很火而研究了數周, 最後還是不得其門. 還買過UML的幾本教程, 最後覺得不如買草紙.
當然, 學習過程中的快樂也沒漏. 拿到C++物件模型, C++專家編程時候如獲珍寶的感覺. 用巧妙方法寫出撞球遊戲外掛的自豪, 通殺論壇上所有問題的淋漓感覺......
看現在手頭的工作, 以前"研究"的技術好像一個都用不上. 別說虛擬繼承, C++的工程都不知道怎麼建了. Javascript也是每次都去google找現成代碼. 平時雖說用C#寫寫代碼, 但是class的繼承關係, 基本不超過3層. ASP.NET也就還記得.NET 1.1上的東西, 從master page的概念出來後就基本一無所知. WPF也只會搭一個hello world做一下基本的測試, 更不用說Silverlight了. ORM, 架構, 各種模式等, 更是雲裡霧裡.
有朋友感歎, 技術發展太快, 跟不上. 環境太浮躁, 很難踏實和深入. 其實, 翻開cnblogs上的一片片文章, 我看到的大多是新名詞, 但是我並不覺得技術發展太快, 或者環境浮躁之類有什麼好或者不好. 因為技術, 最後都要放下的.
不知道大家有沒有裝電腦的經曆. 回想當年中學, 當紅CPU, 記憶體, 硬碟, 顯卡的型號,參數,大致價格都可以背下來. 怎麼裝系統, 怎麼備份系統, 怎麼快速還原, 怎麼做細節上的安裝最佳化, 都是要多套方案. 隨身的啟動磁碟片, 上面的工具隨時保持更新. 但是到了後來, 都是到了要買電腦的時候, 才去往上看一圈, 其實也八九不離十.
我感受到的技術要放下, 就是一樣的道理. 雖說跟不上新名詞, 新技術, 但是對於新東西, 思考方法已經和以前大不同了. 以前想到的就是怎麼做一個例子程式, 研究不同的提示, 關心誰有多瞭解了一些內幕技術, 糾結於各種評論和技術比較. 但是現在, 想到的是這個技術解決了什麼問題, 和以往技術比有什麼優勢, 局限又在什麼地方, 是否適合自己手頭的工作. 瞭解清楚後, 就沒有興趣再深入了. 等到有一天, 遇上一個具體的問題, 感覺現在應該有對應的解決方案了吧, 然後再回憶一下, 去網上找一圈, 然後再開始深入學習. 後來發現, 原來技術都大同小異, 只要不是科學問題, 工程師的技術都是可以隨意拿起, 再隨意放下的.
凡是能從書本上學到的技術, 我都放下了. 你呢?