原文做者:anytao—王濤html
他的著做:《你必須知道的.Net》編程
關於這個問題,也有很多剛剛入行的朋友向我問起。我想可能一千我的就有一千個答案,我不能保證本身的想法適合於全部的人,可是這確實是我本身的體會和經歷,但願能給你一些參考的價值。同時,我也嚴正的聲明,我也是個學習者,也在不斷的追求,因此這裏的體會只是交流,並不是說教。c#
做爲同行,首先恭喜你進入了一個艱難困苦和其樂無窮並存的行業,這是軟件的現狀,也是軟件的將來。若是你想迅速成功,或者發家致富,顯然是個難以實現的夢想。老Bill和李彥宏在這個行業是難以複製的,因此作好長期堅苦卓絕的準備是必須的。至少,我身邊的朋友,包括我本身都是經歷了這個過程,並且依然在這個過程當中,累並快樂着。因此,如此辛苦,又沒有立竿見影的「錢」途,想要在這個領域有所發展,只能靠堅持和興趣了。兩者缺一不可,對於剛剛畢業的你來講,這個準備是必須有的。這是個人第一個體會,可能比較虛,可是這個在我看來倒是最重要的一條。設計模式
第一條很關鍵,可是除了在思想上作好準備,還有應該就是你關心的如何下手這個問題了?從本身的感受來講,我以爲比較重要的因素主要包括:架構
其實早在兩年前,我也存在一樣的疑惑,不少的精力和時間花費在了追求技術技巧、技術應用和技術抄襲的自我陶醉狀態。歷數過去的種種光輝歷程,不少寶貴的人生都花在交學費的道路上了。因此,當我把所有的精力投入到基礎和本質研究的課題上時,居然發現了別樣的天地。原來再花哨的應用,再絕妙的技巧,其實都架構在技術基礎的基礎上,沒有對技術本質的深入理解,談何來更進一步瞭解其餘。這種體會是真實而有效的,因此我將體會、研究和心得,一路分享和記錄下來,因而就有了《你必須知道的.NET》這本書的誕生,我切實的以爲從這個起點開始,瞭解你必須知道的,才能瞭解那些更廣闊的技術領域。框架
因此,若是可以堅持,不放棄枯燥,從基礎開始踏踏實實的學習基礎,我想你必定會有所突破。而這個突破,其實也有着由量到質的飛躍,以.NET爲例,我認爲了解CLR運行機制,深入的認識內存管理,類型系統,異常機制,熟悉FCL基本架構,學習c#語言基礎,認識MSIL、元數據、Attribute、反射、委託等等,固然還包括面向對象和設計架構,都是必不可少的基礎內容。你能夠從《你必須知道的.NET》的目錄中來大體瞭解到應該掌握的基礎內容,順便廣告了:-)asp.net
話音至此,順便推薦幾本基礎方面的書,若是有時間能夠好好研究研究:編輯器
我一直主張,書不在多,有仙則靈。上面的幾本,在我看來就足以打好基礎這一關。固然若是有更多的追求和思索,還遠遠不夠,由於技術的腳步從未止步。可是,至少至少,應該從這裏開始。分佈式
無論對業界對OO如何詬病,無論大牛對OO如何不懈,那是他們折騰的事業。而咱們的事業卻沒法遠離這片看似神祕的王國,由於但凡從項目和產品一路廝殺而來的高手,都理解OO的強大和神祕。站在高高的塔尖來看軟件,玩來玩去就是這些玩意兒了。因此,在我看來OO其實也是軟件技術的必要基礎,也是技術修煉的基本功之一,所以我也絕不猶豫的將對面向對象的理解歸入了《你必須知道的.NET》一書的第一部分範疇。ide
然而,實話實說,OO的修煉卻遠沒有.NET基礎來得那麼容易,苦嚼一車好書,狂寫萬行代碼,也未必可以徹底領悟OO精妙。說得玄乎點兒,這有些像悟道,想起明代前無古人後無來着的心學開創者王陽名先生,年輕時天天格物修煉的癡呆場景,我就以爲這玩意兒實在不靠譜。其實,不多有人能徹底在OO面前說徹悟,因此咱們你們都不例外。可是由於如此重要,以致於咱們必須找點兒東西或者思路來摩拳擦掌,瞭解、深刻和不斷體會,因此我對面向對象的建議是:始終如一的修煉,打好持久戰。
如何打好仗呢,不例外的先推薦幾本經典做品吧:
有了好書,仍是遠遠不夠的。因此,還得繼續走王陽明的老路,今天格一物,明天格一物,看見什麼格什麼。用我們的專業術語說,就是不斷的學習和實踐他人的智慧結晶,看經典框架,寫熟練代碼。個人一位偶像曾語重心長的告訴我,作軟件的不寫上千萬行代碼,根本就沒感受。按照這個標準衡量一下本身,我發現我還只是小學生一個,因此廢話少說,仍是去格物吧。
那麼OO世界的物又是什麼,又該如何去格,在我看來大體能夠包括下面這些內容,可是分類不按學科標準:
這些OO領域的基本內容,看起來令郎滿目,其實互相聯繫、互爲補充,沒有獨立的分割,也沒有獨立的概念,瞭解這個必然牽出那個,因此修煉起來並不孤單,反倒在不斷的領悟中可以竊喜原來軟件也能夠如此精彩。
有了技術基礎,懂得修煉OO,下面就是捨得的問題了。捨得捨得,不捨怎得?
.NET技術有着近乎誇張的應用範疇,從Windows GDI應用,到ASP.NET Web應用,到WCF分佈式應用,到Window Mobile嵌入式應用,到ADO.NET數據處理,到XML Webservice,.NET無處不在。因此,對於.NET技術的學習,你應該有個起碼的認識,那就是:我不可能瞭解.NET的整個面貌, 還有個起碼的問題繼續,那就是:我還要學嗎?
固然不可能瞭解全部,所以你必須選擇和捨得,選擇有方向,捨得有興趣;我還要學嗎?固然要學,可是應該首先清楚如何學?在這麼多眼花繚亂的技術應用中,有一個基礎始終支撐着.NET技術這艘航母在穩步前行,無論是什麼應用,無論是什麼技術,無論是什麼框架,CLR老是.NET技術的心臟。經過表面來傾聽心臟的聲音,才能更好的瞭解機器的運轉,順着血管的脈絡瞭解框架,才能明白機制背後的玄機。層出不窮的新技術和新名詞老是能吸引你的眼球,可是永遠不要只盯着那塊蛋糕,而掉了整個禮物,因此對.NET的學習必定要打好基礎,從瞭解CLR底層機制和.NET框架類庫開始,逐漸的追求你的技術選擇。
善於分辨,不盲從。天天上cnblogs、MSDN和其餘的訂閱技術文章,是個人習慣,可是若是每篇都讀,每篇都看,那就基本沒有其餘的時間,因此你必須有分辨的能力,和抵抗誘惑的心態。找準本身的方向,而且堅持下來,是難能難得的。
在這方面,沒有參考,也沒有推薦,全屏本身的慧眼。眼光,是個關鍵。
這一點其實並不須要多說,推薦的幾本做品值得花點兒功夫來學習,由於這的確是最初的開始,走在路上從起跑線就走錯了方向,大體快速追上是比較可貴。因此經典的做品就是一個好的起點,我也會不時的在我的博客中推薦更好的專著,但願你繼續關注J
其實這是個看似無足輕重的小事兒,我常常看到自覺得天下無敵的高手,胡亂的在編輯器中揮灑天賦,一陣高歌猛進,但最後本身都不知道當初的本意是什麼。軟件是個可持續的資源,於人於己都遵照點兒規則,出來混是要有點兒職業道德。對本身而言,良好的編程習慣正是一個良好學習習慣的開始。看着本身的代碼,感受像藝術通常優雅,大體也就是周杰倫聽到東風破時候的感受吧,怎一個爽字了得。
推薦一本這方面的書:
具體的學習方法,實在是因人而異,我歷來不主張學習他人的方法,由於人性是難以複製的東西。本身的只有本身最清楚,因此你能夠模仿他人的技藝,可是用於沒法刻畫其靈魂。關於學習方法這檔子事兒,我向來不喜歡參考他人,也更不喜歡推薦。
可是,即使如此,絲絕不減弱學習方法的重要性,懂得了解本身的人是真正的智者,因此挖掘自身潛力永遠是擺在本身眼前的課題。尋找一套行之有效的方式方法,很是的重要,可是不要學着模仿,這方面我以爲只有創新才能成功。
若是實在沒有本身的方法,我就以爲沒有方法就是好方法,苦練多看,永遠不過期。
若是有幸能有一位德高望重而又樂於奉獻的師長指導,那的確是人生之幸運,可是這種機率實在是過小了。我沒有遇上,因此大部分人也無法遇上。沒辦法,仍是須要好的老師,那麼哪兒有這樣才高而又德厚的人才呢?
答案是互聯網。google,baidu,一個都不能少。
MSDN是個好工具,博客園是個好地方,《.NET禪意花園》是個好開始。
前面說過,要不斷的修煉和格物,要學習好的做品,認識好的框架。很不幸的是,這些好事兒全被老外佔了,由於原本就是從他們那裏開始的,因此也不須要泄氣。中國人自古都是師夷長技以制夷的高手,但願軟件產業的大旗別在咱們手上倒下。可是,話說回來,英文就成了一個必須而又傷神的攔路虎,可是沒辦法使勁的嚼吧。多看多寫多讀,也就能應付了。
關於英文的學習和成長,我並不寄但願於在什麼英語速成班裏走回頭路,學校苦幹這麼多年也每隔名趟,因此下手仍是務實點兒,我推薦幾個好的英文網站和大牛博客,算是提升技術的同時提升英語,一舉兩得,一箭雙鵰:
固然這裏羅列的並不是所有,MSDN、asp.net自沒必要說,能夠有選擇的瀏覽。
上述1+7條,是一些並不是經驗的經驗,誰都知道,但不是誰都能作到。累並快樂着,永遠是這個行業,這羣人的主旋律。在技術面前,我嫣然一笑,發現本身其實很專一,這就夠了。
關於anytao,我想各位若是看過《你必須知道的.Net》的人都知道吧,園子裏的大神之一。他如今創業,一款好的團隊系統工具就誕生了,祝福Worktile的市場愈來愈好,我和個人小夥伴們也在用Worktile作平時的小項目管理,感受像是打廣告似的。本文是他對於技術學習的回答,咱們這些菜鳥碼農也能夠從中獲取有用的信息,學習->實踐->思考->總結提升,菜鳥也會有春天,等待咱們變強的那天!麼麼嗒