热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

十几年稳坐“大哥”位,搞Java的程序员就是这么“牛x”!

最近有很多粉丝来问我,“壹哥,我想从事软件开发,但市面上有太多的编程语言和技术方向,Java、H5、Python、物联网、大

最近有很多粉丝来问我,“壹哥,我想从事软件开发,但市面上有太多的编程语言和技术方向,Java、H5、Python、物联网、大数据等,我该选择哪个方向呢”?

其实这个困惑,对很多IT小白来说都曾有过,笔者自己也曾经历过这个迷茫的阶段。那今天我就以自身近10年的开发经验,来谈谈初学者该怎么选择一个编程语言和技术方向作为“进身之阶”。

到底该选择学习哪种语言?

对于即将入行,或者打算以后进入 IT 行业的人来说,学习哪种开发语言是一个令人比较头疼的问题,问十个人可能会得到十个不同的答案。其实我们大部分人都是希望通过学习一门技术,来找到一份薪资还不错的稳定工作。所以我们该选择哪种技术,就要看这个技术是不是有助于我们找工作,这个技术是不是具有持久的生命力。于是,我就总结了如下几点,供大家思考借鉴:

1. 从技术角度考虑


  • 该语言是否具有长久的发展历史,是否已经发展的很稳定了,有没有广泛的应用的基础、良好的社区支持,是否便于学习,有问题能不能很方便地查到资料来解决?

  • 该语言是否上手比较简单,代码通俗易懂,学习门槛不高?

  • 该语言是否使用面向对象的技术,更符合人们现实生活中的思维方式,便于后期的维护?

  • 该语言是否依然具有良好的发展前景,而不至于刚学完找份工作,干了没多久,这门语言就被淘汰了而导致失业?


基于以上几个问题来分析,所以我们选择一个编程语言时,首先应该摒弃的就是“新语言”和正在热炒的“新技术”(比如曾炒作一时的区块链)。

有些技术可能这两年很火爆,但风口一过,这个技术立马就会淘汰,等你学完了出来就坐等失业。而且很多新技术刚出现时,各种对应的资料、技术文档都不齐全。

贸然使用这种技术,在开发阶段一旦出问题,连怎么解决都不知道,这对项目开发来说就是毁灭性的灾难。试想,项目开发到一半,结果遇到了无法解决的重大问题,没有现成或类似的解决思路,难道现在要推倒重做?老板的钱不是钱啊?!!!

我们要知道,越是新技术,使用的范围就越小,全国就那么几个有能力的大公司在搞这个技术,你能保证你有资格进得了这几个大厂吗?而且虽然未来会很有前景,但那是未来的事情,不是现在的事情!我们要抓住重点,看看当下自己最需要什么。

有些小白想得特别天真,某个技术现在很火,是未来5年的发展趋势,所以我就要现在去学这个技术,以后就有了先发优势!拜托,你能不能不要这么天真!先把眼下能养活自己的工作搞定再说吧,要不然还没到第5年,你就饿死了!我们完全可以先找一个容易就业且能高薪就业的技术方向去学习,然后工作之余有时间再去慢慢研究自己的兴趣。而不是为了一个虚无缥缈的兴趣,既浪费时间又花冤枉钱,再说谁能保证5年后这个技术一定会起来呢?谁知道5年后这个世界什么样呢?

2. 从找工作赚钱的角度考虑


  • 语言本身的流行度越高, 市场岗位越多, 这样就越容易找到工作;

  • 企业对候选人的硬件要求, 最低要求学历是专科、本科,还是硕士甚至更高的要求,看自己是否满足企业要求;

  • 从就业薪资高低来看,又可以分为刚入门的薪资和工作5-10年后的薪资;

  • 刚入门薪资当然越多越好,但更重要的是看这个行业的天花板,也就是干了5年甚至10年后的薪资。否则干了五年后感觉薪资增长不上去,到达天花板,再换语言就有点痛苦了。


3. 从发展空间考虑

我们选择了一个技术方向,还要考虑这个技术在公司职位的未来发展。哪个技术岗位,最容易成长为这个公司的CTO技术负责人?前端还是后端?

壹哥可以很负责地告诉你,绝大多数技术氛围浓厚的公司中,比如项目经理、架构师等职位都是从后端人员中挑选出来的。因为只有后端人员,才能把前端、后端、运维、产品、测试等技术方向都涵盖了,技术才是最全面的,才能对整个项目有着整体的认知和把控。

所以从现实的角度来考虑,我们选择一个技术方向,就要看这个技术方向能不能让你快速就业且高薪就业!学了一个技术找不到工作,技术名字再好听,听着再高大上有啥用?我们学技术肯定要选一个持久且有活力的技术,就好比要我们在“厨师”和“健身教练”之间选择一个行业,为了生存,明智的人都会做“厨师”而不是“健身教练”。为什么?自己好好思考一下。

. 薪资和岗位需求数量

为了使壹哥的论断更有说服力,下面我从某知名招聘网站搜索了各个语言工程师的平均薪资和企业岗位所需要的人员数量,仅供参考。

1. Java工程师

2. H5前端工程师

3. 大数据工程师

4. 物联网工程师

当然,以上搜索结果,只是这个招聘网站给出的数据,大家可以自己随便找个招聘网站,然后在这几个技术方向之间进行对比。

. 各种编程语言对比

上面的搜索结果,看着并不是很清楚明了,壹哥绘制了下面一个表格,把这几种技术给大家进行了清晰的对比。

所以,根据上面的搜索结果和这个表格,你可以考虑一下,自己到底适合哪个技术方向。比如某个童鞋想学物联网,但就是一个专科学历,说句实在话,壹哥劝你慎重,不是说你学不会,而是担心就业有难度。

. Java语言性价比最高

综合上面几点:我们可以得出一个结论,学习JAVA 语言的性价比是最高的!为什么?理由如下:

第一JAVA 语言从1995年发展到今天,已经经历了20多个年头,经久不衰,常年霸占编程语言排行榜的榜首。现在哥大型网站的后台几乎都使用 JAVA 作为服务器端开发语言,JAVA的生态系统是所有编程语言里最完善的。因为其生态完整,所以不会被取代!

比如:京东后台早期使用C#,之后改成了 JAVA;淘宝开始使用 PHP,后来改成了 JAVA;拼多多后台直接使用 JAVA等等。诸如此类高并发的电商平台几乎都一致地使用了JAVA,JAVA 也经受住了双11、双12、6.18 等购物高峰的考验,这足以说明 JAVA 语言是很靠谱的。

之前我的一个朋友,在长沙做 PHP 开发,工资12K,其实还算可以了,但后来还是改行去学习 JAVA 了。问他原因,说 PHP 做中小型的网站还是可以的,比较方便,但大型网站会出各种各样的问题,不稳定,相比而言,JAVA 稳定太多了(这算不算黑PHP)。其实PHP也曾经有过辉煌的历史,曾号称宇宙第一开发语言,但现在 PHP 已经跌落神坛了,没有了往日的风采。

第二:有些人可能会认为Python更简单,甚至不需要进行编译,但其实Java更易于阅读和理解。

我曾经做过一个实验,给一个编程的小白,去阅读没有注释的、功能相同的 Python 和 Java 代码,最后证明Java 代码更容易让初学者阅读和理解。

我在读大学的时候,刚开始学校学习的是 C 语言,当时也就是学了一点流程控制的东西,那时JAVA 在大学还没有涉及,等毕业时C语言基本都忘记了。但毕业后在工作中接触第一个Java的项目的时候,代码的基本意思我居然都是可以读懂的,所以我说Java代码更易于阅读和理解。再者,与C ++或C相比,Java中进行debug(调试)和问题解决也容易得多。

第三Java 是纯粹地面向对象的语言。面向对象编程是一项有用的技能,因为它可以很好地处理实际应用程序的复杂性。可以将很复杂的问题简单化。

第四Java 提供了丰富的类库(API)。使用这些API可以实现各种各样的功能,比如声音、图像处理等等,甚至可以做一些游戏(虽然这不是Java的强项)。当然这些功能其他语言也可以实现,但通常需要下载并安装一些插件或者是库文件,这对于初学者来说是一件很头疼的事。而Java的这些库,大多数在安装jdk的时候就安装好了,直接使用即可。

第五Java 有丰富的社区支持,无论你有什么样的问题,都可以在社区或者是论坛中找到你满意的答案,这些对于初学者来说是很重要的,不会因为一些问题解决不了而痛苦。

第六Java有一个内置的垃圾收集器(GC),对于Java的初学者来说,这是一个很大的优势。在开始学习编程时,处理内存管理是一件大事。在Java中,不需要像C、C++那样,自己申请和回收内存,而且容易出问题。

第七:Java 学习之后的应用领域众多,我们学习了Java之后,肯定是要面向就业的,那Java的就业方向可以说在各种语言里是最多的,可以说任何一个行业的软件开发都离不开Java,比如:


  • Web应用程序设计:可以从事网站应用程序开发,Java在网站开发领域占据了绝大部分,像是网页制作、网站维护等。

  • 大数据技术:主流大数据框架hadoop、spark、HBase等都离不开Java平台。

  • 可视化程序设计:从事软件企业桌面应用开发、数据库管理与应用开发等。

  • 移动应用开发设计:从事移动设备应用开发、嵌入式应用开发、移动网站开发等等。


当然有些朋友会说,Java比别的语言感觉难了一点,其实真的难吗?也就那么一点点而已!而且我们既然要学习一门技术,本身就应该挑一个稍微有难度的来学习,这样以后其他的语言对你来说就是小case了。

总不能上来选择一个很简单的,以后不还得吃二遍苦受二茬罪吗?比如先学H5,后学Java,学H5对Java几乎没有参考帮助价值。但如果先学Java后学H5,那帮助价值就大了,因为现在H5最新的Javascript语法,都在向Java的语法风格看齐(面向对象),所以你仔细体会吧。就好比你要学武术,是想先学“少林易筋经”还是想先学“五郎八卦棍”?自己悟哦。

五. 总结

基于上述理由,这就是为什么我认为初学者应该首先学习Java而不是其他任何语言的一些原因。当然有些人会认为我是有偏见的,因为我是Java程序员,但其实壹哥也熟悉Python、Javascript、C、C#等语言。根据自己和身边很多同事的那些开发经验中,我可以负责地说,Java无疑是对初学者来说最好的编程语言。

当然如果我们只学习Java语言,还不足以胜任程序员这个职业。作为一个合格的程序员,你必须了解很多东西,例如数据结构、算法、内存管理、脚本、数据库等,其实在现在的Java编程体系里,这些内容都会涵盖到。

另外,当你熟悉Java之后,完全可以继续熟悉其他的语言,如Javascript、Python等,这个学习过程就会轻松很多,因为你已经有了Java语言的基础。要想在编程事业中取得成功,我们就需要不断学习,这是编程领域最大的挑战。最后,如果你喜欢编程,并且喜欢挑战自己,那就请做好准备,不断地接受新的知识,这个行业是一个公平的行业,你付出了正确的努力,回报你的就是高薪


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • bat大牛带你深度剖析android 十大开源框架_请收好!5大领域,21个必知的机器学习开源工具...
    全文共3744字,预计学习时长7分钟本文将介绍21个你可能没使用过的机器学习开源工具。每个开源工具都为数据科学家处理数据库提供了不同角度。本文将重点介绍五种机器学习的 ... [详细]
  • Yarn已过时!Kubeflow实现机器学习调度平台才是未来
    来源:AI前线本文约6700字,建议阅读10分钟。本文分析了建设分布式训练平台的过程中的痛点所在,为你介绍Kubeflow与其核心组件及其 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
author-avatar
dengdaidanlan_738_260
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有