天天看點

合适的.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程式員了!