C#和Java,究竟選哪個方向?我只說事實,你自己分析……

自由飛發表於2022-06-09

好久沒到園子裡面逛了,回來看了看,.NET有點式微呀?Java/Spring/Linux……比以前多了很多,為什麼?部落格園可是.NET的大本營了呀!

好吧,我承認,飛哥也動搖了,去年在ASP.NET的基礎上,開了一期Java Web班。給大家彙報一下心得體會吧:

錄課程前

其實我最開始學(2008年),學的是Java,但進公司幹活(2009年),一直用的都是.NET。我入行的時候,Java還沒現在火,C#/WinForm/ASP.NET2.0,正是如日中天的時候。

2019年,開始辦培訓班,Java就已經大行其道了。做市場調查的時候,幾乎所有(規模大名氣響)的培訓機構,都開了Java班;只有極個別的培訓班,明面上宣傳又.NET班,但後期就會變著花兒的讓你轉Java。我有點懵:為什麼會這樣?.NET凋零如斯了嗎?

瞭解了一下,這些培訓機構的通用說法就是:Java的崗位多,工資高,.NET不行了……

本著科學和實事求是的精神,我做了一個小小的調研,非常簡單,大家都可以試試:找一個招聘網站,分別用Java和.NET/C#關鍵字進行搜尋,對比他們的結果。根據我們長期的觀察,Java崗和.NET崗工資幾乎沒有差別,但崗位數量Java是.NET的3-5倍之多!所以……

我“逆向思維”了一下:找工作難不難,不只是看崗位多少的,還要看求職人數呀!學Java和學.NET的人數比例又是多少呢?我們做的是培訓班,就只考慮野生程式設計師吧,呵呵,這樣一算,不得了,還有學.NET的野生程式設計師麼?Javaer和.NETer的比例怕是10:1,是100:1吧!?

所以我下定決心,就講ASP.NET全棧開發,我最拿手的!

然後,2年過去了……

源棧出去的同學,就業那是沒得說,so easy,秒拿offer,印證了我之前的推測,和很多同行的感受:.NET真不好招人。(所以我們源棧的同學就好就業嘛,^_^)

而且我也理解了為什麼其他大型培訓班不講.NET:更新太快了,培訓講師怕是跟不上。呵呵,我上一期的講義,下一期照著講就翻車。

似乎一切都很美好,只有一點:來源棧諮詢的學員,很多直接問我們教不教Java?

當時我一是有點煩了,(.NET更好找工作)解釋得煩了,這麼一個簡單的道理,翻來覆去的說,不想解釋了;二是有點飄了,覺得我們可以擴大規模了,.NET的盤子畢竟只有這麼大,我們規模還小的時候沒關係,以後萬一源棧做大了呢,要未雨綢繆……

在ASP.NET的課程全部錄製完成之後,我想了想,C#和Java不是挺接近的嗎?我花點時間就把它也錄了吧!

錄課程中

我承認,我是罵著錄完Java的。

講C#的時候,每天都感覺在吃糖;講Java的時候,感覺每天都在吃屎。

那時候我真心覺得搞Java的工資高點是應該的,畢竟有句話叫做“錢難賺,屎難吃”嘛。

好煩呀!

從IDE(我腦子抽抽了用的eclipse),到語法特性(我用的Java 8),再到環境配置(Spring/Hibernate),沒一個省心的,滑鼠都被我摔壞了一個。最煩的就是這些問題,全™都是些技術無關邏輯不通的狗屁問題。

在此之前,我一直以為JavaScript是最噁心的;在此之後,我覺得Java也好不到哪裡去:

  • JavaScript噁心在它的語法,但這個至少是可控的,噁心的語法你可以不寫,出了bug你可以斷點除錯,總是有反饋有進展的;
  • Java的噁心在它的配置(語法糖沒C#甜我都還可以忍),配置出問題,又沒個提示或者瞎JB亂搞的提示,那才是真的把人都搞瘋了!

我當時就在想喲:我是十年的老碼農,英語還馬馬虎虎過得去(所謂的開源“社群支援”在中文網裡我只能呵呵了),勉勉強強能搞定這些亂七八糟的問題,培訓班剛畢業的學生,咋整?

他們可不是我教什麼,公司就用什麼的:我講課用的eclipse,公司用IDEA呢;我講的Spring,公司用struts呢;我講的Hibernate,公司用的mybatis呢?或者其他更小眾的框架啥的……Java的框架元件這麼亂這麼碎,咋整?

關鍵是時間有限呀,我們源棧標準學制是6個月,其他很多培訓機構5個月,甚至4個月都搞定收工,還要講什麼docker/redis,呵呵,這樣出去的學生,搞個毛線!難怪用人單位恨死培訓班了。

錄課程後

說實話,第一期的Java學員,還是比較爭氣,都學完了學成了。

但找工作,……,那真的是一言難盡啊!

我感覺我都坑了他們一把,心裡還有點過意不去。比如一個重慶的同學,我覺得他學得真的好,mybatis、linux、redis這些都自己學會了,比很多學ASP.NET的同學強多了!所以我想,要個8-12K的薪水不算高吧?因為.NET的同學在重慶7K還是不難的,還沒他學得好。

毛線!

找了一個月,最後5K收場。他說,如果前面幾個6-7K的答應了,感覺有戲,但找了一個月,累了,也被打擊夠了,先有份工作學著吧。

面試卷得一逼。重慶一個普普通通公司初級崗,問JVM調優,問多執行緒和鎖,問大流量高併發的處理……初級崗啊!能把if...else寫利索,能把功能實現就謝天謝地了好吧?你讓他去JVM調優?你一個醫療行業網站定製的公司,能有多高的併發?!

說白了,就卷唄,反正市面上不缺人。“面試造火箭,工作擰螺絲”嘛。

我們.NET的同學求職,基本上當時/當天發offer;Java,一面二面三面……還放你鴿子。

最有意思的是,這個同學,入職一個月以後,公司鼓勵他們轉C#,轉過去就直接加工資:

剛才專門問了一下,還是沒轉,繼續扛Java!小夥子,有點東西呀……

 

-------------------------------

 

本來是想理中客的,寫著寫著好像就專門黑Java一樣,(*/ω\*)

這樣不好,還是給Java說點好話:

  1. 如果你要進網際網路公司,.NET肯定不行的,很難,超級難,進去了也不是核心部門,可能是去做ERP
  2. 學Java確實鍛鍊人,入門的難度和C#/.NET比,真不是一個級別的。C#如果(理解)能力夠,甚至都可以自學,visual studio一裝,後面就直接啪啪啪了嘛;Java能不能自學,可能要靠天意——配環境的時候人品爆不爆!?多少人就死在安裝Java配環境變數上?(順便吐槽一下Java教程,為啥都要從cmd配環境變數講起?IDE他不香麼?)
  3. Java知名度更高,哪怕是個小白,也能張口就“加瓦”;C#就完蛋了,“你們教的那個C井C叉啥的……”,“嗯嗯,點呢特還是多呢特……”太特麼羞恥了!

其他,其他真說不出來了,畢竟C#也開源跨平臺了,……

或者,學Java可以當卷王?憋笑,真的,中國最卷的程式設計師就是搞網際網路那一幫人!^_^,卷得昏天黑地。我做.NET做了十年,加班的時候屈指可數,好久好久都一直以為什麼996是段子——確實是養懶了,卷不動了,現在只有辦個培訓班才能維持的了生活這樣子。我當時要是去卷大廠,說不定都財務自由了。

 (嗯,是的,想得挺美!)

一不小心水了這麼多字,要有乾貨!

乾貨下一篇吧,下次一定,O(∩_∩)O哈哈~

真的,我這次錄課程,就專門把Java/JavaScript/C#這幾門語言共同的部分,剔了出來的,就是要看看,所謂的“主流程式語言大同小異”,究竟怎麼個大同怎麼個小異?資料說話:

 (數字代表視訊大小,單位:G)

面對過程(分支迴圈函式)和基本的物件導向語法層面(封裝繼承多型),Java和C#的區別不大,共有:C#:Java = 20.14:4.91:2.51 ≈ 8:2:1

但到了高階類庫(見下圖)部分,Java和C#找共同的部分就難了,共有:C#:Java = 7.47 :16.7 :14.5 ≈ 3:7:6

 

下一次,童靴們有興趣的話,我挨著把Java和C#不一樣的地方,給大家過一遍。以前覺得一個合格的C#程式設計師,3天就可以轉Java,還是想當然了一些,哈哈……

這裡還是安利一個寫程式碼的小姐姐:源棧小九,先,O(∩_∩)O哈哈~

 趕緊的,說不定還能看到飛哥……

相關文章