關於開發者的技術水平到底該如何定義,到底一我的的技術水平應該定位在高、中、低的標準是什麼呢?不少人以爲這是一個仁者見仁的問題,有人以爲根據公司的那個員工等級判斷。答案是確定不是,從純開發技術的角度來分析。不少人以爲本身一門語言精通了就去學其餘語言了,美其名曰集大成者,這樣的工做十幾年倒是初級水平的技術人員也很多。程序員
下面我來說講個人認知,C#這門技術到底學到什麼程度能夠進入到什麼級別。web
我常說C#的入門技術是委託、事件、消息。只有當你能夠純熟運用這三個技能的時候,纔剛剛入門,此時C#的大門纔算正式爲你打開。不少人在學了一些語法編寫一些項目後就以爲C#精通了,其實大家還沒入門呢(對日開發的居多)數據庫
下面上一個圖片,你們來看看本身的定位,固然是純技術角度,其實,有些時候一個軟件架構,用初級軟件工程師也是能夠架構的。架構
1, comom language runtime :初級人員無視他,中級人員起碼要知道他,高級人員多數要會使用其中一些應用好比security,架構師要理解原理。框架
2, .netframework :這裏有許多框架,會的越多越好。asp.net
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下載了一些開源代碼啊。。。
以上所有是純技術分析,固然不是所有,若有遺漏歡迎你們補充。
上面這些都是純技術,是虛擬社會,回到現實世界,因爲一些人是由初級程序員,尤甚者未入門的程序員,直接跳級到了架構師,或者高級程序員,從而引起代碼世界的混亂,而這樣的人才之因此成功,除了自身年齡和口才外,和那些非技術人才的力捧也是主因之一。不過呢,話說回來,咱們是商業社會,有些項目能用便可,有些項目拖延到爛尾也是必要的,因此口才的重要性,並不比技術低。一個技術沒入門的架構師並不比一個真才實學的架構差,即使他們其餘技能也是零,由於我相信存在便是合理。
----------------------------------------------------------------------------------------------------
注:此文章爲原創,任何形式的轉載都請聯繫做者得到受權並註明出處!
若您以爲這篇文章還不錯,請點擊下方的【推薦】,很是感謝!