中小企业程序员各个级别应该掌握的技能与知识

在这里插入图片描述

一.目前中小型企业的情况

在博主的了解中,目前大多数的中小型企业还是传统行业为主,而互联网还行占比不超过百分之一。以沈阳举例,全省纯正的互联网项目/公司不超过一手之数。同时在疫情的影响下,较大型的企业基本都是依托着政府,毕竟在现有环境下有着稳定的项目和资金是非常难得的。

所以说中小型项目是各种定制化管理系统、审批系统、ERP、OA,而网络上高并发、集群、秒杀、k8s、算法等场景少之又少。

因为这个背景本文应运而生,什么技能是中小企业程序员吃饭的家伙呢?接下来就听从业近10年的中小企业老兵带你一一分解。

为了面向薪资编程,咱们该背的还得背哈。

二.各个级别程序员需要的技能

1.初级开发工程师/实习生

对于初级开发工程师来说,可能是程序猿阶级中最低等级的了,日常的工作也比较简单,通常我会分配给该职位员工简单的接口与搬砖工作。例如在OA的项目中,编写公告的curd接口,编写日历维护等curd接口,这类接口不涉及到业务,主要考验的是否掌握接口的基本写法。

所以对于领导关注的点就是按照时间节点写完接口,并保证数据处理准确即可。

1.应该掌握的技术栈

通过以上背景,博主总结了以下是需要掌握的技能。其中标记小红旗的为重点掌握知识。

  1. 掌握java常用的技能。
  2. 掌握spring,熟练应用IOC与AOP。了解底层原理。
  3. 掌握数据库概念,常用语法,重点掌握增删改查语句。
  4. 掌握mybatis常用标签,重点掌握增删改查写法。
  5. 了解springboot概念与文件结构,重点掌握增删改查业务写法与常用注解。
  6. 熟练使用idea、navicat、postman等开发工具。
  7. 了解微服务概念。
  8. 了解redis中间件。
    在这里插入图片描述

2.为何需要

由图可以看出以上技能都为curd做准备。首先springboot+spring+mybaits为最流行的框架,是接口编写的基石。java基础必须掌握牢靠,否则数据比较的坑就够你喝一壶的。熟练使用开发工具能够帮你提升代码编写效率规范。了解部分中间件与微服务概念为下一步的提升搭建了桥梁。Mysql语句不会???请出门右转。以上都是必须必须的技能,缺一不可。

2.中级开发工程师

中级开发工程师是一个公司的最多也是最核心的职位,因为大多数都是业务骨干,负责业务代码的堆砌,必须时也负责管理指导初级开发工程师。所以,在工作中我会分配给比较复杂的接口,如组织架构相关接口,定时任务接口,用户接口,因为这些接口涉及到权限、返回格式、日志留存、基础应用等,因为这些初级程序员很难胜任,这就需要中级工程师编写。

1.应该掌握的技术栈

相对于初级开发工程师,以下是应该提高的点。

  1. 掌握lanmda与stream流写法。
  2. 理解spring、mybatis、springboot的底层原理。
  3. 掌握常见常用的sql优化规则。
  4. 掌握springboot功能性start。
  5. 理解微服务,最低标准为独自落地demo。
  6. 使用过redis和rabbitmq中间件。
  7. 掌握常用的设计模式。

在这里插入图片描述

2.为何需要

中级工程师的基础是业务接口非常熟练,需要多架构、管理、整体的统筹做到提高。

首先要有良好的代码格式,注释格式。并善于使用工具类,如函数式接口、p3c代码检测工具。且适当使用设计模式重构代码,并能够将自身的原则与想法传递到初级工程师,这样项目才能有着良性的运行条件。

对springboot+mybatis+spring等常用框架的源码有这一定了解,这不是背八股文,在了解一定底层原理后能够通过日志更加快速的定位问题。同时对于springboot提供的一系列start,要有着使用的经验,如:websocket、quartz、邮件、短信,都非常常用,同时在业务难度上也略大于普通接口,可以扩展自身的能力。

然后需要对一些中间件有这基础的应用与了解,我认为至少掌握redis、mq,因为中小企业使用该中间的几率很大。同时已经内卷成必会问题了。

可能有点小伙伴会问了中小企业是否需要掌握微服务?答案是一定要,因为很多政府项目的市局领导会在竞标文件上提到要上云,上微服务。所以中级工程师起码要有微服务demo搭建的经历。

最后需要掌握sql优化的常用场景。

以上就是中级工程师需要提升的技能,有多少人终生就停留在这个阶段,而市面上所说的30岁被淘汰的也是这些人。所以这是一个培养能力的重要阶段,并尽量上升到高级工程师。

3.高级开发工程师

在中小企业来说,高级工程师已经是技术的带头人了。对于高级开发工程师来说,更多是解决问题的能力。

什么是解决问题能力?我的理解是无论遇到什么问题,无论你是谷歌百度搜索,还是请教业界大佬,只要能解决就ok。

也要求你无论在技术深度还是广度上都有一定的积累。对于源码与底层原理也有一定的涉足,适当时机需要更改源码解决问题。同时在架构方面也有一定理解和建设,能够根据公司条件优化和建设符合场景的优化。同时善于利用开源解决问题。

所以博主认为高级工程师需要掌握以下技能:

1.技术掌握

  1. 起码阅读过spring、mybatis、springboot源码,并充分理解。
  2. 对分布式有这一定了解。(ps:虽然使用场景不多)
  3. 掌握explain语句,熟练优化sql。
  4. 能够根据公司情况制定代码规范与代码检查机制。
  5. 掌握常用的linux语句。
  6. 掌握架构的设计能力。能够落地常见的架构配置。
  7. 了解和掌握一种安全框架。
  8. 对微服务有这自己的见解。能够针对环境选型。
  9. 了解热门的开源框架,并能通过开源解决问题。
    请添加图片描述

2.为何掌握

通过上图可以看出,无论从深度与广度,都有着一个比较明显的提升。同时最根本的目的是解决问题。

在此阶段,我认为你应该多次阅读过springboot+mybatis+spring+springcloud的源码,虽然不能详解叙述,但是起码对这编程思想有着自己独到的见解。并在日常开发中使用其思想/设计模式优化自身的代码。

在项目架构与组成上有着一定的理解,起码落地和了解RBAC模型和一种安全框架,同时使用过常见的架构优化注解/功能。如异常的统一封装、统一的返回参数,项目的组件封装。尽量提升中低级开发体验与开发难度。同时在微服务架构上也有着自己独到的看法。并能够根据自身环境选型与落地。

linux上也要有这一定了解,需要掌握常用命令和语句,并尽量熟悉Docker、k8s等,因为在日常开发与上线中免不了有运维与部署的工作。在sql优化方面,建议掌握explain语句的用法与常见参数,会让你不在惧怕任何慢sql。

最重要的是有足够的开源能力,能够使用开源框架或项目解决问题。可以说开源框架质量远比中小型公司开发的更加卓越,所以熟练使用并二次开发无疑会大大减少工作量和开发成本。

最后需要了解一些互联网公司的技能,如K8s、分布式事务、分布式锁、集群、高并发。秒杀。做一些技术储备,以面对不时之需。

以上就是博主本文的分享,如果想学习以上技术栈,请查看博主其他专栏。

猜你喜欢

转载自blog.csdn.net/qq_20143059/article/details/121749122