围绕车辆人职业生涯的讨论,比往年时侯来得更猛烈些。有深耕细作、精益求精的传统荣光固守派;有从头再来,回炉重造的风口浪尖追逐派;有左顾右盼、瞻前顾后的十字路口迟疑派。车辆人群体正在经历青春反叛期,但毕竟无论怎么选择,绝大多数人共同迈向的还是“不如狗”的中年。
风口浪尖追逐派支持者的车辆人,选择的变革之路五花八门,转码便是其中的一个火爆方向。对于车辆人而言,转岗热门赛道的产品、项目、测试等岗位门槛稍低,这也成为了绝大部份人改行的首选。而对于代码开发这一领域,因为绝大部份车辆人结业于机械、车辆、材料等专业,学院期间通常只水过一个C语言,致使计算机领域的知识比较薄弱。隔行如隔山,代码开发对于大部份车辆人仍然披着神秘的面纱,有一种秦渭河上迷蒙的美感。
而在代码开发的细分领域,Java开发需求较大,工资天花板较高,在互联网公司处于十分重要的地位。同时伴随着主机厂数字化变革的激增热情,一大批数字化新平台的建设也被列入主机厂的下一个两年规划,骤然而至的便是大幅下降的主机厂服务平台端或TSP平台的开发需求。可以预见的是,Java开发在收割了互联网红利以后,必定在主机厂收割第二波茴香。
本文作者是车辆人中风口浪尖追逐派的一位实践者,并且支持、尊重任何一派的观点、见解,看好任何一派的前途,“钱”途。本文作者通过总结自己零基础转码车联网项目平台端Java开发过程中的经验教训,为有相像看法的同道中人提供一条可借鉴的学习之路。故在职业变革规划第二期,作者就围绕Java开发职位概况、薪资水平、知识地图等方面来做相关分享。
职位概况
Java这个词应当镌刻在绝大多数90后的脑海中,在那种塞班系统一统江湖的年代,当你打开摩托罗拉手机上自带的小游戏,游戏启动过程的第一个界面就是Java语言的logo。
随着塞班系统的衰落,Java语言却没有一起销声匿迹,反倒因为自身的众多优势,逐步在面向对象的编程语言中站稳双脚。与其它同类编程语言相比,Java语言因为JVM(JavaVirtualMachine,Java虚拟机)的存在,具有愈发良好的跨平台可移植性。同时奇特的显存管理机制(除去了头文件、指针、结构、联合等内容),还可以极大降低错误发生的概率。加之特别简单易学的特性,使其成长为特别适宜小型软件设计和开发的一门语言。
Java语言目前在网站,游戏,安卓应用等开发领域有着广泛的应用。且随着智能手机以及物联网设备的大面积普及,我们每位人的生活也都与Java息息相关。促销季你在某宝,某东上的纵情下单;下班捉鱼时在股票金融市场的高抛建仓;认真工作时在各种管理系统的大肆点击鸟哥的linux私房菜基础学习篇 pdf,背后常常都是一条条Java代码的辛劳繁忙。
Java语言应用最广泛的领域还是企业级应用的开发,即好多人理解的服务端开发,包括当下热度激增的大数据工程。Java语言的企业级应用,称为JavaEE如何安装LINUX,是一个由JVM+API+大规模+多层的+可扩充的+可靠+安全+网路组成的应用程序。对于没有计算机经验的人而言,这个解释可能不太容易理解,下边以一个简单的事例说明。
在互联网电商的管理系统中,一个典型的B/S(Browser/Server,浏览器/服务器)构架系统可以用右图简单表示。我们每位用户都须要通过笔记本浏览器/APP等方法访问电商网站linux cp,实现在该电商平台商品搜索、下单、支付、退货等功能。浏览器/APP是以网页或APP的方式展示内容,这一块称为表示层。表示层通过插口将用户恳求传递至服务器,由业务服务器进行运算处理。业务服务器针对表示层传来的指令进行判定,如对用户下单这一操作,业务服务器须要判定支付是否成功,因而进行后续订单数据的流转等操作,这部份内容属于应用层。应用层的服务通过指令操作数据层的数据库,查询或更改各种数据,如新增用户的订单信息,商品库存的增减等。
Java语言开发工程师的工作,主要便是完成类似需求,实现上文所述的企业级应用,或是对已有的系统二次开发。工作涉及需求评审、PRD评审、技术方案评审、测试用例评审等等,并依照产品给出的方案完成后续服务端的开发。
工资水平
如不局限于某一业务领域,右图为某急聘网站广州互联网中厂(500-1000人)1-3年经验Java工程师的工资水平。相较于车辆传统业务工程师而言,这个工资水平具有较大的优势。
右图为职友集上2021年Java开发工程师的薪资统计。依照此数据,平均薪资在20K,75%的Java开发工程师年薪在15K以上,50%的工程师年薪在20K以上。按照笔者与朋友和同行们的私下边交流情况来看,这个统计数据可效度还是比较高。
而在车辆行业,尤其是新五化方向,Java开发方向的工作机会和薪资也在持续下降,新势力们对于Java开发的需求相较于传统主机厂更大。右图为腹部新势力对Java开发岗位的一个工资情况。
知识地图
Java开发,除了须要把握编程语言本身,还须要对计算机领域的系统知识有一定程度的把握。这种系统知识可以帮助你从一个Java中级开发工程师快速升级为Java中级开发工程师,同时有助于构建你在代码开发领域再度转岗的能力。汽车,机械,生化等专业的车辆工程师,通常会缺少计算机软硬件和算法的基础知识,改行Java开发所需的努力相较其它专业势必须要付出更大的努力。
Java开发的知识地图在网路峰会下层出不穷,作者改行之初也是看的云里雾里,网上课程更是眼花缭乱让人难以选购。通过上图急聘需求中我们可以了解到车辆行业对于Java开发工程师的关键技能需求,涉及到Spring、Linux、数据库、容器等内容。笔者按照自己的改行经验整理了如下的学习路径,并推荐了相关自己早已摸烂的书籍。其实,一个好的网课或则线下课程会对技术能力的提升起到事半功倍的作用。
Step1:计算机基础
学习内容:计算机组成原理、操作系统、计算机网路、数据结构+算法、密码学
时间:3M-6M
不夸张的说这几门学科在CS(ComputerScience,计算机科学)的作用就好象张无忌修练的《九阳神功》,是提高心法武学的独门秘技。
计算机组成原理:主要用于了解计算机的硬件部份。作为Java开发,你即便不用晓得CPU每一个电路是如何运行的。但当懂得寄存器、缓存、内存、外存这种概念时,代码的书写思维将有很大提高。在设计小型软件或系统时,常常应用到空间换时间,时间换空间,这种都须要强悍的计算机硬件基础来支撑。可以说,只有懂计算机组成原理,能够设计出更稳健、响应速率更快的软件系统。
操作系统:主要用于了解计算机的软件部份。操作系统介绍的是资源的调度和分配。假如对操作系统调度原理、时间片等概念没有足够深刻的理解,是不可能做好服务端开发的。尤其遇见高并发、多线程导致的bug时,假若对操作系统没有深入理解,很难解决。
计算机网路:当前软件开发基本都是B/S,C/S,P2P的构架,建立这种系统的一大基础就是计算机网路,须要理解各网路合同的OSI分层,以及各层的合同和实现方法。
数据结构+算法:正如N.Wirth院士所说“数据结构+算法=程序”。遇见一个实际问题,须要充分借助所学的数据结构,将数据及其之间的关系有效地储存在计算机之中,之后选择合适的算法策略,并用程序高效实现。对于企业级应用而言,大量指数级时间复杂度的查询句子会是一个恶梦。对于其它偏向底层和实时性的应拿来说,数据结构和算法更为重要。
密码学:密码学是网路安全、信息安全、区块链等产品的基础,常见的非对称加密、对称加密、散列函数等都属于密码学范畴。现今随着信息安全在各领域都遭到了前所未有的注重,作为服务端的开发,方案中的信息安全部份同样是系统设计的重点。
推荐书籍
图解系列:不仅各学院出版的教材之外,推荐图解系列丛刊鸟哥的linux私房菜基础学习篇 pdf,由浅入深,以诙谐幽默的形式院士网路合同、硬件、密码学等技术,比较适宜本员工作本就繁忙的车辆人。
算法:特别精典,但对于时间并不宽裕的男子伴可暂不作要求。
Step2:Linux、C/C++、数据库
时间:6M
Linux:服务端使用的Linux发行版本通常为CentOS,Java开发须要了解Linux系统的文件结构,权限,基本操作,主要拿来布署开发环境,查看日志,验证bug等工作。
C/C++:Java本身也是从C++衍生而得,通过学习C/C++,对面向过程的语言和面向对象的语言有一个初步的了解。
数据库:特别重要,互联网最具价值的是数据,任何编程语言都须要解决数据储存问题,而数据储存的关键技术是数据库。MySQL和Oracle都是广受企业欢迎的数据库管理系统。Java程序和数据库通讯的最常见技术是JDBC、Druid和C3P0。学习这种数据库技术后,可以把握复杂业务表结构设计规范、SQL句子的编撰。同时针对高并发查询的场景,Java开发工程师们还须要了解数据库的分库分表。
推荐书籍
鸟哥的Linux私房菜:一本特别畅销的Linux入门书籍,由日本的VBird高手编撰,作者也并非计算机科班而是环境专业出身,比较适宜零基础的朋友。这本书的第一章会从笔记本结构开始讲起,不须要了解任何编程语言也能读完整本书。编程对于运维要求更高,Jave开发工程师仅须要才能读懂即可。
C++PrimerPlus:笔者在刚立下改行flag时,初学C语言和C++用的是大专旧书堆里找出的谭浩强系列,比较隐晦,不好理解。C++PrimerPlus书籍同时包括了C和C++的内容,配套练习建立,对各技术细节写得比较透彻。学透须要耗费不少时间,但还是值得的。
数据库系统概念:数据库系统方面的精典教材之一,其内容由浅入深,主要介绍数据库系统的基本概念,包括数据库设计、数据库语言和系统实现。
MySQL8Cookbook&高性能MySQL:在拥有数据库基础以后,奔向现今最流行的关系型数据库MySQL的学习。MySQL8Cookbook偏向于应用,对于SQL的DML和DDL、性能调优、日志等讲解深入浅出。而高性能MySQL内容涵括MySQL的构架和历史,基准测试和性能分析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩充性,以及云端的MySQL和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。
Redis:Redis作为非关系型数据库的一个代表,须要熟练应用并把握核心原理。
Step3:Java,Spring,后端
时间:3M-6M
Java重点知识:jdk,数据类型、流程控制,面向对象、多态,链表、集合、异常处理,IO流、String/StringBuffer/StringBuilder、线程、并发、反射、泛型。
Spring重点:SpringMVC,SpringBoot+Mybatis和SpringCloud。理解Spring框架,涉及AOP和IOC、bean的作用域与生命周期、SpringMVC工作原理等。注重学习SpringBoot的使用和内部原理,包含微服务概念、配置文件、日志框架的使用、web开发等。Mybatis主要学习配置文件编撰、动态SQL、MyBatis缓存机制、MyBatis-Spring整合等。Springcloud各组件中服务发觉注册、消息队列、分布式管理等。
后端基础知识:HTML、CSS、JS、jQuery框架、Servlet程序、Filter过滤器、Listener窃听器、JSP页面、EL表达式、JSTL标签库、Cookie技术、Session会话、JSON使用、Ajax恳求等等......当前的技术构架是前后端分离的方法,只有懂前后端的交互方法的,能够更顺利和后端工程师沟通,同时也就能更好的掌握整体的技术构架。
推荐书籍
疯狂Java课件:对于Java基础句型、知识点讲解细致,但AWT、Swing、JavaGUI等过时内容的篇幅也不少。
EffectiveJava:巨作,涉及Java的设计原则,Java进阶必备,强烈推荐。
Spring:这三本是笔者学习Spring和微服务的书籍,有原理讲解,浅显易懂。
Step4:云原生
时间:1M
当前的云服务流行云原生(CloudNative),意为生于云,长于云,一款应用在设计之初就考虑到怎样在云上以最佳方法运行,能以最短路径上云,充分发挥云的优势。技术主要由微服务+DevOps+持续交付+容器化组成。
持续集成:当前主要工具为Jenkins,实现了CI/CD的一个工作模式,作为开发须要了解Gitlab+Jenkins的过程。
容器化:Docker+K8S。须要把握传统服务和微服务都适用的Docker化思路;学会Docker私有库房的搭建和镜像管理;了解K8S对象及资源规范,API基础及基本应用,容器集群的状态管理,日志监控等。
推荐书籍
在SpringCloud的相关书籍中,已有docker的相关知识和实践。对于本阶段的学习可以按需进行。
Step4:项目实践,编撰简历,笔试
最关键的一步,对于车辆改行人而言,最短缺的就是项目实践经历,因而很难通过简历关,更不用谈笔试了。
因而,无论是找相关岗位的朋友、网上培训班还是其它方法,尽快在指导下独立完成一个实战项目,并才能说清其中所用的构架、技术细节,同时具备一定的编码能力,好多公司还是乐意给机会的。
推荐书籍
相关的Java笔试书籍承德小异。此阶段推荐Java服务端研制知识图谱以及阿里的Java编码规范,作为整体知识体系的巩固和编码规范的构建。
职业发展
2022
在各类技术峰会上,Java开发常会戏称自己为CRUD(Create、Retrieve、Update、Delete,降低、检索、更新、删除)工程师。的确,目前的软件框架早已把开发工作显得非常清新,Java开发的日常工作更多是SpringBoot开发,写写Controller、Service、SQL等。但对于不随波逐流的Java开发来说,做好本员工作的同时,还可以紧随现今服务端技术的迭代和改革,深挖框架背后原理,考量技术方案细节,消化、吸收、创新,不断照亮自己的技能树、构筑牢靠的竞争壁垒。
不过,须要提醒的是,互联网行业Java中级开发工程师基本处在一个饱和的状态,“上岸”门槛已不如五十年前轻松。但随着主机厂数字化变革的深入,智能网联技术的发展,Java开发需求势必在主机厂迎来一波高潮。同时,车辆人对主机厂PDM、BOM等系统的数据模型和流程愈发熟悉,对整车开发流程和主机厂内部的生存法则也讲求于心。如有Java加持,业务能力上会有一种如虎添翼的觉得。
格局有大小、人品有优劣,但岗位无高低,追求无对错。重要的是选择一条路,一条自己偏爱、认可的路,坚持走下去,有规划的勤劳者必将有回报。
本文原创地址://gulass.cn/ljczmclwxmpt.html编辑:刘遄,审核员:暂无