@程序员,你该如何选择技术方向?

Wesley13
• 阅读 819

👆  “ 沉默王二 ” ,你值得星标的 公众号 @程序员,你该如何选择技术方向?

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

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

精彩回顾:

你为什么成为一名程序员?

窝在二线城市很难受,要杀回一线城市重造吗?

@程序员,这四个学习建议值得收藏

< END >

PS:原创不易,喜欢就点个在看 or 转发朋友圈,这将是我最强的写作动力。如果你觉得我写的文章对你有帮助,也蛮有趣的,就赏个 1 元鼓励一下,让我知道你一直在陪伴着我。

@程序员,你该如何选择技术方向?

沉默王二

微信扫描二维码,关注我的公众号

本文分享自微信公众号 - 沉默王二(cmower)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这