合適的.Net(CSharp)程式設計師比Java難招?那是因為細分了領域!

古耕 發佈 2023-05-25T10:48:48.379390+00:00

如果您用網際網路思維看待.Net,那麼.Net在您眼裡可能什麼都不是。有些老闆在招聘.Net的時候,經常會感覺.Net非常難招,其實就是以網際網路思維去招的.Net,這樣的話,很難招到一個合適的.Net程式設計師。.

如果您用網際網路思維看待.Net,那麼.Net在您眼裡可能什麼都不是。有些老闆在招聘.Net的時候,經常會感覺.Net非常難招,其實就是以網際網路思維去招的.Net,這樣的話,很難招到一個合適的.Net程式設計師。

.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程式設計師了!

關鍵字: