软件技术领域就业大纲(3)——编程语言

前言

这是软件技术领域就业大纲系列文章的第3篇,从Java、Go、C/C++、Android&iOS、Python等编程语言的角度,介绍一下软件技术领域的就业情况。

Java

后端服务器开发、终端上的Android开发。

这个是市场上招聘岗位最多的技术栈,从银行、运营商到软件公司、互联网大厂,从世界500强到几个人的创业公司,绝大多数的后端开发岗位都是Java。

但也是我最不想说的,实在是没什么可讲。

GO

互联网服务

国内在Go的使用上,主要还是后端服务器开发。

因为Go语言为高并发而生,特别适合互联网这种大流量高并发的业务场景。国内一些头部互联网公司,像字节、知乎、B站据说用Go比较多。

云计算

因为DevOps生态中占据垄断地位的Docker、K8s,还有prometheus这样监控系统,都是使用Go语言开发,所以在云计算技术体系中,往往大量使用Go语言。

其它

虽然也有前端、游戏的使用场景,但国内还很少遇到。

Java 还是 Go?

对于想走后端开发路线的同学,到底是学习Java还是Go呢?个人经验判断如下:

1、当一个人学校学历、实践能力等各方面实力比较强的时候,建议学Java。

因为Java是主流的后端开发语言,市场是供、需都大,一个人的公司、项目、职级、工作年限确定之后,市场上的猎头、招聘单位就能计算出这个人的价格,那些各方面实力过硬的人是不怕被计算的。

2、当一个人背景很差的时候,如,跨行转码、学校很差等,建议学Java。

对这部分人来说,找到工作是最重要的,中国市场上海量中小企业基于云服务和Java技术体系来构建自己公司的系统,学Java找到工作是最容易的。

3、当一个人综合水平中等偏上,想剑走偏锋,博一博那些需要跳一跳脚才能够到的公司时,建议学Go。

这个市场供、需都小,双方匹配有一定的随机性。需求是客观存在的,但第一梯队的人才都去卷Java了,第一梯队的公司从第二梯队的人里面选Go概率就比较高了。

这个逻辑跟下面要讲到的Android、iOS开发面临的情况很相似。

C/C++

高性能服务器开发

C++的运行效率高、开发效率低,在大型复杂工程开发中的生态完善度弱,所以,只有在对高性能有特别高需求场景下才会使用它做服务端开发,比如,处理音视频流的多媒体服务器、游戏服务器等。

网络应用

Nginx、防火墙、流量分析、监控、负载均衡、路由器、基站等,因为涉及到信号、流量的处理,且对实时性要求极高,往往都是C/C++开发。

大计算量软件

这里主要涉及到那些大量计算、图形渲染等工作的软件。

高性能的存储服务,比如,数据库存储引擎。

工业软件中的研发设计类,如,EDA、CAD、CAE、Matlab等。

搜索、推荐、广告场景,因为对实时性有极高的需求,有大量C++的开发商场。

多媒体&排版

图形、图像引擎类,比如,OpenCV,OpenGL、OpenCL、Unity、Cocos2DX、Unreal、Skia、QT等引擎,PhotoShop等大型工具软件。

多媒体处理类软件,如,OpenCore引擎、各类播放器、直播软件、短视频(抖音)、视频处理软件(Premiere)等,因为涉及到音视频多媒体流的处理,处理数据量大、对实时性要求高,往往使用C++开发。

排版布局类的,如,Office和WPS系列,Chrome、Sofari浏览器。

游戏终端

不管是PC端还是移动端,对游戏来说最重要的就是性能、体验,C++的运行效率高,十分合适开发游戏。

对于移动端游戏来说,Android、iOS两大平台的开发语言不同,厂商为了降本提效不可能完全做两套,就往往使用C++开发引擎、游戏核心,然后在两个平台上通过应用层加壳的方式来做。

操作系统相关

不管Windwos、Linux、OSX、Android,都大量使用C++。

围绕着操作系统的驱动开发,编译器、解释器、IDE等。

芯片配套体系,DSP二次开发、CUDA工具包等。

嵌入式

单片机、机器人等大量的终端设备上,存储、计算等可用资源很少,这时就需要C/C++这类运行效率特别高的语言。

金融软件

高频交易系统中,我的下单速度如果能比别人快几十毫秒,就会有大量的利润。股票行情类软件中,需要实时处理大量数据。

恒生、金证这类金融软件厂商,市场上做量化交易的私募公司,做交易终端产品的公司,都会有大量的C++需求。

终端安全领域

当考虑到源码级的终端安全防护时,Java、Python之类的语言是没有保密性可言的。

做加解密、安全认证之类的软件,自身源码逻辑需要极端保密的软件,往往使用C++实现。

终端安全需要定义好切面、收集数据,并以此制定防护策略,这些切面也需要C/C++开发。

就业方面来说,市场上的安全类公司,安恒、安奇信、绿盟、360等,都会大量招聘C++开发工程师。

汽车生态

三电把汽车变成了一个大号手机,汽车的软件化、智能化成为软件技术投入的重点领域,AUTOSAR、高性能计算平台、自动驾驶、智能座舱等,都在大量使用C++开发。

算法实现

算法是计算密集型场景,尤其手机、汽车、机器人等各类终端上的算法,非C++莫属。如果走算法方向,C++是必选。

综上,C++的适配领域是杂的,语言本身只是基础,工作前3~5年基本就到顶了,再往后发展如何主要看所从事领域在市场上的发展情况了。

Android&iOS

这两个平台的开发岗位在不到十年的时间内,经历了兴起、兴盛、衰落、低飞的全过程。

16年之后,市场上Android、iOS这些移动端开发供大于求,很多应届生慢慢不学了。但市场上对于移动端开发的需求虽然少了,但还是持续会有,基本会维持在一个比较低的水位。从概率上讲,那些愿意剑走偏锋学Android、iOS的人反而更容易获得大厂的offer。

从就业角度来说,如果是单纯进大厂,现在学习这两个平台的开发反而有优势。

至于远期发展,看似移动端领域狭窄,技术门槛和天花板低,但即使是市场供给充沛的Java,大头兵们不也是35岁就失业么。

移动端虽然市场整体需求小了,但除了主流的互联网公司依然会有需求之外,很是有很多领域也持续有需求的,比如:

服务人员,如,美团、饿了么、滴滴这类平台企业的供给端,商家、外卖员、快递员、司机使用的App、POS机、把枪等。

非手机智能终端设备,如,快递柜、电视机、零售机等等。

控制类App,如,新能源车主App,机器人等智能家居类设备的控制App。

移动端的开发跟随手机的发展而发展,如果随着5G、AI等底层技术的更新,一个新的消费级终端出现时,如,AR/VR等,移动端会再次兴盛起来。

Python

Python虽然上手极其容易,在大型复杂软件工程方面是有缺陷,但被广泛用于算法开发、数据分析等领域,可以说,它是一门牛逼的工具语言,但不是牛逼的工程语言。

AI&数据&计算

AI领域,主流的AI Infra,如,PyTorch、Caffe、TensorFlow基本都支持Python。还有很多算法库,如,Scikit-learn、XGBoost、LightGBM、Keras、Eli5、SciPy,以及NL领域的NLTK、SpaCy等。

科学计算,如,NumPy、Theano等。

数据分析,如,Matplotlib、Pandas等。

基于Python的这些特性,在算法和数据领域,Python成为最常用的开发语言之一。

脚本

因为灵活性很好,很多时候会拿来编写脚本,比如:

安全领域内,一些在工程方面要求不高,但又与算法模型联接紧密的地方,用Python实现比较多。另外,一些自动化地扫描工具,也会使用Python。

至于爬虫,纯粹是变化频率,因为对方变化一下,爬虫就得调整,不过工程复杂度低,特别适合Python。

由上面的分析也可以看出,指望着Python去应聘专业壁垒高的软件工程师是很难的,它所使用的场景,对于软件工程上的要求其实都并不高。因此,不建议走软件工程师方向的人花太多精力在这个语言上面。

前端技术栈

主要包括JavaScript、HTML、CSS等。

只要一个软件设计出来是跟人打交道的,就需要有界面。前端因为跨平台、开发成本低的特点,不管是PC网页、手机H5、微信小程序,还是五花八门的终端电子设备,只要配个浏览器内核,再开一套Hybridge API,就可以低成本又高效地开发前端页面,同时还能尽情调用终端设备的一切能力。

前端开发领域,除了基础技术理论、软件工程师理论之外,对找工作来说最重要的就是框架体系了。

目前市场上最主流的两大框架:React、Vue。React在互联网大厂使用的最多,而Vue用于很多中小企业,toB/G的项目中。

如果大家的就业目标是互联网大厂,最好走React路线。

其它

国内市场上,除了上面这些主流的语言之外,还有其它很多非主流的,如,C#、PHP、VB、Delphi、Perl、Ruby、Rust、Scala等,但我已经没有分享的欲望了。如果想走软件技术路线,不要轻易进入那些非主流领域。因为技术学会了是要卖的,小众市场里面生意会很难做,且不说待遇高低,合适的坑都很难找到。

#Java##C++##Go##Python##iOS#
建议收藏系列 文章被收录于专栏

该系列文章都是作者花费大量业余时间整理、分享出来的,建议软件技术方向的同学收藏、阅读。

全部评论
总结:Java市场大,岗位多,技术深度够,领域单一(经验复用性强);C/C++高性能,领域多,职业发展与领域强相关; 如果想要成为架构师,选Java、C/C++、Go,Python、Android&IOS和前端因为自身天生的限制,很难一直往上走到架构师、CTO、技术专家这类岗位 不过嘛,对于绝大多数人来说,无论选哪个方向都成不了架构师级别,还是选钱多的最重要
6 回复 分享
发布于 2023-08-12 02:25 河北
佬,本科生走c++数据库内核开发或者大模型可以不,个人比较喜欢,但不想考研,谢谢佬的分享
1 回复 分享
发布于 2023-10-07 02:59 湖北
Java转C语言,同事里还有Python转C的,C++转C的,估计也有GO转C的,JS转C的…估计是因为市场上学C的真的少,所以只好招其他语言的人转
点赞 回复 分享
发布于 2023-08-12 02:19 河北

相关推荐

快手 广告投放部门 总包待遇加上签字费快手高5w左右
点赞 评论 收藏
分享
评论
22
45
分享
牛客网
牛客企业服务