天天看点

合适的.Net(CSharp)程序员比Java难招?那是因为细分了领域!

如果您用互联网思维看待.Net,那么.Net在您眼里可能什么都不是。有些老板在招聘.Net的时候,经常会感觉.Net非常难招,其实就是以互联网思维去招的.Net,这样的话,很难招到一个合适的.Net程序员。

合适的.Net(CSharp)程序员比Java难招?那是因为细分了领域!

.Net只是一个通用平台,其中CSharp程序员居多,而CSharp其实是做细分领域的,它的作用领域很宽泛。虽然Java程序员要比CSharp程序员多几倍,但是Java程序员大多做的事情都比较单一,比如大多数Java程序员只会做网站。

当然,我这么说也不是贬低Java的意思,因为.Net能做的事情,Java几乎都能做,但就像.Net可以做网站一样,但是想要追赶Java还是差了那么一截。因此,如果一个.Net程序员如果只会做网站,那么大概率找工作会比较困难。同等道理,如果现在的Java程序员不会做网站,那么大概率也找不到工作!

CSharp细分领域总结起来有这么几个:游戏、网站、管理软件、工控软件、物联网。

游戏

其中,游戏领域是CSharp程序员薪资普遍比较高的群体。目前,主流的游戏引擎有虚幻(系列)、Unity3D、Cocos(2D/3D)。其中,虚幻引擎和Cocos引擎所使用的主要编程语言为C++(Cocos还支持JavaScript编程),Unity3D引擎的核心编程语言是CSharp。

当然,后端语言的选型可以根据公司实际情况来,但是,目前大多数游戏的后端基本上还是以C++为主,即使CSharp想要分一杯,也很难撼动C++的位置,别说Java了!Java在游戏圈的份额估计都赶不上Lua(一种轻量级的脚本语言)!

网站

这一领域其实对于大多数CSharp程序员来说很尴尬,因为就像前面所说的,如果一个.Net程序员如果只会做网站,那么大概率会找不到工作。但是,我没说的是,如果一个.Net程序员不会做网站,那么大概率也很难找到工作。

与Java不同的是,如果一个只会做网站的Java程序员,突然有一天,公司要求他去做一个C/S(桌面端)软件,那么大概率这个Java程序员会摆摆手,公司或许也拿他没有办法。但是,如果一个CSharp程序员如果只会做C/S的话,公司要求他去做一个网站,他说他不会,那么公司大概率会跟他说:“那你去学啊!”。

大多数使用CSharp作为网站开发语言的公司,基本上只有两种可能,第一种就是研发总监或者老板对.Net很有情怀,第二种就是公司内部有C/S的项目要做,且C/S占的份额还不小。

所以,如果一个CSharp程序员如果只会写C/S软件的话,可能对于公司来说,你是一个不太合格的CSharp程序员。

使用.Net开发的网站,大多数情况下是和C/S软件伴生的。比如一些大型管理软件,可能需要对第三方公司开放一些Api接口,这时候如果招一个其他语言的程序员来做,对于公司来说显然不经济,而CSharp程序员恰巧可以做网站或者WebApi。

其实,作为一个CSharp程序员,我觉得使用.Net开发网站的效率一点不比Java低,甚至是比Java方便很多。因为我也写过一段时间Java,虽然现在基本上已经忘了,但是开始我就对比过Java和CSharp,最终还是选择了CSharp(用过的都说好!)。

因此,CSharp作为.Net平台里面的主要编程语言,你可以只写C/S软件,但是你不能不会写网站!

管理软件

管理软件更多的,还是与人与业务打交道,常见的就是一些ERP系统和一些功能性软件。

虽然现在大多数管理软件还是以网页为主,但是一些对于性能要求比较高的、瞬时内存占用比较高的软件,还是以C/S软件为主,比如大家常见的比较知名的软件如PS、CAD等等。

可能有人会说了:“这些软件不也有网页版吗?”。

假设一个文件,光文件自身大小就几十G的情况下,如果使用网页进行编辑,还可行吗?

这只是极端例子,但大多数使用CSharp做管理软件的,大多都是对软件的性能要求比较高的。

工控软件

目前,在工控软件领域,主导市场的还是C++和CSharp语言。基本上,C++和CSharp配合开发的场景比较多一些。

工控软件更多的还是和机器和生产打交道,它和管理软件有本质上的区别。工控软件基本上跟设备通讯比较多,需要掌握一定的设备通讯知识,因此,工控软件的门槛相比管理软件可能更加高一些。

工控软件的程序员只待在“家里”是不行的,一般做工控软件的程序员都会要求驻场开发或者开发完成以后在客户现场调试,因此,做工控软件的CSharp程序员还要具备一些和客户沟通的能力。

Java虽然也能做桌面端,但是会的人比较少,更何况,工控软件经常需要对接设备,最典型的就是机器视觉,需要控制各种工业相机。

常见的工业相机,Java所支持的很少,相机的官方SDK基本上也只会给出C++或者CSharp的,甚至VB.Net的也会给,但是就是没有Java的。Java想要对接这些设备,可能需要研究设备的各种协议,重新造轮子,远不如C++和CSharp方便!

因此,工控软件基本上是C++和CSharp的天下!

物联网

现在不少物联网硬件跟CSharp融合的非常好,与工控软件一样,需要和硬件对接,所以物联网软件基本上也是C++和CSharp的天下。

物联网可能比工控软件要求更高,需要了解一些跟PLC相关的知识,一些跟一些物联网设备通讯的时候,甚至需要自己写设备驱动。当然了,有一部分物联网硬件也可以使用Java进行对接。但是,前面说了,Java程序员大多数还是做网站、做互联网项目,能做这个领域的很少。

技术细分

虽然CSharp可以做B/S(网站开发)也可以做C/S(桌面客户端开发),但是即使这样CSharp还对实现技术进行了细分。

比如说C/S部分,CSharp就分出了Winform和WPF两个门类。Winform和WPF均可以做桌面端,但是WPF可以做出更加高清且流畅的客户端软件,而Winform则有丰富的控件生态做支持,因此目前在管理软件和工控软件的实现技术上,又展开了两个阵营。

结语

.Net在细分领域还是比较抢手的,正因为.Net在细分领域分得太清楚,每个领域需要会的东西各不相同,因此,很多公司很难招到一个合适自己的.Net程序员。

所以,.Net和Java程序员的区别就是,找工作的时候,公司更看重一个Java程序员的编程技术水平,而.Net程序员在找工作的时候,公司更看重一个.Net程序员的领域也就是行业经验!

当一个公司既看重行业经验,又对编程技术水平有像Java那样的执念的时候,自然就招不到一个自己认为合适的.Net程序员了!