03.03 如果让你选择,你会选择学Java还是web?

地球旋转的原因


Java目前在web开发领域有大量的应用,问题中提到的web应该指的是web前端的内容。其实这两个方向都不错,作为程序员应该都系统的学习一下。至于选择哪个方向深入学习,应该结合自身的基础条件进行判断。如果有较好的数学基础,或者是理工科专业出身那么建议深入学习一下Java,可以为以后确定一个主攻研究方向做准备。

下面就以Java为例来简单探讨一下方向的问题,目前使用Java进行开发的领域大致集中在以下几个方向:Web方向、移动互联方向、大数据方向、云计算方向、机器学习方向。这些领域都可以使用Java作为开发语言来实现具体功能,作为目前最流行的开发语言之一,Java的适用范围还是比较广泛的。


Web方向、移动互联方向


Web开发可以说是Java的看家本领。Java以Applet起家,中间经历了多次重大的调整,之所以能成为目前使用最广泛的语言之一,一个重要的原因就是它在Web开发领域优异的性能表现。

Web开发的选择目前集中在三个开发语言上,分别是:Java、PHP、Python,其他语言占的份额较小。这三个语言中Java是性能的代表,PHP是方便的代表,Python是简单的代表,可以说各有千秋。注重性能的电商平台和大并发的移动互联平台目前大都选择性能更为优异的Java作为开发语言,这也是为什么Java几乎是程序员必须学习的开发语言。

Java还是Android平台的开发语言,所以做Android app开发的程序员必须掌握Java语言。目前做Android开发的程序员有不少都是从Web开发转过来的,Java程序员用很短的时间就可以转换到Android开发中。我本人就是自学了一周左右的Android,然后就开始做Android项目开发了,所以Java程序员做移动互联方向也有很多优势,前后端都能搞定。


云计算方向、大数据方向


云计算与大数据虽然是两个大的方向,但是其实它们并不分家,可以说大数据就是云计算发展到一定阶段的必然产物。云计算涉及到诸多技术,总的来说提供三种服务:IaaS、PaaS、SaaS,也就是基础设施即服务、平台即服务以及软件即服务。

云计算和大数据平台组件大量采用了Java语言进行开发,其中大名鼎鼎的Hadoop就是采用Java语言编写的,还有Zookeeper、Hbase、Hive、CloudStack等开源框架都是采用Java语言编写的。其中亚马逊云计算平台以及Oracle云计算平台解决方案中也有大量Java开发的身影,所以做云计算和大数据方向学习Java还是很有必要的。

当然,在云计算和大数据方向还有一些语言比较突出,也是最近几年发展比较迅速的语言,比如编写Spark的Scala语言,开发Docker的Go语言,以及开发OpenStack的Python语言等等,作为程序员来说掌握这些语言对进行大数据以及云计算方向的开发会有一定的帮助。


机器学习方向


机器学习方向作为人工智能的分支之一,在最近几年得到了快速的发展。Java以其高效的运行速度在机器学习领域也有广泛的应用,我在做机器学习研究中就使用Java完成了很多算法的具体实现。


说到机器学习一定要提一下Python,虽然很多机器学习项目最终使用Java实现的,但是在最初做研发的时候,大部分程序员会选择使用Python。得益于Numpy等库的强大,在机器学习领域使用Python是一个聪明的选择。

所以作为程序员来说没有最好的选择,只有最适合的选择,多学一些开发语言并不是坏事。

我在头条上陆续写了关于大数据、云计算、java编程、Python编程的系列文章,关注我就能看到,如果这篇文章让你对Java、大数据、机器学习有一个新的了解,那么留下你的关注吧,我在头条等着你。


IT人刘俊明


为什么我会选择走 Java 这条路?
作者:黄小斜
文章来源:微信公众号【程序员江湖】
最近有一些小伙伴问我,为什么当初选择走Java这条路,为什么不做C++、前端之类的方向呢,另外还有一些声音:研究生不是应该去做算法方向么,本科生不就可以做开发了吗,为什么还要读研呢。其实吧,这个问题搁在不同人身上,回答可能也是完全不一样的。我可能还是主要以我的角度出发,结合一些读者的问题,来说一说为什么要选择Java这条路。
谈谈我的技术方向选择
我最早接触的语言应该是c,再后来又接触了前端、php、C#等语言,对这些语言的了解也仅限于懂得基本语法,写过一些小demo而已,那时候觉得掌握一门语言就是掌握它的语法就行了,于是会在简历上写,了解各种语言,现在想想实在是太可笑了。
不过真的很多初学者都会这么认为,觉得自己不管选哪个方向都可以,这是因为他们不知道自己的技术方向到底是什么,因为他们不管哪个方向都不精。
后来慢慢接触了Android开发,能自己写一些app,觉得这个方向还挺有趣的,于是想着以后干脆做这个吧。不过我那时候也明白自己离进大厂还有很远的距离,于是打算考研。巧的是,读研前的那个假期,去了一家公司实习,做的是Java Web,那时候才觉得Android比Java Web简单多了呀,完全不需要学那么多框架、技术啊,于是更坚定了做Android的决心,只不过那时候也同样发现了,Java web是更加热门的方向,岗位需求量也更大。
读研的时候,一开始也是打算做Android方向的,买了各类Android书籍开始啃,那时候刚好遇到了个实践课程,让我们选方向,有Java、Android、C++等等。当时妹子做前端,为了带上妹子一起做项目,干脆就选了Java Web这个方向,想着应该不影响我做Android啊,于是接下来的时间里就开始学Java Web了。
时间一长,发现这个方向也没有想象的那么难,相反还挺有意思的,毕竟能用到各种各样的框架,技术栈的内容也很丰富,看起来好像比Android的技术含量高很多,加上自己之前学过Java,也有Java Web的学习经历,简历上也能写的好看一点,于是一不做二不休,就开始做Java方向了。就这样,我找到了第一份Java实习,看了一遍Java后端书单,慢慢地在这条路上越走越远,后来我才发现,Java Web远没有想象中那么简单,Java后端技术栈也远不止Java Web这点内容,特别是对于大厂来说,要掌握的东西实在太多了,比如分布式、网络编程、中间件等等。
所以,选择方向这件事,有时候就是看兴趣,看机遇,看你能坚持多久,如果你对一个方向感兴趣,并且愿意持续学习,不断深挖,这个方向可能就适合你,当你在这个方向投入了一定时间之后,有了一定积累和经验,就不太容易再改变方向了。
谈谈各个技术方向的前景
之前也有很多读者问过这个问题,做哪个方向更有前景,更有钱景。虽然我只做过一个方向,但是对其他方向也有一些了解和涉猎,不敢说了解得非常多,但是结合自己身边的同学、朋友的情况,还是可以给出一些比较中肯的建议。
其实我最早打算做的是游戏开发的,所以我们先聊聊游戏开发这个方向。
网易游戏在前几年对游戏开发的招聘要求是985硕士以上学历,当时我就是冲着这个要求考了研,后来却没有去做游戏开发,主要原因是游戏开发主要用的是C++,并且主要的岗位要求是客户端方向的技术,比如图形学、引擎技术,以及对C++的掌握程度。
当时自认为有一些Java基础,不愿意转C++,同时也感觉游戏行业大厂太少了,除了腾讯网易就没有什么大公司了,职业发展的空间可能也不大。自己虽然爱玩游戏,但是做开发和玩游戏毕竟是两码事。当然,近两年游戏开发的岗位需求其实还是很大的,因为现在做游戏开发的人太少了,导致网易游戏放宽了研发工程师的标准,只要求211以上即可,所以,想要从事游戏开发的朋友,其实现在进大厂的机会可能比之前更多了。
说完游戏开发,说一说C++,C++方向和Java一样主要是做后端的,虽然游戏开发大部分也用的是C++,但是C++服务端的需求量确实没有Java大,加上C++的学习难度稍微搞一点,所以我没有选择这个方向。
当然,现在做CV等算法方向的同学都会用到C++,所以相对Java来说,C++方向选择岗位的范围可能也更多一些。不过,正如Java也能做大数据开发一样,选择方向并不是选择语言,比如你做游戏开发或者算法方向,要学的远不止C++,做大数据方向,Java也只是很小的一部分而已。
除此之外,前端、测试、移动端等方向也有很多机会,这些方向的学习难度可能要稍微简单那么一点,所以有很多女生会选择这些方向,如果你想进大厂却对自己不是很有信心,那么这些方向也是很不错的选择。
研究生就应该做算法么?
再聊聊现在很火的人工智能、机器学习方向,这个方向说实话最难的地方在于理论知识,也就是机器学习理论、算法模型、统计学知识等内容。很多人对这个方向趋之若鹜的原因,很大程度上是因为这个方向的薪资高,并且相对工程方向来说,工作强度要低一些。
但是,这么热门的方向,竞争有多激烈就不用多说了,大厂的算法岗简历多到数不胜数,你没有论文、实习经历或者比赛为你背书,基本上连简历筛选都过不去,就算你的简历很漂亮,但是很多时候由于岗位需求量不多,只要你不是特别优秀,就可能被安排到研发岗位,这也是我身边很多同学亲身经历的。再有一点,就是有很多算法方向的博士毕业生也会和你竞争,这就有点吓人了,总之,算法方向还是比研发方向更加有难度的,不管是学习难度、面试难度,还竞争激烈程度,都更加明显。
很多人觉得读研就应该做算法,本科生才做研发,我对此不敢苟同,因为主要还是还看个人实际情况,如果你想进大厂,那么至少本科的时候就要有很扎实的基础实力,这对大部分同学来说都是比较困难的,如果你不是名校出身,我觉得进大厂的难度还是比较大的。
很多名校背景的本科生确实可以拿到大厂的研发offer,于是他们会觉得没必要读研,但是对于我这种跨专业的人来说,研究生才是我开始的第一步,跟他们没有什么可比性,所以对于从零开始的我来说,做研发比算法要靠谱的多,对于很多要转行做程序员的人来说,也是一样的道理,应该选择更加符合自己实力的岗位方向,不要好高骛远。
以上内容纯属个人观点!
文能码字,武能coding,是我黄小斜,不是黄老邪噢。

黄小斜


现在大厂都是前后端分离开发,分工越来越细。前端技术发展很快,要不停的学习,收入不差,天花板相对较低。java技术栈比较稳定,但是深度很深,要学习的东西很多,天花板较高,容易深入接触业务,也很容易后期转管理,前端转管理几乎不可能。


分享到:


相關文章: