如何突破java程序员瓶颈?十年Java架构师分享自己的辛酸成长历程_突破java瓶颈-程序员宅基地

技术标签: 大厂  Java  java资料  java程序员  java架构  java架构师  

不知不觉,金九银十已经过去一半了,小编最近也是收到了蛮多读者的私信与简历,
发现了一个比较值得我注意的点就是很多读者的简历千篇一律:

工作五年经验的简历竟然和工作一年的简历并无二致!!!

所以小编今天根据阿里的一位“十年Java架构师工作经验 ”和大家分享下程序员的成长历程,

并在文章末尾为大家分享架构师的完整学习资料。

一、工程师

阶段描述

成为一个合格的工程师需要 1~3 年时间,其典型特征是“在别人的指导下完成开发”,这里的“别人”主要是“高级工程师”或者“技术专家”,通常情况下,高级工程师或者技术专家负责需求分析和讨论、方案设计,工程师负责编码实现,高级工程师或者技术专家会指导工程师进行编码实现。

成长指导

工程师阶段是最原始的“基础技能积累阶段”,主要积累基础知识,包括编程语言、编程工具、各类系统的基本使用。以 Java 后端工程师为例,工程师阶段需要积累的经验和技能有:

Java 的语法、基本数据结构的使用。

Eclipse、IDEA、Maven、Linux 命令行等各种工具。

数据库 CRUD 操作、缓存的基本使用等。

业务系统的基本流程。

工程师阶段最好的学习方法就是 找经典的书籍系统地学习,而不要遇到一个问题到网上搜搜然后就解决了事。以 Java 为例,《Java 编程思想》《Java 核心技术》《TCP/IP 协议》这类大部头,一定要完整地看一遍,即使里面很多内容当前工作暂时用不上。

二、高级工程师

阶段描述

成长为高级工程师需要 2~5 年时间,其典型特征是“独立完成开发”,包括需求分析、方案设计、编码实现,其中需求分析和方案设计已经包含了“判断”和“选择”,只是范围相对来说小一些,更多是在已有架构下进行设计。以 Java 后端工程师为例,高级工程师需要完成的工作包括:

MySQL 数据库表如何设计,是设计成两个表还是三个表?

是否要用缓存,缓存的 Key 和 Value 如何设计,缓存的更新策略是什么?

产品提出的需求是否合理?是否有更好的方式来满足?

成长指导

从普通工程师成长为高级工程师,主要需要“积累方案设计经验”,简单来说就是业务当前用到的相关技术的设计经验。以 Java 后端高级工程师为例,包括:表设计经验、缓存设计经验、业务流程设计经验、接口设计经验等。当接到一个业务需求的时候,高级工程师能够组合这些设计经验,最终完成业务需求。

高级工程师阶段相比工程师阶段,有两个典型的差异:

深度:如果说工程师是要求知道 How,那高级工程师就要求知道 Why 了。例如 Java 的各种数据结构的实现原理,因为只有深入掌握了这些实现原理,才能对其优缺点和使用场景有深刻理解,这样在做具体方案设计的时候才能选择合适的数据结构。

理论:理论就是前人总结出来的成熟的设计经验,例如数据库表设计的 3 个范式、面向对象的设计模式、SOLID 设计原则、缓存设计理论(缓存穿透、缓存雪崩、缓存热点)等。

针对技术深度,我的建议还是系统地学习,包括看书和研究源码。例如,研究 Java 虚拟机可以看《深入理解 Java 虚拟机》、研究 MySQL 可以看《MySQL 技术内幕:InnoDB 存储引擎》、研究 Memcache 可以去看其源码。

针对设计理论,由于涉及的点很多,没有一本书能够涵盖这么多的设计点,因此更多的是依靠自己去网上搜索资料学习。那我们怎么知道哪些地方会有设计理论呢?简单来说,就是假设每个设计环节都有设计理论,然后带着这种假设去搜索验证看看是否真的有很熟的设计理念。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46577306/article/details/108890517

智能推荐

邮件发送与接收,支持163邮箱、outlook邮箱、exchange邮箱_. 集成&自动化中配置发送邮件节点,发件人邮箱账号支持哪些邮箱类型-程序员宅基地

文章浏览阅读2.5k次。邮件发送与接收,支持163邮箱、outlook邮箱、exchange邮箱依赖的jar包邮件收发公共服务层实现package com.example.demo.service.impl;import com.example.demo.model.EmailMessageBO;import com.example.demo.model.EmailSendBO;import com.example.demo.model.FileBean;import com.example.demo.serv_. 集成&自动化中配置发送邮件节点,发件人邮箱账号支持哪些邮箱类型

CUDA 纹理内存_纹理内存 cuda-程序员宅基地

文章浏览阅读519次。1、概述  纹理存储器中的数据以一维、二维或者三维数组的形式存储在显存中,可以通过缓存加速访问,并且可以声明大小比常数存储器要大的多。  在kernel中访问纹理存储器的操作称为纹理拾取(texture fetching)。将显存中的数据与纹理参照系关联的操作,称为将数据与纹理绑定(texture binding).  显存中可以绑定到纹理的数据有两种,分别是普通的线性存储_纹理内存 cuda

(源码分析)Glide(图片异步加载缓存库)发起request获取resource_glide是异步加载吗-程序员宅基地

文章浏览阅读827次。工作流程:既然Glide的功能这么强大,那么就一定要学习下源码,看看内部是怎样工作的。Glide.with((Fragment) t).load(url).into(imageView);为了好理解,将上面一行代码进行分解:RequestManager requestManager = Glide.with((Fragment) t);DrawableTypeReque..._glide是异步加载吗

在PADS中创建库,并在其中添加自己的PCB封装以及Part type_pads part type-程序员宅基地

文章浏览阅读2.4w次,点赞5次,收藏21次。在PADS中创建一个库,并在其中添加自己的pcb封装以及part type1. 打开库管理器,点击新建库,在弹出的New Library对话框中输入新建的库的名字(这里的扩展名为pt9),点击保存即可2. 此时就在对应的文件夹中建立了4个文件(PADS的一个库对应4个文件,这四个文件分别对应|Decals,Parts,Lines,Logic),如下:_pads part type

arcgis10之获取面要素中心点坐标_arcgis获取面的中心点坐标-程序员宅基地

文章浏览阅读1.7w次,点赞16次,收藏44次。第一步 获取中心的文件第二步 新建两个存储中心点做坐标的字段第三步 计算要要素中心的xy坐标同理,计算中心点Y坐标即可_arcgis获取面的中心点坐标

C:L1-061 新胖子公式 (10分)-程序员宅基地

文章浏览阅读1.4k次。根据钱江晚报官方微博的报导,最新的肥胖计算方法为:体重(kg) / 身高(m) 的平方。如果超过 25,你就是胖子。于是本题就请你编写程序自动判断一个人到底算不算胖子。输入格式:输入在一行中给出两个正数,依次为一个人的体重(以 kg 为单位)和身高(以 m 为单位),其间以空格分隔。其中体重不超过 1000 kg,身高不超过 3.0 m。输出格式:首先输出将该人的体重和身高代入肥胖...

随便推点

从IoTDB的发展回顾时序数据库演进史

面向工业物联网时代,以 IoTDB 为代表的时序数据库加速发展。时序数据的主要产生来源之一是设备与传感器,具有监测点多、采样频率高、存储数据量大等多类不同于其他数据类型的特性,从而导致数据库在实现高通量写入、存储成本、实时查询等多个维度存在管理难点。针对这些特性与难点,专门针对时序数据管理构建的时序数据库也在逐步成熟。以 IoTDB 为代表的国产时序数据库面向工业物联网时代,时序数据的主要应用场景...

vue3插槽的name和v-slot的研究

在父组件的template需要些v-slot/#,没写不生效,而在父组件下,而没被template包含的默认放在template且含有#default。slot可以分为具名插槽和默认,默认插槽name是default。

安卓mediaplayer播放音频中途切换音乐播放等处理_android mediaplayer 实现切歌-程序员宅基地

文章浏览阅读3.3k次,点赞4次,收藏7次。private MediaPlayer mediaPlayer;//放音频路径private String curMusic = "";//此方法可以中途切换音频private void playMusic(){ try{ if (mediaPlayer==null){ mediaPlayer = new Media..._android mediaplayer 实现切歌

Python爬虫必备工具大盘点_python爬虫工具-程序员宅基地

文章浏览阅读2.9k次。在当今信息化时代,网络爬虫成为获取大量数据的一种重要手段。而要开发一款高效、稳定的网络爬虫,离不开一系列强大的爬虫工具。本文将为您盘点一些爬虫必备的工具,帮助您快速构建出具有实际价值的网络爬虫。让我们一起探索吧!一、请求库1.Requests:这是Python中最流行的HTTP请求库之一。它简洁易用,支持各种请求方式,并且提供了丰富的功能和灵活的扩展机制,是构建网络爬虫的绝佳选择。二、解析库1.BeautifulSoup:是一种用于解析HTML和XML文档的Python库。_python爬虫工具

Java关键字final、static使用总结-程序员宅基地

文章浏览阅读112次。一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,final类中的方法默认是final的。 final方法不能被子类的方法覆盖,但可以被继承。 f...

单台AD域控安装和部署配置_为此域控制器选择其他选项-程序员宅基地

文章浏览阅读1.1k次。AD域控安装准备工作设置主机名配置静态ip地址安装配置验证部署准备工作设置主机名配置静态ip地址安装配置验证部署_为此域控制器选择其他选项