java发展规划与感悟

1.初级水平(认知理解技术为主)

 

业务部分

1.正确的理解产品经理的需求和设计,并对相应的细节提出一定的质疑,有效的完成业务开发。

2.根据产品原型自己独立进行设计,包括项目流程设计,数据库设计,接口设计等。

3.能够定位线上问题,并提供合理的解决方案。

技术部分

1.Java基础扎实,并对其中的高级部分有一定了解如锁,反射等,能够熟练使用三大框架或者springboot进行基本的业务开发,熟悉MVC架构

2.sql能够熟练掌握,如子查询,mybatis的复杂查询。

3.熟悉常用的设计模式

2.中级水平

简介

1.利用技术解决复杂的业务场景并对技术的原理有较深的理解

2.独立负责项目的业务流程和存储设计

 

业务部分

1.能独立的完成项目整个流程设计开发,对项目中的难点能提出有效的解决方案,并指导初级工程师进行开发和解决提出的难点。并对常用的设计方案利弊都有自己的见解。

技术部分

1.对常用框架的原理有较清晰的理解,对缓存,并发,MQ,分布式等复杂技术有着深入理解
能够掌握其设计思想和所用到的设计模式。
2.能够进行性能优化,代码规范,代码中含有相应的设计模式,无不规范的代码
 

3.高级水平

简介

1.技术领导

技术和管理

1.能对需求进行架构设计,对产品需求的可实现性和规模难度进行评估,对技术进行选型以适应最合适的场景。作为某个项目的领导,带领团队完成项目,并对项目产生的问题承担第一负责人

2.有自己的开源项目,可以写出自己的组件,对开源的框架能够进行二次编写,java核心技术有着非常深入的理解

3.指导和评审初级工程师的技术方案,存储设计,代码评审等

4.架构师(部门领导)

1.能管理开发,测试,产品等核心人员,制定团队目标,为部门和公司产生盈利。
 
2.对开发人员引导制定okr,使团队人员有技术提升,团结互助。
 
 
其发展战略可以参考下图:
java发展规划与感悟_第1张图片

 

技术向管理转型


相关条件


1.技术能达到中高级水平,且通过个人努力长期技术也很难有所突破,认同团队管理的价值。

2.身体上受不了高压工作强度,希望通过语言交流来解决和灵活实际问题。

个人的独有特点


1.对演讲感兴趣,喜欢历史与人文感情。
2.能和人进行基本的沟通交流。不说多么热爱与人打交道,但至少内心底层是有渴望与人交流的需求

转型准备


1.有意识的训练自己的沟通能力与为人处世能力。

2.有意识的训练自己的领导能力和与领导相处的能力。

 

 

实战感悟

1.Java本身其实是一种编程语言,你也可以把它当成一门数学学科。其核心是逻辑推理。如果在产品设计时,如果用中文都无法把逻辑整理清楚,编程时思路肯定也是不清晰的。

2.写代码前最好把思路先用一个文本写下来,这样思路就清晰了,写出的代码维护起来也容易。就相当于你做数学题时要先打草稿一样,代码写上去了改动肯定比你在草稿上改动的成本大多了。

3.重难点先入,人的精力前期是充沛的,到了项目后期时间短,用后期短时间做较为复杂的业务,出bug的概率是很大的。而且对应编程来说,简单的业务实质是不需要的编程的,对应开发者来说,它就是一个体力活而已。

4.产品需求在评审前好好梳理,这样评审时可以早一点发现问题,否则开发过程中发现问题解决的成本会越堆越大,越到后面越不好解决。当然如果能遇上逻辑思维强的产品协作中将会大大减少成本,但好的产品可遇不可求啊!

5.对于远程调用一定要打日志,因为你不知道别人是怎么玩的,而且出问题的概率是不可控的。所以一定要对异常进行捕获,并打印入参和回参。

6.接口设计好后一定要让客户端先检查,因为设计好后客户端肯定会检查的,早一点发现,早一点调整,否则到了后面,调整的难度会越堆越大。

7.对于互联网公司,性能要求非常非常高,所以对于数据库的操作越简单越好,因为优化一个复杂查询的成本还是很高的,甚至尽可能不要做内存计算相关的操作,慢SQL是很容易被检测出来的

8.对应if else,如果条件在两个以内,可以使用。如果三个以上建议使用状态设计模式,即最原始的switch case

9.好代码的一些思考:

1.结构清晰,是基于模型的设计

2.bug很少,且排查容易。

3.接口逻辑尽量不要太多,如果接口逻辑复杂,可以考虑拆分接口,即保证接口的原子型

4.利用到相关的设计模式

10.熟悉业务方法总结

1.页面流程

1)熟悉业务的整体流程
2)属性业务的关键流程,如发送通知流程

2.表梳理
1)熟悉业务的核心模型
2)表与表之间的关联关系梳理,明白哪些是主表哪些是关联表

3.接口梳理

A:入参和反参模型梳理
B:代码结构梳理
C:设计模式总结

11.不要相信“任何人”,不要相信测试,她不一定能测出bug,到了线上环境,最后排查问题的还是开发自己,且还有可能会背锅。不要相信兄弟部门,谁知道他对接口会做哪些处理,按照的你要求去审核他的入参和反参吧,一定要对他的异常进行捕获。

12.程序员在设计时全局把控能力的思考

1.角度的转换,占在产品全局的角度,而不是某个需求的角度


2.判断此产品的未来价值,考虑代码的可扩展性

 

 

 

技术储备


1.core java:

a:编程特点:封装,继承,多态。

b:并发:aqs,cas,锁

c:网络基础:socket

d:集合数据结构原理

e:jvm性能调优


2.spring
spring体系结构如图:

2.1.基础:
IOC,DI,AOP原理深入理解

2.2.spring-ORM
1)spring与mybatis的整合
2)spring与redis的结合:spring-data-redis

2.3.spring-context
1)spring的事务管理,日志管理。

2.4.spring-webService
1)spring MVC原理深入理解,架构图待续

2)rop

 

2.5.springBoot
可以简化spring的xml配置,通过注解的形式进行bean的注入和管理.

如何集成tomcat,创建starter

2.6.分布式服务
1)springCloud
2)dubbo
3.建模
3.1UML建模工具

4.ORM框架
4.1.mybatis

5.数据库

5.1关系数据库
1)mysql

2)oracle

5.2.非关系型数据库(nosql)
1)redis
2)monodb

6.版本控制工具
1)maven

2)git

3)svn

7.格式解析
xml解析的几种方法
1)dom4j
2)sax
3)dom
json解析

8.前端
如今企业大多已采用前后端分离的架构,故前端知识了解即可如html,js,css。
 


 

你可能感兴趣的:(程序人生)