Java工程师成长路径

学习资料篇

入门必学材料

  • 【书籍】码出高效-Java开发手册-系统性的理解Java基础

  • 【书籍】Java开发手册(黄山版)-Java开发规范要求,必读

  • 【书籍】Java 8实战-夯实Java基础

  • 【书籍】微服务架构设计模式-系统介绍微服务知识体系,微服务入门必读

  • 【书籍】程序员的自我修养-建立对程序员职业素养的认知,成为合格的程序员

  • 【书籍】Java工程师修炼之道-职业素养

  • 【书籍】Redis开发规范-redis使用必读

  • 【书籍】Redis 深度历险:核心原理与应用实践-redis使用必读

  • 【书籍】Springboot编程思想

  • 【书籍】spring-boot官方文档

  • 【书籍】高性能MySQL-Mysql基础必看

  • 【书籍】深入理解计算机系统-非科班必备

  • 【极客时间】Mysql45讲

  • 【极客时间】Redis核心技术与实战

  • 【极客时间】深入剖析Kubernetes

  • 【慕课网】解读Java规范
    https://www.imooc.com/read/55

  • 【资料】阿里巴巴云原生技术公开课Kubernetes-学习入门k8s
    https://gitbook.cn/gitchat/column/5d68b823de93ed72d6eca1bc

学习网站

  1. Java demo宝库,可以找到常见的用法Demo
    https://www.baeldung.com/category/java/
  2. Java 编程思想
    https://lingcoder.github.io/OnJava8/#/sidebar
  3. Java学习
    https://howtodoinjava.com/
  4. 美团技术团队
    https://tech.meituan.com/

新人素质篇

工程师的精进原则

● 原则一:Owner意识:有要性,主要负责能负责的模块
● 原则二:时间观念:抓好二八定律和重要紧急四象限
● 原则三:以终为始:结局是什么,我们差什么
● 原则四:闭环思维:从头到尾考虑全面
● 原则五:保持敬畏:预估到悲观情况,敬畏难度
● 原则六:事不过二:一次做到位
● 原则七:设计优先:先梳理思路,充分与相关人沟通
● 原则八:产出/产能平衡:平衡投入产出比
● 原则九:善于提问:明确表达的你的需求,同时帮助解决问题者快速了解问题上下文
● 原则十:空杯心态:持续学习

软件开发的核心原则

Don’t Repeat Yourself:不要做重复性劳动
Keep it semple stupid:即KISS原则在做软件设计的工作中,很多时候都不要想得过于复杂,也不要过度设计和过早优化,最简单且行之有效的方案也就避免了复杂方案带来的各种额外成本。
You Ain’t Gonna Need It:即YSNGIN原则。只需要将应用程序必须的功能包含进来,而不要试图添加任何其他你认为可能需要的功能。
Done is better than perfect:在面对一个开发任务时,最佳的思路就是先把东西做出来,再去迭代优化。如果一开始就面面俱到,考虑到各种细节,那就很容易钻牛角尖而延误项目进度。
Choose the most suitable things:在做方案选择、技术选择时候一个很重要的原则,在面对许多技术方案、开源实现的时候,务必做到不能盲目求新,要选择最合适的而非被吹的天花乱坠的。

关于读源码

面对源码应采取带着问题探究问题的方式,读源码的目的核心是了解技术核心原理,学习前人优秀的实践经验,注意千万不要为了读源码而读源码。

对于新人,优先需要先会用,找到兴趣和快乐,在没有基础时候阅读源码,可能会走入死胡同。

“看源码”的典型流程

  1. 阅读该技术的架构文档,了解其总体架构和组成。
  2. 根据总体架构,将源码文件以模块或者上下层级进行分类。
  3. 从未阅读过的模块中选择最独立(依赖性最新)的模块代码读起
  4. 阅读此模块的功能介绍文档
  5. 阅读此模块的源代码
  6. 一边阅读一遍整理调用关系(以表或者树的形式)
  7. 转到第三步
    在这里插入图片描述

关于面对问题

"XY问题“

什么是XY问题:典型的XY 问题,想做 X,但认为 Y 是实现 X 最好的方法。不问关于 X 的事,反而问起 Y 的事。

XY问题在工作中常常遇到,问题的核心在于对于问题的定位与理解不够深刻,避免XY问题也要求我们能够更好的定位问题,才能更好的解决问题。

如何快速定位问题
  1. 异常信息定位问题:根据项目执行时抛出的异常堆栈信息,先提取错误类型,然后提取错误信息和发生错误的位置,最后排查解决问题。对于问题的解决方法,需要经验的积累和整理。
  2. 链路层定位问题:很多bug是逻辑方面的问题,如在前端页面看到数据不对,接下来排查是否前端逻辑错误或显示错误,往下排查接口传入参数与响应结果是否有误,再往下排查缓存或数据库层面是否有错误,最后执行时的sql语句是否符合预期,sql执行结果是否符合预期。自顶向下定位出问题地方,在一个调用链路较长时,应当先排查出问题的环节,再进一步调试查找问题。
  3. 调试定位问题:通过调试工具,一步步执行代码,找到出问题的地方。
  4. 经验排查:根据问题情况结合自己或他人经验列出最可能发生问题的地方,经验可能来自相同问题也可能来自同类问题的迁移,最终多翻尝试解决问题。
  5. 参考资料定位问题:将已知问题信息通过百度、google、官方文档QAQ等了解可能出问题的地方,他人遇到同类的问题排查解决方案,进而辅助排查解决问题。
  6. 在经验不充足时,个人认为当注重培养资料查找能力,另外就是问题表述能力,只有能够很好的把问题表述给他人,给搜索引擎,才能更快的找到答案。
  7. 在排查问题时如何证明一个地方有问题?目前用到的主要是对比法,根据输入输出结果对比或者设置参照物,参照对比。
如何彻底解决问题
  1. 面对问题的心态:逢山开路、遇水搭桥;另辟蹊径、换一条路;描述问题、专人解决;得过且过、听之任之
  2. 静下心深入分析问题,寻找思考最优解决方案,评估解决方案,同时还需要考虑到解决方案可能带来的副作用,是否会对稳定的模块产生影响,解决问题的彻底性,解决方案需要付出的成本代价等
  3. 基本功扎实
    遇到问题后总结问题,尽量上升一个高度解决一类问题

关于提问

当你拋出一个技术问题时,最终是否能得到有用的回答,往往取决于你所提问和追问的方式。

  • 遇到问题时先定位问题,并且能够把问题清晰的描述给搜索引擎,描述给他人。
  • 提问前多番尝试,尝试通过搜索文章,wiki,手册,faq等以找到答案,尝试找别人提过的类似的问题以找到答案。
  • 思考问题可能的原因解决方案,并且做力所能及的尝试。
  • 带着问题和尝试后的结果向高人请教,学习高人的分析解决问题的方法。

【程序员自我修养——提问的智慧】
https://blog.csdn.net/weiwoyonzhe/article/details/104712755?spm=1001.2014.3001.5501

关于学习

【学习之学习】https://blog.csdn.net/weiwoyonzhe/article/details/90728478

Java工程师能力结构图(2019)

在这里插入图片描述
https://download.csdn.net/download/weiwoyonzhe/10945586?spm=1003.2166.3001.6637.7

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值