我對C#的認知

風靈使發表於2018-06-26

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

下面我來講講我的認知,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#,作為一個程式設計師,還要有其他必備的知識,比如HTMLCSS你得會,JS你得會,別說你知道標籤是什麼意思就說自己會了,起碼DIV+CSS切圖玩的起來才算會。資料庫你得會,資料庫水很深,別輕易說自己有初級DBA的水平,那些傳說中每天備份表資料的初級DBA可是連入門都沒有呢,不要和他們比;作為高階開發人員,起碼儲存過程要信手拈來把,起碼要有解決過大資料死鎖的經驗吧。如果業餘愛好再豐富一點的人,PS基本使用也要會把,flash也要了解吧,3Dmax是不是也可以玩玩啊,程式設計師也要有美感嘛。此外,程式設計師要會寫文件,解決方案可是基本技能,高階點的概要設計也是文件嘛。另外高階程式設計師難免還得寫點ppt吧。

除了這些,還有一些要了解的東西,比如作業系統呀,硬體呀,軟體工具等等,因為不一定什麼時候你面對著一些效能bug,就需要他們的知識才能解決,或者解釋。

再更上一層樓,要接觸一些開原始碼啦,現在Xamarin都開源了,你有去了解嗎?很多開原始碼都很厲害的,不要對我說在CSDN下載了一些開原始碼啊。。。

【PS:如果有需要購買Xamarin安卓框架的可以聯絡我,分為原始框架和web嵌入框架兩種,後者採用angularjs+web api技術,Web頁面端實現MVVM :)】

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

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

相關文章