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说点好话:
- 如果你要进互联网公司,.NET肯定不行的,很难,超级难,进去了也不是核心部门,可能是去做ERP
- 学Java确实锻炼人,入门的难度和C#/.NET比,真不是一个级别的。C#如果(理解)能力够,甚至都可以自学,visual studio一装,后面就直接啪啪啪了嘛;Java能不能自学,可能要靠天意——配环境的时候人品爆不爆!?多少人就死在安装Java配环境变量上?(顺便吐槽一下Java教程,为啥都要从cmd配环境变量讲起?IDE他不香么?)
- 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哈哈~
赶紧的,说不定还能看到飞哥……
C#和Java,究竟选哪个方向?我只说事实,你自己分析……的更多相关文章
- 这是一名Java学者关于学习方向的建议
无可厚非,编程是一门艺术.但是辉煌的背后必须是一段辛苦的奋斗过程,而过程的引导方向就是最重要的一环.Java语言可谓是引领了编程的潮流,你会是怎样去学的呢? 这是一名Java学者的学习方向的建议 注: ...
- Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结
Atitit.swift 的新特性 以及与java的对比 改进方向attilax 总结 1. defer关键字1 2. try!形式存在的“不失败”机制3 3. Guard 4 4. swift的新语 ...
- java就业前景发展方向分析
随着信息化的发展,IT培训受倒了越来越多人的追捧.在开发领域,JAVA培训成为了许多人的首选!java拥有强大的开发者的数量已超过了之前的900万,将近97%的企业电脑也在运行着java,其下载量每年 ...
- 099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类
099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类 本文知识点:编写并测试Subject类 说明: ...
- 101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联——方案二
101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联--方案二 本文知识点:通过方法实现学生类与 ...
- java程序怎么在一个电脑上只启动一次,只开一个进程
目录 <linux文件锁flock> <NIO文件锁FileLock> <java程序怎么在一个电脑上只启动一次,只开一个进程> 方案1: 单进程程序可以用端口绑定 ...
- Java生鲜电商平台-电商数据运营统计与分析
Java生鲜电商平台-电商数据运营统计与分析 今天分享将会分为以下几个方面来阐述: 1. 作为运营我们需要统计与分析的几个核心数据是什么? 2. 核心数据对业务的指导价值在哪里呢? 3. 作为产品PM ...
- 098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类
098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类 本文知识点:编写并测试Subject类 说明: ...
- Java开发工程师(Web方向) - 04.Spring框架 - 第2章.IoC容器
第2章.IoC容器 IoC容器概述 abstract: 介绍IoC和bean的用处和使用 IoC容器处于整个Spring框架中比较核心的位置:Core Container: Beans, Core, ...
随机推荐
- 微信小程序常用表单校验方法(手机号校验、身份证号(严格和非严格校验、验证码六位数字校验))
util.js function isPhone(value) { if (!/^1(3|4|5|7|8)\d{9}$/.test(value)) { return false } else { re ...
- 使用flex的同时设置超出喜爱是省略号,
超出宽度,显示省略号 overflow:hidden; white-space:nowrap; text-overflow:ellipsis; 需要注意的是,在移动端在flex元素中的内容进行省略文字 ...
- 对 rest 参数的理解
扩展运算符被用在函数形参上时,它还可以把一个分离的参数序列整合成一个数组: function mutiple(...args) { let result = 1; for (var val of ar ...
- 时间盲注——AS别名让盲注不盲
用处 页面存在时间盲注,注入成功了,你啥也看不到. 这只是为了能够查看到注入后的结果 网站部分源代码 <?php $conn = mysqli_("127.0.0.1",&q ...
- 微信小程序循环列表点击每一个单独添加动画
首先,咱们看一下微信小程序动画怎么实现,我首先想到的是anime.js,但是引入之后用不了,微信小程序内的css也无法做到循环的动态,我就去找官方文档看看有没有相应的方法,哎,还真有 点击这里查看 微 ...
- 2021.11.09 P3426 [POI2005]SZA-Template(KMP+DP)
2021.11.09 P3426 [POI2005]SZA-Template(KMP+DP) https://www.luogu.com.cn/problem/P3426 题意: 你打算在纸上印一串字 ...
- Linux的软件安装tomcat 以及jdk
因为tomcat的启动需要jdk,所以我们先安装jdk,安装完成后再安装tomcat 具体的文件大家可以到官网下载,下面介绍安装步骤 目录 jdk安装 1.通过xftp或者其他方式将安装包传到我们的L ...
- python基础练习题(九九乘法表)
又把python捡起来了,动手能力偏弱,决定每日一练,把基础打好! ------------------------------------------------------------------ ...
- 字节跳动构建Data Catalog数据目录系统的实践(上)
作为数据目录产品,Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景,并服务于数据开发和数据治理的产品体系.本文介绍了字节跳动 Data ...
- 攻防世界-MISC:gif
这是攻防世界新手练习区的第七题,题目如下: 点击下载附件1,得到一个压缩包,解压后得到一些图片 嗯,黑白相间(又是懵逼的时候),又跑去看WP了,说是打开文件出现多个黑白,让人联想到二进制,白色图片代表 ...