01、困惑的提问

昨天,读者小何在微信上问了我这样一个问题:

二哥,我刚参加工作一年,感觉什么也不精通。大学学的是 Java,但这一年来 Python 特别火,有几个转到 Python
的同学工资竟然比我高。我是不是也应该转呢?

类似这样的问题还有一些,比如说阿坚:“我现在大一,学的是 C++,听说毕业后不太好找工作,二哥什么好的建议吗?”

对于初入职场或者在校的同学来说,选择哪一门语言意味着未来的收益(挣到的钱)可能会有显著的不同。

况且技术的更新迭代实在是太快了。你完全预料不到!如果选择错了,付出的代价也是沉重的。

不知道你有没有这种感觉啊,前几年盛行的安卓,好像一下子就凉透了。背后的原因也很简单,就是微信公众号和小程序的推而广之,导致 APP 的需求量大幅降低。

就在去年这个时候,我还特意买了几本安卓的书,学习了一下,在 CSDN
上顺带分享了几篇学习笔记,阅读量还不错。但最近听朋友说,他在公号上推安卓方面的文章时,阅读量真的是惨不忍睹啊。

02、技术方向


从大的层面来看,技术方向可以分为两种:前端和后端。计算机“文盲”经常性会把后端误认为是“后台”(网站管理后台)——做外包这些年,我遇到过不少这样的甲方,每次我都需要耐心地给他们解释好一会儿。

那接下来,我就要开始解释了(开个玩笑)。我们来谈谈前端和后端的一些趋势吧,大家可以作为参考。

1)前端


前端工程师近两年来非常吃香啊,尤其是前端前面加了一个“大”字之后,也就是现在非常流行的“大前端”,就好像“大数据”一样。(借此机会,你可以体会一下“大哥”和“哥”之间的差别有多大)

我想,前端技术里面最不会过时的就是 HTML + CSS + JavaScript
了吧。为什么这么说呢?因为它们是前端开发的基础,并且标准也在逐年更新。如果你用开发者模式观察一下的话,你会发现,所有网站的源代码里面都少不了这老三样。

排名第二的应该是 Node.js,它逐渐成为了前端开发的基础技术,正在变得越来越重要。上个月,我在使用 Jekyll + GitHub Pages
配置个人网站的时,它就要求我要先安装 Node.js 环境(由此可见吧)。

排名第三的应该是 Vue.js / Angular / React.js,它们在 2018 年的时候已经成为趋势,2019 年也没有呈现出任何的颓势。尤其是
Vue.js,其作者尤雨溪因为长得帅,成为了广大前端程序员心目中的大神(偶像)。

排名第四的应该是 Stencil,其官方的介绍如下:

Stencil is a toolchain for building reusable, scalable Design Systems.
Generate small, blazing fast, and 100% standards based Web Components that run
in every browser.

我先蹩脚地翻译一下,大家将就看看。Stencil 是一个工具链,用于构建可重用的、可扩展的设计系统。可以生成小巧的、快速的、 100% 的基于标准的 Web
组件,关键的是可以在所有的浏览器中运行。

这就厉害了,不需要考虑浏览器的兼容性,还能够和任何主流的框架(Vue.js / Angular / React.js)搭配使用。

排名第五的应该是 PWA(Progressive Web Apps),渐进式 Web
应用程序,快速、可靠,还能够让用户感觉像原生应用一样,体验非常棒。Google 提出的概念,应该不会差。

好了,前端就说这五个吧(排名仅供参考啊)。

2)后端

说到后端,可能会有人开玩笑说:“主流不一直是 PHP 吗?”虽然说这是一句玩笑话,但是,我并不怎么敢反驳。

从读者群体里了解一下,洛阳做 PHP 的程序员真的蛮多的,尽管开源 PHP 的官方团队已经解散了。不管怎样,一个铁打的事实是,PHP 语言在过去的 20
年里给许许多多的人带去了工作机会。

在我们继续聊下去之前,请允许我骄傲地宣称一件事:我是一名 Java 程序员。Java
到底有多牛逼,已经不需要我再吹了,反正我已经靠它吃饭了许多年,未来还要再吃几年。

(虽然不用吹,但多少得说几句)

Java 是一门以 Class 为单位,高度面向对象的高级编程语言。Java 的设计初衷是“写一次代码,在哪里都可以用” 。Java
可以完成任何规模的任务,所以它是很多公司在做商业级项目的时候的首选。

Jame Gosling 在 1995 年的时候设计了Java,似乎 Java 一出生就有做老大的气质。事实上,确实做了好多好多年。

那 Python 呢?

Python 是一门拥有简洁语法的高级编程语言。一位名叫 Guido van Rossum 的荷兰大佬在 1991 年就设计了它。Rossum 设计
Python 的初衷是为了让代码读起来更轻松,并且让程序员写更少的代码。

曾经有一位 Python 的粉丝写过一首名为 The Zen of Python (Python 之禅)的赞美诗,我们来欣赏一下。

优美胜于丑陋
明了胜于晦涩
简洁胜于复杂
复杂胜于凌乱
扁平胜于嵌套
间隔胜于紧凑
可读性很重要

写得很不错吧?我觉得这位粉丝太有才了。

当然了,Python 火的原因可不是因为 Python 的优雅,而是人工智能和数据分析。涉及机器学习、深度学习、神经网络这些高大上的领域,绝对避不开
Python。所以可想而知嘛。

限于篇幅原因,后端技术我们就到此为止。



03、到底怎么选

说了这么多,关键的问题来了,到底选择什么技术方向呢?

前端程序员已经很明确了,按照我说的趋势去选就没错了。后端程序员呢?来看一份榜单吧,数据来源于可靠的 TIOBE。



看完这张榜单,我相信你心里应该也有数了,对不对?

比如说小何,没必要纠结是选择 Java 还是 Python,这两门语言现在霸占了状元和探花的位置。据我所知,Java 工程师和 Python
工程师的薪资待遇并没有明显的差别。如果不打算往人工智能和数据分析方向转的话,抱紧 Java 这个大腿就行了。

就未来的发展前景来看,Java 也并没有呈现出任何的颓势。如果你有一部安卓手机,几乎所有 App 都是用 Java
写的。大型网站的后端,比如说淘宝、京东也都主要是用 Java 开发的。大型的企业级应用,比如 CRM 系统、ERP 系统也大多数是用 Java
开发的。越来越火的大数据,其主流框架 Hadoop 的开发语言也是 Java。

不过,从增长的百分比来看,Python 的增幅最大,这说明 Python 的潜力十足。如果时间充足的话,可以自学,以备后患。反正我已经准备学习了。

至于阿坚同学,也没必要过于忧虑,三年毕业后还不至于找不到工作。毕竟 C++ 的底蕴还是在的。况且,如果把 C++ 吃透的话,学习其他语言也完全不在话下。

04、最后的忠告

选择技术方向,选择一门语言,本质上都是一种投资。

在日新月异的科技时代,没有人敢打包票说未来几年后一定流行什么,不流行什么。还是那句话,技术更新迭代太快了!

那怎么让投资收益最大化呢?



说实话,我也没有定论(皮一下)。

A:选择年轻的语言(技术方向),意味着风险越大,因为它就像流星一样,灿烂,但易逝。有句俗话,你也听过:“风险越大,回报也许也大”。

B:选择市场已经认可的语言,意味着越稳定,毕竟活得越久越需要能耐。

C:把浮躁的心安定下来,让时间来证明一切。专注于你当下选择的语言,深耕的同时注意抬头看一看就行了。

好了,我说完了我的看法,说说你的吧?