最近有很多粉丝来问我,“壹哥,我想从事软件开发,但市面上有太多的编程语言和技术方向,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语言的基础。要想在编程事业中取得成功,我们就需要不断学习,这是编程领域最大的挑战。最后,如果你喜欢编程,并且喜欢挑战自己,那就请做好准备,不断地接受新的知识,这个行业是一个公平的行业,你付出了正确的努力,回报你的就是高薪!