技术人员该如何接手一个复杂的系统?

如何接手一个复杂的系统?

做为程序员,不管是小菜仍是老鸟,都会由于离职交接或者岗位异动等各类缘由,而避免不了要如羚羊奔跑版的速度接手一个复杂业务系统。由于只有尽快熟悉系统,方可以快速支持业务需求的研发。程序员

那么问题就来了,面对一个一无所知的复杂的系统,咱们该如何入手呢?数据库

本文将结合菜菜同窗多年来的沉(经)淀(验),再融合老中医望闻问切的招式,吐血整理成一剂锦囊妙药和一副图,送给你们。架构

《一剂良药》数据库设计

「菊花」看文档,记疑惑。spa

「薄荷」串文档,理脉络。架构设计

「莲心」讲系统,要知彼。设计

「荷叶」捋代码,了梗概。3d

玄参」盘经验,理大坑。调试

芦根」亲操刀,细解剖。日志

 

《一幅图》

第一招:看文档,知脉略。

老中医:望。望诊,是对病人的神、色、形、态、舌象等进行有目的的观察,以测知内脏病变。

菜菜同窗结合「望诊」而首创快速接手一个复杂系统之招式一:看文档,知脉略

当一个复杂的系统要交接到你手上时,理想中各类文档样样全,要啥有啥,而现实啪啪打脸。多数状况下都没有文档,若是有一些文档可看,不管质量如何,都是一件值得庆幸的事情。

若是项目组比较规范,沉淀了一些入门文档、产品介绍文档、业务架构设计文档、数据库设计文档,那就更值得庆幸啦,静下来仔细去看,经过文档多少会了解一些系统的前世此生,对系统有一个初步的认识。

不过,当接手一个系统时,必定要看看文档在哪里?是在 Wiki 上,仍是在 SVN、Git 上,如如有文档的状况下,尽快找到它,并粗略的看一遍。

看了这么多文档,确定有太多的疑惑,先拿小本本记下来,制造机会请老鸟给你答疑解惑。 

第二招:听细节,聊全局。

老中医:闻。闻诊,主要是听患者语言气息的高低、强弱、清浊、缓急……等变化,以分辨病情的虚实寒热。

菜菜同窗结合「闻诊」而首创快速接手一个复杂系统之招式二:听细节,聊全局。

拿着你事先记录好满满疑惑的小本本,组个会议,喊上老鸟好好给你指点迷津。

 

首先,请老鸟串一串文档。

大概理一理,而后把你以前小本本上的问题,一股脑抛出来当面请教。

 

而后,请老鸟讲一讲系统。

大概要了解一下系统的使用方是谁?系统依赖的系统有哪些?系统主要干系人有哪些?系统研发的需求来自于哪里?最重要的是要请老鸟演示一下如何把系统跑起来?跑起来后功能该怎么用?

 

最后,请老鸟捋一捋代码。

大概捋一捋代码的设计,了解一下主要分为几大块?程序入口在哪里?技术栈是啥样子?... ...

第三招:问疑难,解杂症。 

老中医:问。问诊,经过了解既往病史与家族病史、起病缘由、发病通过及治疗过程,主要痛苦所在,自觉症状,饮食喜恶等状况,结合望、切、闻三诊,综合分析,做出判断。

菜菜同窗结合「问诊」而首创快速接手一个复杂系统之招式三:问疑难,解杂症。

 

首先,问老鸟:要接手的系统,历史事故都发生过哪些?

为了避免贰过,要了解一下要接手的系统,历史的事故是代码问题,仍是人祸致使的?

 

最后,问老鸟:要接手的系统,坑在哪里?

大概了解一下老鸟以往趟过的那些坑,前车可鉴必是后车之师。重点了解系统有哪块会有潜在的问题,当接手以后必定要细心着重对待,防患于未然。

第四招:亲操刀,细解剖。

老中医:切。切脉又称诊脉,是医者用手指按其腕后桡动脉搏动处,借以体察脉象变化,辨别脏腑功能盛衰,气血津精虚滞的一种方法。

菜菜同窗结合「切诊」而首创快速接手一个复杂系统之招式四:亲操刀,细解剖。

经过前面三种招式相结合,咱们文档也看了,系统功能也了解了,历史事故也知道了,接下来要进入程序员最擅长区域——解剖代码。

 

首先,加注释,加关键日志。

找到程序入口,根据本身的理解,一步一步去加注释,要勇于动手去加,肯定不了的,有疑问的用注释标记好,或者记个大大的问号,把你的想法理解都用注释记录一下,相信对代码的理解,一遍比一遍更透彻。

固然,除了加注释的一种方式,还推荐加关键日志,由于加入关键日志,不过日志最好有一些特点,例如都还有「haha:」,这样可以在子模块调用比较复杂的情形下,在项目启动后,根据加入日志文件,直接关注「haha:」就能把相关子系统的调用流程串在一块儿,屡试不爽。

 

而后,跑应用,Debug。

除了加注释,加关键日志可以理解代码逻辑外,Debug 也是推荐的一种方式,从程序入口开始逐步进行调试,也会对代码有一个质的理解。

仁者见仁智者见智,依据我的习惯,仍是更推荐加日志,或许是由于 Debug 有些时候遇到反射或者库调用,跟着跟着就乱掉了。

在这里,建议必定要把应用跑起来,只有跑起来,才能根据以前加入的日志,梳理梳理系统调用关系,模块调用关系,再好好体验体验功能。

 

最后,画画图,善分享。

加日志、加注释、Debug 的事儿多数铁子都干过,可是能把本身对代码的理解真心画下来的估计会不多,这块真心推荐你们没事的时候静下来画一画,是对代码理解质的一次提高,画出来才能理解的更透彻,更清晰,若是闲暇之余把上手系统的通过写成手册,相信对于后面接手的同事而言是一大笔“财富”。

固然了,除了画图、写手册仍是不够的,重要的是可以拉几个同事进行分享一下,这样才能更快变成本身的知识,在这里忍不住要抛一张图。

另外,接手系统解剖代码这块放到最后一部分去谈,缘由这块确实考验我的的技术能力,并且是一个长久的过程,须要慢慢去磨。

真心寄语

本次主要谈谈如何快速接手一个系统?吐血推荐的一幅图和一剂药,若是有接手系统的困惑,并且没有更好的方法时,那不妨拿去实践,屡试不爽。

前路漫长,人生实苦,每一个人方法都不同,条条大路通罗马,选择适合本身的。奔跑是追梦人的气质,用奋斗定义人生价值,在奔跑中抵达远方,铁子们加油💪。

好了,分享就到这里,但愿对你有帮助。一块儿聊技术、谈业务、喷架构,少走弯路,不踩大坑。会持续输出原创精彩分享,敬请期待!