天天看點

我對C#的認知。

關于開發者的技術水準到底該如何定義,到底一個人的技術水準應該定位在高、中、低的标準是什麼呢?很多人覺得這是一個仁者見仁的問題,有人覺得根據公司的那個員工等級判斷。答案是肯定不是,從純開發技術的角度來分析。很多人覺得自己一門語言精通了就去學其他語言了,美其名曰集大成者,這樣的工作十幾年卻是初級水準的技術人員也不少。

下面我來講講我的認知,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 :)】

 以上全部是純技術分析,當然不是全部,如有遺漏歡迎大家補充。

上面這些都是純技術,是虛拟社會,回到現實世界,由于一些人是由初級程式員,尤甚者未入門的程式員,直接跳級到了架構師,或者進階程式員,進而引發代碼世界的混亂,而這樣的人才之是以成功,除了自身年齡和口才外,和那些非技術人才的力捧也是主因之一。不過呢,話說回來,我們是商業社會,有些項目能用即可,有些項目拖延到爛尾也是必要的,是以口才的重要性,并不比技術低。一個技術沒入門的架構師并不比一個真才實學的架構差,即便他們其他技能也是零,因為我相信存在即是合理。

----------------------------------------------------------------------------------------------------

注:此文章為原創,歡迎轉載,請在文章頁面明顯位置給出此文連結!

若您覺得這篇文章還不錯請點選下右下角的推薦,非常感謝!

繼續閱讀