如何快速接手别人的项目

技术人员,最讨论和最惧怕的,莫过于接手别人的项目、维护历史的遗留项目。尤其是那种没有任何文档、没有工作交接、没有人员协作的项目。个中痛苦和酸爽,真的是“如人饮水,冷暖自知”。

今天来分享一些技巧和工具,教你在面对技术人员突然离职时,如何快速接手他的项目。减少你接手和维护的痛苦。

拉取代码,本地运行

首先,先开通好git代码仓库的权限,在本地拉取签出对应的代码仓库。通常一个产品/一个项目,代码仓库都不止一个。然后,在本地先跑起来。

如果没有项目的部署文档,估计你要折腾一番。因为一个系统正常启动,需要解决:

1、语言版本和依赖包的安装:例如是PHP 5.6还是PHP7,是Java 7还是Java 18,是js还是nodejs还是ES6还是ts?其次,用composer安装好PHP的vendor目录包,或用npm/cnpm/yarn根据package.json安装好node_modules,或用maven/ant安装好JAVA的SDK包等。然后,这些还是很基础,很平常的。

2、然后在本地安装必要的数据库,例如MySQL、MongoDB、Oracle;启动必要的服务,例如:队列、定时计划任务;以及背后依赖的系统接口和服务。

3、获取之前可用的测试账号,进行登录。

熟悉发布上线的操作和过程

在本地能正常运行项目后,可以尝试一下,修改一些简单的文案,或者不修改,熟悉并操作一下项目上线发布的流程。因为你不知道什么时候,就要马上立即修复一个故障然后发布上线。

提前熟悉发布,演练操作,未雨绸缪是很有必要的。

要提前知道,发布是手工操作,打包压缩然后上传解压;还是通过发布系统进行的界面操作进行发布;抑或是通过Jenkins、Docker、k8s等工具系统进行的集成发布。

还要提前知道,发布会有哪些坑和注意事项,发布一旦失败,线上服务无法正常运行,将会对极大的灾难。

熟悉产品、熟悉业务、熟悉技术

接手一个旧项目,第一要义:尽快熟悉你的产品。这个产品具体主要功能是什么?是给谁使用的?客户群体是谁?目前大概注册和使用的用户有多少?上游供应商是谁?项目组的其他成员还有哪些?等等这些项目和产品背景信息都要搞清楚。

第二要义:尽快熟悉业务。业务很关键,你要对接手的产品所在的行业有一定的理解和学习。也就是我们通常所说的特定领域的业务。这个业务到底是做电商、还是做广告、还是做游戏、还是做ToB的系统集成,不同领域的术语和知识也不同。

第三要义:快速了解当前项目所用到的技术栈、编程语言、开发框架、数据库、环境要求等。技术是基础。

做好文档记录和保存相关链接账号

好记忆不好烂笔头。

在接手项目过程中,会有很多资料、知识和配置信息等,要用合适的工具,做好全程的记录,收集记录关键、有价值的信息。

在YesDev,可以创建一个项目,进行全盘的记录和协作。

CTO来教你:技术人员突然离职,如何接手他的项目?_项目管理

例如,在【链接】中可以记录项目的Git代码仓库、之前Tower的交接链接、参考和百度到的CSDN学习资料等。

CTO来教你:技术人员突然离职,如何接手他的项目?_大数据_02

开始接手修复一些问题和工单

一开始,可以从一些小问题、小Bug和工单入手,通过一些问题,排查某些页面,同时做好常用数据库查询语句SQL、内部脚本工具、觉见问题的记录和熟悉。

记录工单时,要把用户联系方式、页面截图、链接、代码位置、数据库查询等,进行归集。方便以后碰到类似的问题,有资料可查、有知识可学。

CTO来教你:技术人员突然离职,如何接手他的项目?_数据库_03

开始开发一些小需求和小功能

当你要开始开发新的需求时,先不要着急去改代码。

因为,你会发现,写代码很简单,但要写出100%符合原来业务逻辑和规则的代码就很难。

也就是说,编程语言的代码语法不难,难就难在完整理解和全盘掌握原来代码的业务逻辑。

为此,你可以使用ProcessOn、Xmind、Viso等在线工具或本地软件,先自我梳理一遍目前产品和技术上的思维脑图、核心业务逻辑的时序图、整体业务流程的泳道图、目前系统的架构图。至少可以梳理这四个图。

例如,产品功能的思维脑图梳理,帮助你了解产品的功能和形态。通过点击、浏览、体验和使用产品的每一个页面,你可以边操作边梳理。例如我对接口大师的开放平台的产品梳理。

CTO来教你:技术人员突然离职,如何接手他的项目?_时序图_04

然后,打开本地IDE代码编辑器,找到对应页面和接口背后的源代码,定位到最底层、最核心、最重要、最复杂的代码模块,边浏览源代码、边整理核心的时序图。这一块工作,可以让你抓住项目的底层本质和核心,熟悉原来的代码风格、编程范式、设计模式、高并发的处理方式、各模块的依赖关系等。例如PhalApi开源接口框架的核心时序图。

CTO来教你:技术人员突然离职,如何接手他的项目?_项目管理_05

第三个图,是整体业务的泳道图。它可以让你知道整体的系统上下游的数据流向、底层的依赖系统和网络链路。当你的系统出现问题了,你知道可以找谁。例如,针对直播拼团商城的流程。

CTO来教你:技术人员突然离职,如何接手他的项目?_时序图_06

最后一部分是面向技术架构的系统架构图。这部分,你可以通过nginx日记、或者阿里开通的服务、以及内部记录的资料找出你的系统都调用了哪些第三方接口。例如短信接口用的是哪家?有没用到OSS对象存储?CDN用了什么?数据库是用云服务还是自建的?你要清楚地知道目前有多少台服务器,是如何部署和相互调用的,网络链路是怎样的。从用户发起请求打开页面开始,系统在背后都做了哪些事情?

CTO来教你:技术人员突然离职,如何接手他的项目?_时序图_07

可以说,在接手别人的项目时,你至少应该自己整理并绘画四个图:

1、产品脑图:帮助你理解产品的功能;

2、UML时序图:帮助你源代码的核心技术实现;

3、整体业务泳道图:帮助你从整体上熟悉业务的流程;

4、系统架构图:帮助你掌握目前服务器的部署情况和网络链路。