Java程序员为什么不能成功转型机器学习岗?

在大数据时代(2010年左右开始),Java程序员很吃香,因为他们有着无限的发展空间,我用下面几个例子来告诉大家当年Java程序员为什么火:

  • 10年左右能进阿里很光荣,而阿里的主流语言是Java
  • 当时最火的大数据工具Hadoop、Spark等都是Java写的,中级大数据工程师要价可以在五六十万(无视学历)
  • 当时自然语言处理(NLP)的核心是分词(IK分词、HanLP)、搜索索引(Lucene/Solr/ES)、文本分类、主题提取等,当时这些的主流技术栈都是Java系列,且由于C++难用、Python效率低的那个问题,这些组件至今为止还是以Java系为主流,只不过成熟了(虽然普及,但是不火了)
  • 当时机器学习的主流(文本类)是数据挖掘(尤其是主题模型LDA),当时Python类机器学习库没有普及,而且在Windows难以安装,所以大家很多都选择了Java的weka、Scala的mllib以及很多个人实现的LDA。
  • Android的出现
  • 2010年左右,互联网创业大潮,无论是Web、Android还是IOS,前端还是后端,Java在业务系统的覆盖之广十分恐怖。

然而在2019年,Java程序员地位骤降,逐渐沦为搬砖工(蓝领)。为什么这么说?在10年左右,Java程序员的发展道路是什么?可以用下面三条总结:

  • 对于真的不喜欢钻研技术的,可以变为管理、产品、业务人员(这个至今也是可行的,因为业务是王道)
  • 对于喜欢啃框架源码的程序员,迟早也会成为架构师的
  • 对于喜欢啃分词器、Lucene等源码的程序员,迟早会拿下算法负责人这个职务

很多Java程序员把自己的前途赌在了后面两条路上,并且,通过自己的努力,的确是尝到了很多甜头。例如当时有一些学历很差的架构师(例如专科毕业),也可以在创业公司里求得一份四五十万年薪而且很体面的架构/算法工程师。许多211 985高校的硕士也纷纷投了Java架构师的简历,毕竟当时对于人们来说,大数据就是未来(而且当时的算法,往往是在大数据里用一点而已)。

当时学校里有很大一波认真读书但是代码能力较弱的学生,处于鄙视链的底端,他们只会写论文、写写Matlab,在求职时,往往需要拿出Java教程学一学基础、学一学数据库。那些读书很弱但Java很熟的同学往往会以居高临下的心态告诉他们“这些东西你现在学来不及了,早让你看Java/Hadoop”。

从15、16年左右,这些情况开始骤变:

  • Java工作依然好找,而且报酬可观,但进去后才发现,什么叫参差不齐。硕士毕业生和专科生同一岗位,是个人都能熟练使用各种大数据组件、而且很多都读过源码,也就是说,你和别的Java程序员很难拉开差距(其实是因为各种组件普及了,门槛也低了),很难说脱颖而出当上架构师或算法工程师。
  • 另一方面(这是最重要的),算法岗不乱招人了,一般只招对口的硕士博士,而且要求论文,代码能力基本不看。这样下来,鄙视链就倒过来了,当年居高临下的Java工程师只能老老实实搬砖(虽然待遇还行),而老老实实读书但是代码一般的学算法的那帮人崛起了。进去就是高级岗位,而且身边都是各种海归名校,前途和资源都相当可观。
  • 最关键是,算法工程师很“体面”(白领),而Java工程师很脏(蓝领),为什么,因为一个学院可能就那么十个人能进入这个岗位,而其他所有的都是Java搬砖工。这时候哪怕你Java写的再厉害,你怎么提现出和别人的差距。

所以后来出现大批的Java架构师想转行算法工程师,然而实施情况是,大部分都失败了,例如:

  • 许多Java工程师报班,线下和线上的,例如7月。但凡是个职业读过机器学习硕士的人都知道,你培训班学到的连皮毛都不算,就好比学了个System.out.println就出来说自己会Java一样的。真正核心的东西,都是通过写论文发论文锻炼学来的,所以算法工程师根本不会要你培训班出来的。
  • 一些Java工程师自学机器学习/深度学习框架,比如Deeplearning4j、Mxnet、Weka等,包括刚才提到的分词、LDA工具等,希望在技术层面上能够胜出一筹。然而问题来了,现在这些框架的使用门槛太低了,你那帮只会读书不会写代码的朋友花了一周也学会了。
  • 学校里现在很多学生提前一年也开始学算法,读了几本机器学习的书,然而一到就业时,面试官说你论文几篇?这些公式的细节是什么?你有专门做过这个么?现在学校里,尤其是硕士生,在招聘初期都是冲着算法岗位去的,但是最后可能只会剩下10个人找到机器学习算法岗,因为不够专业。
  • 不管是学生,高校老师很多也面临这个问题。其实我国高校很多计算机系老师都是以工程为主,这几年形式变化使得他们也很难再在机器学习领域继续混下去。

所以Java程序员们,老老实实做好自己能做的工作吧,不要妄想通过报班自学什么的进入近期学习岗了。你们能做的和机器学习沾边的,可能就是应用了,这个前途也很大。能把现成的算法用到一个牛逼的地方,也是前途无量的。

这篇文章不是为了喷Java程序员,而是告诉你们一个实际的情况。

转载于:https://my.oschina.net/u/4075665/blog/3007923

你可能感兴趣的:(Java程序员为什么不能成功转型机器学习岗?)