技術人員在選擇技術方向投入時,看清楚一種技術可以取得的成長很是重要。 ====== 使用抽象 ====== 微軟的技術中有不少好東西,可是它也有大量爲了吸引初級程序員而推出的技術,這類技術的本質就是作高層次封裝,讓特定場景的開發變得極其「簡單」/「快速」。 學習相似這樣技術的時候,必須保持清醒,明確瞭解這些技術實際上僅是在作「抽象」/「封裝」,把更多注意力放在它們如何作封裝的,封裝背後的真正技術是什麼上。 若是僅僅是去了解怎麼用這些封裝,用來「搞定」項目就算數,以這樣的態度作技術,則很難會有進步;也特別容易被淘汰。由於學習的,僅僅是別人封裝(並且是很高層次的封裝)過的東西;而封裝的方式時刻都在變,這也就是所謂的「技術更新很快」。 WebForm / WinForm / AJAX.Net等都是如此。在學使用別人封裝過的東西時,若是沒有學到一些相對「本質」的東西,「知識」的有效性/價值是很是低的。 作技術,須要掌握的是更加「本質」的東西,修煉「內力」;在擺好招式,耍好眼前的刀的**前提**下。 ====== 提供抽象 ====== 而具體在開發上,咱們一直須要面臨的是如何作「重構」,作封裝,作抽象。 小到一個功能,一個函數,要作怎樣的封裝,要保留怎樣的接口;都是能夠琢磨的。 怎麼琢磨,怎麼作才更好?就我我的的經驗,不是在作以前去作深刻思考;而是快速的去實現一個感受可行的版本,而後根據實踐結果,作反覆/屢次的修改。 快速的實現,反覆的修改。 一個底層庫要怎麼設計,先根據如今的能力出一個版本,讓你們去用,讓本身去用,根據反饋,根據自身體驗,**持續**的出新版本。 這裏最重要的是後者,持續的改進;若是快速實現了一個爛爛的版本,再也不改進,那還不如不要實現。 反覆的根據回饋精益求精的作修改,不能「一次搞定」,表面上看很浪費時間,但倒是學習提升的最快方式。 更加準確的說,是技術人員在實際工做中提升的最快方式;若是是學生,慢慢的去看書,讀大師的著做,那是理想。