关于开发者的技术水平到底该如何定义,到底一我的的技术水平应该定位在高、中、低的标准是什么呢?不少人以为这是一个仁者见仁的问题,有人以为根据公司的那个员工等级判断。答案是确定不是,从纯开发技术的角度来分析。不少人以为本身一门语言精通了就去学其余语言了,美其名曰集大成者,这样的工做十几年倒是初级水平的技术人员也很多。程序员
下面我来说讲个人认知,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下载了一些开源代码啊。。。
以上所有是纯技术分析,固然不是所有,若有遗漏欢迎你们补充。
上面这些都是纯技术,是虚拟社会,回到现实世界,因为一些人是由初级程序员,尤甚者未入门的程序员,直接跳级到了架构师,或者高级程序员,从而引起代码世界的混乱,而这样的人才之因此成功,除了自身年龄和口才外,和那些非技术人才的力捧也是主因之一。不过呢,话说回来,咱们是商业社会,有些项目能用便可,有些项目拖延到烂尾也是必要的,因此口才的重要性,并不比技术低。一个技术没入门的架构师并不比一个真才实学的架构差,即使他们其余技能也是零,由于我相信存在便是合理。
----------------------------------------------------------------------------------------------------
注:此文章为原创,任何形式的转载都请联系做者得到受权并注明出处!
若您以为这篇文章还不错,请点击下方的【推荐】,很是感谢!