kl个人博客 首页>>架构/杂谈>>公司内部分享系列-接手新项目(技术层面),get新技术

公司内部分享系列-接手新项目(技术层面),get新技术

公司内部分享系列-接手新项目(技术层面),get新技术
前言碎语
大家好,今天和大家分享的主题不是纯粹讲技术的,可能更加偏向职场和技术经验。所以下面所列的1、2、3、4、5并不敢妄称标准,只是个人的经验总结。所以见仁见智,大家还是怀着思考和交流心态来看为好。

以销管(后端)为例,销管为前后端分离项目

本次主题分享主要内容可概括为如下几点


第一步.项目环境

  • 数据源:mysql,redis,mongoDB,相关url
  • 语言&版本:java、1.8
  • 运行环境:java(tomcat,jetty)
  • 构建工具&&版本:maven 、3.3+ ,如有私服,相关url
  • 版本控制协作工具:git,gitlib ,如有私有仓库,相关url
    首先,当你进入到一个公司,上级分配给你一个项目时,你需要关注以上最最基本的信息,一般的公司可以忽略语言环境,你面试的时候就已经确定了。但是大型公司语言环境可能是多样的。确定了基本项目所在团队所在基础环境后,第一时间可以向相关负责人拿到开发环境的相关地址,如上数据源,maven私服,git的链接地址,账号密码等。然后就可以尝试搭建本地开发环境了,如果项目使用技术简单,和自己以往使用技术完全契合了,应该很快就可以搞定本地开发环境了。如果项目技术未曾接触过,可以自己尝试运行下,切记不要埋头尝试,适时寻求下帮助。

给“新人”的建议:一般项目迭代到一定阶段,团队沉淀到一定阶段,会有相关的文档,新人进来时就会给到你,在没有开始分配项目的时候,建议多读读相关的文档。


第二步.架构,结构

   这个阶段一般项目已经可以完美运行起来了,你需要全面掌握下项目的架构层次,比如maven的多模块,每个模块间的关系,如api模块,RPC远程通信的代码。比如包的层次结构,每个包下的java文件的大致含义,如config下是配置信息代码,repository是数据访问相关代码。如果是业务项目,一般层次结构会相对容易理解。如果是底层框架类项目,架构层次会稍微复杂些。可以先从上层大致了解下即可,随着项目的推荐肯定会越来越清晰。了解项目整体架构有助于全面把握项目,了解项目运行原理。


第三步.关于技术栈
    快速接手一个项目,了解这个项目的技术栈,是必不可少的一个步骤,我的从业经历是,除了核心技术栈外,很少遇到两个项目的技术栈是一模一样的,总会有很多新鲜可玩的技术。怎么最快,最全面的了解到一个项目的技术栈呢?无论是后端项目还是前端项目,单独引用依赖的时代已经过去了,基本上主流的企业开发语言都有了相关的依赖管理工具,如前端额npm,bower,如java的maven,gradle。一般了解一个项目的技术栈都从这些依赖管理工具入手。这个时候你会发现你熟悉的技术,也会有未曾见过的技术,熟悉的技术可以看看有没有新的使用方式,新的技术可以记录下来,后面着手攻破。 这里提个小小的要求,项目依赖的每个jar包,尽量了解他们是干嘛的。
  • RPC :dubbo,RabbitMQ,spring Cloud feign
  • 数据:JPA,QueryDSL,tomcat jdbc,redisson,spirng data
  • 框架:spring boot,spring mvc
  • 配置:Apollo clien


第四步.项目配置

从项目配置入手,学习项目涉及到技术栈。这是最快认识怎么使用新的技术栈的着手点,一般如guava,Apache commons包这种技术看看代码,就知道怎么回事了。但是像数据库连接池,RPC等都需要通过配置来实例化一个spring 管理的bean,来集成到spring的体系当中去,这个配置和实例化的代码就是最好学习新技术的点。项目中的配置一般都是了解相关组件的入口,比如web.xml,整个web容器的入口比如application.propertis,spring boot的入口


第五步.了解项目常用封装

除了业界通用的如,guava,Apache commons,以及spring Utils相关包外,(集合,缓存,并发,字符串处理,io)。一般的业务系统也都会封装和业务相关的util工具类来简化具有重复代码的工作,所以,熟悉一个项目的一般流程和技术体系后,非常有必要了解一个项目的工具类。熟悉一个项目的Util后会让你少走很多弯路

新技术学习


1.官方实例 xxx-examples,xxx-samples

说明:官方实例都是很简单的用例,真的如其项目的命名那样,所以能解决问题最好,不能解决请往下走


2.开源项目

说明:开源项目对相关技术的运用肯定会比官方简单实例来的更综合一点,所以,看完官方实例可以找个有【相关技术点】的对该技术有【综合性】的【全面性】的应用开源项目来深度学习一下


3.官方文档

说明:一个项目里面肯定不会应用项目的所有技术点,特别是大型框架,如spring这样的庞然大物,所以,解决特殊问题,或是解锁一些不常用的技术,还有一招,就是看官方文档,官方一般会讲解技术的方方面面


4.源码分析

说明:文档会解决技术的方方面面,但是文档不可能分析每处代码的设计思路,功能点,当你遇到的问题,以上三点都不无法解决的时候,我推荐你阅读下该问题相关的源代码,也许你会收获到更多


5.关于博客学习?

说明:大多数的博客分享的技术点都是片面的,我自己也写博客,所以我深知这一点,所以在学习新技术的时候推荐使用以上四个步骤,那什么时候可以参考博客来吸取养分呢?当你知道技术细节各个点,但是遇到一个你束手无策的异常,或是bug的时候,别人的经验可以成为你的救心丸


文末总结

读书百遍,其义自见,熟读唐诗三百首,不会写诗也会淫 。so,当你阅览项目无数时,上手一个新的项目不再那么束手无策,软件架构设计思想都是共通的,当你能高度抽象定义时,其他技术框架便能信手捏来,拿来就用。最后,期望大家在平时开发中多用心积累总结。

kl个人博客