C#和Java,究竟选哪个方向?我只说事实,你自己分析……

好久没到园子里面逛了,回来看了看,.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哈哈~

 赶紧的,说不定还能看到飞哥……

posted @ 2022-06-09 15:11  自由飞  阅读(12714)  评论(126编辑  收藏  举报