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, ...
随机推荐
- js判断json数据是否存在某字段的方法
方式一 !("key" in obj) if("name" in json){//json就是数组,name是你要找的值 console.log("有 ...
- spring总览
Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring ...
- k8s和Docker
Docker是一个开源的应用容器引擎k8s是一个开源的容器集群管理系统这里我尽量用比较浅显的方式来说明k8s系统 一.k8s是如何管理的节点的呢:1.k8s 分master和node 2.master ...
- 在 Docker 上快速运行 Apache Airflow 2.2.4
Docker 安装 Apache Airflow 参考资料 Running Airflow in Docker 安装依赖 Docker Engine Docker Composite 快速运行 Apa ...
- springboot读取配置文件赋值给静态变量
1.实现InitializingBean接口,重写afterPropertiesSet方法,将@Value赋值给成员变量的属性赋值给静态变量,示例如下: /** * @Classname FileUt ...
- json在前后台传递的形式
json对象和json字符串的区别纠结了好久一阵子,经过查阅大量博客资料总结得,字符串形式它就是带单引号或者双引号的,对象就是没有被引号包括,可以直接进行调用属性.前后端间数据传递json形式应该是字 ...
- 多行,溢出隐藏 css
.ellipsis-line{width:200px; line-height:18px;font-size:14px; overflow:hidden; text-overflow:ellipsi ...
- Dockerfile 命令详解及最佳实践
Dockerfile 命令详解 FROM 指定基础镜像(必选) 所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指 ...
- tomcat的搭建和介绍
第19章 tomcat的搭建 19.1 tomcat学习之前的预备知识 19.1.1 什么是JVM和JDK,JRE JVM java虚拟机,实现一份代码可以在不同的平台执行,具有 ...
- vscode 开发项目, Prettier ESLint的配置全攻略(基础篇)
我们在做项目尤其是多人合作开发的时候经常会因为不同的开发规范和代码风格导致出现冲突, 为了能统一代码风格和规范我们需要使用到prettier和eslint,接下来就一vscode编辑器为例详细讲解下: ...