.NET平台技術體系梳理+初學者學習路徑推薦+我們的願景與目標
一 .NET平台技術體系梳理
.NET平台應用領域眾多(桌面開發,web開發,移動開發),不斷有新的編程愛好者開始學習或從其他平台轉移到.NET開發平台。.NET開發平台由微軟2000年提出,到今天已經進入到了第14個年頭,新技術,新框架層出不窮,目不暇接。本文第一個目的是想揭示下.NET平台一路走來的發展脈絡,以饗眾多剛剛進入該領域的開發者。
我們總結的泛.NET平台技術圈的知識范疇如下圖所示:
二 初學者學習路徑建議
由上圖可見,.NET平台技術繁多,從頭學起需循序漸進。結合自己的學習經驗,斗膽給出一份初學者的學習建議。
1.任何一門技術都應該從基礎學起,所以首先我建議大家首先學習上圖c#基礎中的相關主題;這里需要指出的是上圖C#基礎中描述的相關主題雖然被放在了c#基礎當中,但是不代表是最簡單的技術,有些專題要比后面的一些專題比如WinForm編程中的控件編程要復雜得多。
2.WinForm編程(包括窗體控件使用,GDI,ADO.NET),建議同時學習一下數據庫查詢和設計理論,邊學邊做一個c/s結構的小型管理信息系統,這樣的源碼網上到處都是。
3.B/S結構信息系統開發(企業內部信息系統)的開發,主要使用WebForm技術。web開發技術涉及到的知識浩瀚無邊,前端,后端,數據庫端,每一個方面都有很多的內容需要學習。掌握WinForm后,學習WebForm,學習的路徑不至於太陡峭,因為微軟封裝了前端的細節,使得WebForm的開發感覺和WinForm類似,但是還是有所不同的。通過WebForm的學習,你可以了解些PC程序開發中沒有接觸到的概念,比如表單的Post和Get,HTTP協議的無狀態特點,Cookie和Session的用法等等。同樣可以邊學邊做一個b/s結構的小型管理信息系統,這樣的源碼網上也不少。
4.最后就可以挑戰下B/S結構網站開發(互聯網應用)了。這時將面對其他語言程序員最開始web開放時同樣的挑戰,掌握html/js/css/jquery等前端開發技術,ASP.NET MVC這樣的后台技術,當然數據庫設計和查詢能力也是必不可少的。
當然,以上推薦的學習路徑需要因人而異,這里假設你是一個軟件開發的初學者;如果你是從java/php/ruby/phthon等其他web開發平台轉過來的開發者,則你可以略過(2,3)步,只需要掌握下C#的基礎知識和ASP.NET MVC的相關知識即可。
三 各階段相關優秀書籍推薦
不知道大家是否遇到過這種情況,學習一門熱門的新技術,到書店去買書,發現相關主題的書籍琳琅滿目;由於初涉該領域,大家在選擇圖書的時候不好判斷,主要問題歸結為以下2點:
(1)書籍撰寫質量稂莠不齊,很難篩選(通常難以辨別時,首選國外譯作);
(2)由於對該領域技術體系不了解,選擇了高級階段的圖書(本應該選擇入門級好書),缺乏該技術的先期知識,導致閱讀很吃力。
基於以上2點,向大家推薦以下幾本好書,首先Show一下自己的書架:
這里給大家推薦三本書,首先這3本書涉及的技術分別是sql查詢,javascript,css。這3種技術和我們之前的c#或java開發的已有經驗不太一樣,所以學習初期可能感覺不太適應,比如javascript的弱類型,函數式編程特性;sql查詢中沒有循環的概念,如何獲取我們想要統計的結果;css這種格式化html內容的語言。三本好書如下:
1.園子里Tom大叔的譯著《javascript編程精解》
2.sql cookbook中文版
3.css實戰手冊
正是看了這3本書,才基本掌握這3種技術的(每本書之前都看了相同專題的好幾本其他書籍,都沒學會)。
四 學習軟件開發的最有效方式---筆者的一點拙見
在近10年的開發道路中,有2次個人感覺提升最大的時刻。第一次是跳槽進入第二家公司,在公司里遇到了一位經驗豐富的開發主管。從第一家公司離職的原因是,雖對於公司的代碼,可以做到很好的維護,可是當時感覺個人不具備解決問題的能力,遇到一個稍微復雜點的功能需求,總是要靠百度,谷歌。看了很多linux的源代碼,非常想知道其中的各個數據結構最初是如何設計出來的(國外的這些大牛們最初是如何思考的),為了尋找這些答案,毅然離開了第一家公司,進入到前面所說的第二家公司。在這家公司,由一個經驗豐富的開發主管帶着,以極限編程中提出的結對編程的方式一起工作了一小段時間。在這段期間內,跟着這位師傅學到了業務需求決定了類成員及其關系的設計,泛型集合類的強大處理能力等相關開發思想。第二次提升是自己從C++平台轉向.NET平台,也是一段時間,看着一位經驗豐富的開發人員在自己面前編程。這次所用時間更短,在1天之內熟悉了.NET平台開發環境。
個人體會,對於初學者來說,如果有機會在一個比你水平高的開發人員旁邊學習一段時間,而這位師傅能在邊向你展示各種編譯器,編輯器,代碼生成器,高效開發調試工具使用技巧的同時,有能向你講解他解決問題的思路,那么你的提升將會是巨大的。而在現實工作中,這種機會並不是很容易碰到。因為如果是在學校中,一般難以遇到這樣的有經驗的開發人員;在工作中,老板付錢讓你干活,很少提供你學習的機會。
五 我們的願景與目標
上述想法,多年前就已經有所體會,心中一直有個計划想實施,即將自己多年的開發經驗,錄制成視頻,分享給所有有需要的,新加入軟件開發行列的新人們。半年之前,曾嘗試如此去做,但是視頻錄制的過程中遇到一些問題。雖然錄制視頻,台下沒有觀眾,但是自覺不自覺的會想到此視頻屆時會有很多人進行觀看。以致錄制的過程比較緊張,中間有卡殼發生,加上自己又比較追求完美,導致一份視頻錄制多次仍舊不十分滿意。一份視頻多次重復錄制是一件十分惱人的事,最終沒有堅持下來。近半年,一次偶然的機會,得以在國內某大型培訓機構,兼職講述C/C++,MFC等開發知識,授課能力得到了鍛煉,終於萬事具備,於是才有了.NET平台軟件開發培訓視頻教程的第一個系列《手把手教你使用FineUI開發一個b/s結構的取送貨管理信息系統》的出爐。大家對視頻的肯定也增強了自己堅持下去的信心。有一個不自量力的計划,即使用4-6個月的時間陸續推出前面[泛.NET平台技術圈]中提及的各階段開發的視頻教程。
大綱初步制定如下:
1.c#基礎系列(采取專題的方式)
2.WinForm開發系列
(1)通過項目中總結的一個開源框架講述各類WinForm控件的用法,同時再開發若干個綜合實例;
(2)通過一個打磚塊和一個飛機大戰的小游戲,系統講解下GDI編程的相關理論
(3)通過一個c/s結構小型的管理信息系統講述ADO.NET,ORM知識
3.數據庫設計和查詢系列
(1)通過一個開源系統界面操作和數據庫設計,講解界面(需求)背后的數據庫設計原理;
(2)通過2個基礎表,展示數據庫查詢相關領域的方方面面的知識。
4.ASP.NET WebForm系列(目前進行中)
5.前端系列
(1)html+css2系列(計划通過剖析某個博客園的博客模板設計的方式,系統講解css2中的重點知識
(2)javascript系列
(3)jquery系列
6.ASP.NET MVC系列
通過Step by Step的方式,通過一個系列視頻,講述一個網站從無到有,從小到大的實現過程,中間穿插介紹ASP.NET MVC各個方面的相關知識。
六 Step by Step的講述方式
一直以來,學習某項新技術,非常喜歡類似這種一步一步教你開發飛機大戰的講述方式,故此未來的系列視頻爭取均采取該種方式進行講解,這樣可以幫助初學者詳細的了解到一門技術的各方面的相關細節,包括語言語法,解決問題的思維方法,開發環境的搭建,各種庫的引入調用方式,調試程序的方法,編譯器的使用技巧(各種快捷操作等等)。
七 錄制免費視頻教程的目的
(1)從公益角度講,可以幫助很多的相關知識入門者,贈人玫瑰 手留余香。
(2)馬斯洛的需求層次中提到的自我實現需要。
(3)從私心來講,擴大知名度。
(4)溝通的需要,被認可的需要。每完成一篇隨筆,點擊提交,然后點一支煙,坐等推薦和評論的感覺,妙不可言。