我對C#的認知
關於開發者的技術水平到底該如何定義,到底一個人的技術水平應該定位在高、中、低的標準是什麼呢?很多人覺得這是一個仁者見仁的問題,有人覺得根據公司的那個員工等級判斷。答案是肯定不是,從純開發技術的角度來分析。很多人覺得自己一門語言精通了就去學其他語言了,美其名曰集大成者,這樣的工作十幾年卻是初級水平的技術人員也不少。
下面我來講講我的認知,C#這門技術到底學到什麼程度可以進入到什麼級別。
我常說C#的入門技術是委託、事件、訊息。只有當你可以純熟運用這三個技能的時候,才剛剛入門,此時C#的大門才算正式為你開啟。很多人在學了一些語法編寫一些專案後就覺得C#精通了,其實你們還沒入門呢(對日開發的居多)
下面上一個圖片,大家來看看自己的定位,當然是純技術角度,其實,有些時候一個軟體架構,用初級軟體工程師也是可以架構的。
comom language runtime
:初級人員無視他,中級人員起碼要知道他,高階人員多數要會使用其中一些應用比如security,架構師要理解原理。.netframework
:這裡有許多框架,會的越多越好。Base class library
:這裡都是基本語法你會了多少呢,想成為高手一定要全部學會,一個都不能丟。Runtime infrastructure library
:這裡內容初級開發者不用瞭解,進入中級就要開始一點點吸收了,想到高階要全部消化,是全部哦。Framework calss library
:這裡都是基本應用,初級程式設計師肯能都會接觸一些,中級就會了解和運用一些,高階就要全部會用。Core concepts
:這裡的內容同上。Core features,core objects,CLI language,DLR略過。。。
Desktop
:CUI瞭解就行,GUI要深入瞭解,另外這裡的涉及到了XAML語言,這個要學會。Web
:這裡涉及的框架sharpoint如果工作沒涉及不去了解也是可以的,但asp.net是必會的,其中的MVC就算工作沒應用也要學會。Asp.net runtime是進階高手的一個路障,瞭解的越多越好。Silverlight的話,會xaml基本就能用,如果工作需要精通。SOA
:這也是個必會的東西,而且至少要精一個。Open web interface for .net
:要了解,會使用,如果工作需要,要精通。SDK
:要了解,會基本使用。Development
:這個基本沒有人能全會,但工具這個要熟練使用,畢竟工具會的越多越好,但不是技術加分。Platforms
:這個基本很難有人全精,但多少要了解,工作用過的要精通。Productivity
:起碼nuget要會用。Build
:高階人員要了解原理。Testing
:至少要會使用1個,其他的要了解。Deploy/publish
:這個基本都百度的出用法,瞭解就可以,起碼知道有這個東西,需要的時候可以百度。Framework tool
:這裡有些是必會的,有些會用就行,但最好全部瞭解,需要的時候學習用法。Data
:這裡內容作為高階人員是必會的,如果其中的orm可以用EF作為跳板深入研究(這裡的水很深)。Conponents
:中級以後難免要接觸這些,瞭解的越多進步的越多。Concept
:這是圖片裡沒有的,中級以後就會接觸的,像什麼IOC,AOP,MVC,MVVM,DDD等等,在學習這些的過程中可以逐漸向架構師前進,其實這些概念學會了之後會發現,概念只是裝逼用的。在概念裡分為基本概念和高階概念,像IOC,AOP就是基本概念,這些東西在編碼時你已經應用過了,而且有一些現成的開原始碼,而且原理很簡單,學會後可以用具體語言來把你編碼的方式表達出來,不去了解也無妨,但知道的多了,方便忽悠;而DDD就是高階概念,光百度是學不會的,一定要應用過才能瞭解,但DDD這樣的高階概念很複雜,非技術人員很難理解,技術人員也未必有那麼好的口才講解,而IOC,AOP這類的簡單概念很容易理解,基本上口才笨拙的開發人員也能講的很溜,很適合給領導很講解。所以在領導看來,會基礎概念和會高階概念都是一樣一樣一樣地。
看到這裡是不是那些以為C#很簡單的同學就很吃驚啦啊,那些自以為自己是大神的是不是發現,原來自己不過才是剛入門的小菜鳥啦,那些以為自己C#精通的外包達人們,是不是開啟圖片後一臉陌生的感覺呀。其實,C#
並不比其他語言簡單,水深的狠,哪那麼容易精通。
這些還只是C#,作為一個程式設計師,還要有其他必備的知識,比如HTML
和CSS
你得會,JS你得會,別說你知道標籤是什麼意思就說自己會了,起碼DIV+CSS
切圖玩的起來才算會。資料庫你得會,資料庫水很深,別輕易說自己有初級DBA的水平,那些傳說中每天備份表資料的初級DBA
可是連入門都沒有呢,不要和他們比;作為高階開發人員,起碼儲存過程要信手拈來把,起碼要有解決過大資料死鎖的經驗吧。如果業餘愛好再豐富一點的人,PS基本使用也要會把,flash也要了解吧,3Dmax是不是也可以玩玩啊,程式設計師也要有美感嘛。此外,程式設計師要會寫文件,解決方案可是基本技能,高階點的概要設計也是文件嘛。另外高階程式設計師難免還得寫點ppt吧。
除了這些,還有一些要了解的東西,比如作業系統呀,硬體呀,軟體工具等等,因為不一定什麼時候你面對著一些效能bug,就需要他們的知識才能解決,或者解釋。
再更上一層樓,要接觸一些開原始碼啦,現在Xamarin
都開源了,你有去了解嗎?很多開原始碼都很厲害的,不要對我說在CSDN下載了一些開原始碼啊。。。
【PS:如果有需要購買Xamarin
安卓框架的可以聯絡我,分為原始框架和web嵌入框架兩種,後者採用angularjs+web api
技術,Web頁面端實現MVVM :)】
以上全部是純技術分析,當然不是全部,如有遺漏歡迎大家補充。
上面這些都是純技術,是虛擬社會,回到現實世界,由於一些人是由初級程式設計師,尤甚者未入門的程式設計師,直接跳級到了架構師,或者高階程式設計師,從而引發程式碼世界的混亂,而這樣的人才之所以成功,除了自身年齡和口才外,和那些非技術人才的力捧也是主因之一。不過呢,話說回來,我們是商業社會,有些專案能用即可,有些專案拖延到爛尾也是必要的,所以口才的重要性,並不比技術低。一個技術沒入門的架構師並不比一個真才實學的架構差,即便他們其他技能也是零,因為我相信存在即是合理。
相關文章
- 我對C#的認知。C#
- 聊聊我對現代前端框架的認知前端框架
- 對崗位的認知
- 認知列舉(C# Enum)C#
- 認知結構(C# Struct)C#Struct
- 網際網路如何改變我們對自身智力的認知?
- 對js陀螺儀的認知理解JS
- 對Java list集合的新認知Java
- 對html語義化的理解認知HTML
- 重學c#系列——對c#粗淺的認識(一)C#
- 對前端跨域方案的認知總結前端跨域
- 對服裝紡織行業的認知行業
- Flutter 對狀態管理的認知與思考Flutter
- 一個本科學生對Linux的認知Linux
- 關於我對c#的一些看法C#
- 談談我對評論系統有限層及無限層評論的膚淺認知
- 我對控制反轉以及依賴注入的認識依賴注入
- [原創] 我的專案管理之路--2、認知專案管理專案管理
- 運維7年,對Linux的一點小認知運維Linux
- 認知提升的方法
- zt_我對儲存storage的一些認識
- 認知AI還未實現,我們仍然正在路上AI
- 我的程式設計認知:多思考、多編碼、多測試程式設計
- 對於記憶體洩漏問題的簡單認知記憶體
- 認知模型模型
- 認知技術時代來臨,我們的工作將會如何被重塑?
- 淺談ElasticSearch的認知Elasticsearch
- 軟體工程的認知軟體工程
- Java8 新特性,打破你對介面的認知Java
- 預備知識:我讀過的對epoll最好的講解
- 網際網路竟能如此簡單!風變程式設計改變了我對網際網路的認知程式設計
- 對於工程師責任和責任邊界的認知工程師
- 對不起,今天該發的微軟認證推文,我們沒寫微軟
- 對公司嚴抓考勤的重新深度認知分享-考勤對傳統型公司的重要性
- MQTT 基本認知MQQT
- 讀完這篇文章,顛覆你之前對硬碟開盤的認知!硬碟
- v$session的一點認知Session
- 突破自我認知的壁壘