有关技能树的一些总结

如何看待学习:


被动学习和主动学习

提出好问题并解决问题

四个维度:

:为什么学?深层次需求是什么?

:学习的方法论,主动学?被动学?学习的指导方法是什么? 《如何阅读一本书》

:目标什么?方法是什么? 计划什么?

:把计划细化、落地、执行。

什么是知识?

看过好多书,过段时间全忘记了,为什么?

知识的四个层次:

信息:消息、概念

知识:和自我的结合,我如何理解、对我有什么用、我怎么用。(成甲在《好好学习》这本书中是这么说的:“在我的定义里,只有能够改变你行动的信息才是知识。”)

经验:用习得的知识指导自己行为,积累出来的可行性、验证性知识。

方法论:把自己的经验和知识根据问题领域抽象、固化。


研发技能的三个维度(纵向、横向、垂直)


技能树按照软件开发阶段:

需求分析和概要设计需要的相关技能:

该需求设计的相关行业知识,对于分析需求是否合理,概要设计的抽象是否准确很有必要。

对需求进行抽象化,把抽象的模型再带入需求进行分析验证,这块做的突出的化可选发展方向:系统分析师、业务架构师,这个是产品和技术交叉的领域。

把抽象模型表达出来涉及的主要工具和知识:UML、领域建模等等

系统设计和详细设计:

架构上的高可用、高性能

数据模型的可扩展性、性能、严谨

系统的部署模型

抽象层次,设计模式等等

研发阶段:

代码的组织方式和结构

代码的抽象和扩展

代码的可测试性,单元测试

代码中性能瓶颈的考虑:死锁、资源抢占、消峰、吞吐量

系统异常处理:跨系统调用的超时、并发调用、幂等、异常降级、异常限流。

系统异常的监控埋点和监控

项目中涉及的框架和资源核心设计思路熟悉程度:dubbo、redis、activemq、spring、mybatis、cat、oracle

上线及产线运营阶段:

发布依赖的问题,接口的版本依赖

新老数据兼容问题

db变更的影响评估

回滚的方案

产线如何验证

产线问题排查:问题链路分析和定位、操作系统资源分析(cpu、内存、网络、磁盘、IO等)、应用(错误日志、死锁、监控、应用运行时分析-java内存分析)、依赖中间件分析(redis、mq、dubbo、德鲁伊等等)

技能树按照技能领域:

数据库:

事务,事务的隔离级别以及隔离级别实现的思路,mvcc

分布式事务,以及如何做到的

索引以及索引的机制和核心算法

Sql相关概念,内连接,外连接,性能

数据库锁,表锁,行锁,悲观锁,乐观锁,那些操作会导致表锁

数据库各种操作的性能

Jvm相关:

内存模型,和垃圾回收算法

Java类加载

Java性能分析工具和方法

网络相关:

阻塞io,nio,aio

Tcp/ip,以及网络中间件所处的层次

部署拓扑结构,单点、扩容、负载、容灾

进程、线程、协程、并发

并发和并行

可见性、独占和共享、资源、可变

线程池,有界队列,丢弃策略

锁,计数,异步

Linux:

基本概念,目录结构,常用命令,权限

性能分析和问题定位

简单的shell或者python脚本能力

数据结构和算法

时间复杂度

各种常见集合

查找排序算法:b+树,红黑树

分布式的相关算法

框架和中间件

Spring

Dubbo

Mybatis

Nosql

缓存

架构

企业架构模式

分布式应用

高可用、高性能

安全

容灾

平滑扩容,自动化运维

服务治理

软件工程:

uml

领域建模

面向对象

设计模式

单元测试和测试驱动开发

敏捷软件开发

版本管理

技能树按照问题领域:

救火领域

代码的质量(健壮性、可扩展、可维护)

高性能

高可用

高安全

你可能感兴趣的:(有关技能树的一些总结)