我對C#的認知。
關於開發者的技術水平到底該如何定義,到底一個人的技術水平應該定位在高、中、低的標準是什麽呢?很多人覺得這是一個仁者見仁的問題,有人覺得根據公司的那個員工等級判斷。答案是肯定不是,從純開發技術的角度來分析。很多人覺得自己一門語言精通了就去學其他語言了,美其名曰集大成者,這樣的工作十幾年卻是初級水平的技術人員也不少。
下面我來講講我的認知,C#這門技術到底學到什麽程度可以進入到什麽級別。
我常說C#的入門技術是委托、事件、消息。只有當你可以純熟運用這三個技能的時候,才剛剛入門,此時C#的大門才算正式為你打開。很多人在學了一些語法編寫一些項目後就覺得C#精通了,其實你們還沒入門呢(對日開發的居多)
下面上一個圖片,大家來看看自己的定位,當然是純技術角度,其實,有些時候一個軟件架構,用初級軟件工程師也是可以架構的。
1, comom language runtime :初級人員無視他,中級人員起碼要知道他,高級人員多數要會使用其中一些應用比如security,架構師要理解原理。
2, .netframework :這裏有許多框架,會的越多越好。
3, Base class library :這裏都是基本語法你會了多少呢,想成為高手一定要全部學會,一個都不能丟。
4, Runtime infrastructure library:這裏內容初級開發者不用了解,進入中級就要開始一點點吸收了,想到高級要全部消化,是全部哦。
5, Framework calss library:這裏都是基本應用,初級程序員肯能都會接觸一些,中級就會了解和運用一些,高級就要全部會用。
6, Core concepts:這裏的內容同上。
7, Core features,core objects,CLI language,DLR略過。。。
8, Desktop:CUI了解就行,GUI要深入了解,另外這裏的涉及到了XAML語言,這個要學會。
9, Web:這裏涉及的框架sharpoint如果工作沒涉及不去了解也是可以的,但asp.net是必會的,其中的MVC就算工作沒應用也要學會。Asp.net runtime是進階高手的一個路障,了解的越多越好。Silverlight的話,會xaml基本就能用,如果工作需要精通。
10, SOA:這也是個必會的東西,而且至少要精一個。
11, Open web interface for .net:要了解,會使用,如果工作需要,要精通。
12, SDK:要了解,會基本使用。
13, Development:這個基本沒有人能全會,但工具這個要熟練使用,畢竟工具會的越多越好,但不是技術加分。
14, Platforms:這個基本很難有人全精,但多少要了解,工作用過的要精通。
15, Productivity:起碼nuget要會用。
16, Build:高級人員要了解原理。
17, Testing:至少要會使用1個,其他的要了解。
18, Deploy/publish:這個基本都百度的出用法,了解就可以,起碼知道有這個東西,需要的時候可以百度。
19, Framework tool:這裏有些是必會的,有些會用就行,但最好全部了解,需要的時候學習用法。
20, Data:這裏內容作為高級人員是必會的,如果其中的orm可以用EF作為跳板深入研究(這裏的水很深)。
21, Conponents:中級以後難免要接觸這些,了解的越多進步的越多。
22, Concept:這是圖片裏沒有的,中級以後就會接觸的,像什麽IOC,AOP,MVC,MVVM,DDD等等,在學習這些的過程中可以逐漸向架構師前進,其實這些概念學會了之後會發現,概念只是裝逼用的。在概念裏分為基本概念和高級概念,像IOC,AOP就是基本概念,這些東西在編碼時你已經應用過了,而且有一些現成的開源代碼,而且原理很簡單,學會後可以用具體語言來把你編碼的方式表達出來,不去了解也無妨,但知道的多了,方便忽悠;而DDD就是高級概念,光百度是學不會的,一定要應用過才能了解,但DDD這樣的高級概念很復雜,非技術人員很難理解,技術人員也未必有那麽好的口才講解,而IOC,AOP這類的簡單概念很容易理解,基本上口才笨拙的開發人員也能講的很溜,很適合給領導很講解。所以在領導看來,會基礎概念和會高級概念都是一樣一樣一樣地。
看到這裏是不是那些以為C#很簡單的同學就很吃驚啦啊,那些自以為自己是大神的是不是發現,原來自己不過才是剛入門的小菜鳥啦,那些以為自己C#精通的外包達人們,是不是打開圖片後一臉陌生的感覺呀。其實,C#並不比其他語言簡單,水深的狠,哪那麽容易精通。
這些還只是C#,作為一個程序員,還要有其他必備的知識,比如HTML和CSS你得會,JS你得會,別說你知道標簽是什麽意思就說自己會了,起碼DIV+CSS切圖玩的起來才算會。數據庫你得會,數據庫水很深,別輕易說自己有初級DBA的水平,那些傳說中每天備份表數據的初級DBA可是連入門都沒有呢,不要和他們比;作為高級開發人員,起碼存儲過程要信手拈來把,起碼要有解決過大數據死鎖的經驗吧。如果業余愛好再豐富一點的人,PS基本使用也要會把,falsh也要了解吧,3Dmax是不是也可以玩玩啊,程序員也要有美感嘛。此外,程序員要會寫文檔,解決方案可是基本技能,高級點的概要設計也是文檔嘛。另外高級程序員難免還得寫點ppt吧。
除了這些,還有一些要了解的東西,比如操作系統呀,硬件呀,軟件工具等等,因為不一定什麽時候你面對著一些性能bug,就需要他們的知識才能解決,或者解釋。
再更上一層樓,要接觸一些開源代碼啦,現在Xamarin都開源了,你有去了解嗎?很多開源代碼都很厲害的,不要對我說在CSDN下載了一些開源代碼啊。。。
【PS:如果有需要購買Xamarin安卓框架的可以聯系我,分為原始框架和web嵌入框架兩種,後者采用angularjs+web api技術,Web頁面端實現MVVM :)】
以上全部是純技術分析,當然不是全部,如有遺漏歡迎大家補充。
上面這些都是純技術,是虛擬社會,回到現實世界,由於一些人是由初級程序員,尤甚者未入門的程序員,直接跳級到了架構師,或者高級程序員,從而引發代碼世界的混亂,而這樣的人才之所以成功,除了自身年齡和口才外,和那些非技術人才的力捧也是主因之一。不過呢,話說回來,我們是商業社會,有些項目能用即可,有些項目拖延到爛尾也是必要的,所以口才的重要性,並不比技術低。一個技術沒入門的架構師並不比一個真才實學的架構差,即便他們其他技能也是零,因為我相信存在即是合理。
我對C#的認知。