阅读本文大概需要 5 分钟。

作为程序员,无论是小菜还是老鸟,都会因为离职交接或者岗位异动等各种原因,而避免不了要如羚羊奔跑版的速度接手一个复杂业务系统。因为只有尽快熟悉系统,方能够快速支持业务需求的研发。

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

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

《一剂良药》

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

「薄荷」串文档,理脉络。

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

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

玄参」盘经验,理大坑。

芦根」亲操刀,细解剖。

《一幅脑图》

1

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

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

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

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

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

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

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

2

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

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

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

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

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

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

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

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

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

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

3

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

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

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

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

为了不贰过,要了解一下要接手的系统,历史的事故是代码问题,还是人祸导致的?

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

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

4

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

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

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

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

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

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

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

然后,跑应用,Debug。

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

仁者见仁智者见智,依据个人习惯,还是更推荐加日志,或许是因为 Debug 有些时候遇到反射或者库调用,跟着跟着就乱掉了。

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

最后,画画图,善分享。

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

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

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

5

真心寄语

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

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

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

推荐阅读:

真实|技术人员该如何站好最后一班岗?

真实|为什么要做有灵魂的程序员?

真实|技术人员该如何接手一个复杂的系统?吐血推荐这几招相关推荐

  1. 技术人员该如何拥有一个“改变世界”的创意?

    作者 | 邱岳 出处 | 极客时间「邱岳的产品实战」专栏 你好,我是邱岳,这篇文章来自我的产品实战专栏.今天我们来聊一聊,作为技术人,当你产生了一个好点子,该如何验证你的创意. 大量收集信息的重要性 ...

  2. *【思路】程序员怎么快速接手一个项目

    可能不管新手老手有些程序员,接手一个项目之后都会多少有些迷惘. 以下是本人总结出来的一点小心得,如果错误希望大家给我留言,一起讨论: 最重要的事儿 如果你总是看见代码多就发愁,看见代码脏乱差就诅咒埋怨 ...

  3. 技术人员为什么应该参加社区活动?

    2019独角兽企业重金招聘Python工程师标准>>> 本文来自 @Ada李力 的博客,原文如下: 2008年经济危机的时候,周围的惶恐情绪不断蔓延,而且各种如何躲过裁员的帖子也层出 ...

  4. 警惕技术人员的极端性

    警惕技术人员的极端性 以前一直在研究技术,没日没夜的学习,后来发现:把技术玩的转,那不算什么大的本事,把人玩的转,才是本事.看到多,接触的多,思考的多了,感触也自然多了. 很多的技术朋友,在没有搞技术 ...

  5. IT技术人员的六大方向

    几乎每个企业都需要技术员的支持,生产制造型企业需要现场生产控制和工艺流程方面的技术人才:it等高科技行业需要大量软件研发和设备维护的硬件工程师:房地产.建筑工程领域需要建筑设计师.土木工程师和施工技术 ...

  6. 技术人员的艰难转身——管理角色的认知和转变

    技术人员的艰难转身--管理角色的认知和转变 某公司老总提拔了两位年轻管理者:A经理和B经理.二者都刚从技术工作提升到技术管理职位.A经理觉得责任重大,技术进步日新月异,部门中又有许多技术问题没有解决, ...

  7. 技术人员的赚钱之道-1:开篇

    摘要: 大多数技术人员有一个天然的短板,就是把太多的精力放在技术本身上,容易忽略了周边的人,容易忽略了身边的赚钱机会,随着技术的更新迭代,随着年龄的增长,便逐渐远离时代,逐渐丧失原本拥有的优势. 但同 ...

  8. 技术人员个人职业规划发展六大方向导航

    几乎每个企业都需要技术人员的支持,生产制造型企业需要现场生产控制和工艺流程方面的技术人才:IT等高科技行业需要大量软件研发和设备维护的硬件工程师:房地产.建筑工程领域需要建筑设计师.土木工程师和施工技 ...

  9. mysql每秒支持多少并发_如何设计一个高并发系统?

    面试题 如何设计一个高并发系统? 面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了.为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先. 如果你确 ...

最新文章

  1. 勇敢的交流者在敏捷组织中的重要性
  2. 冷热分离和直接使用大数据库_中台有“数”:大数据技术为苏宁818保驾护航
  3. java 和 flash socket通信封装
  4. Ubuntu下git使用教程
  5. vue路由上的#/怎么去掉_如何去掉vue路由中的#
  6. C#中字符串保留双引号
  7. Git 好用的客户端 SourceTree破解
  8. php 获取视频首帧,从视频中提取特定帧的最快方法(PHP/ffmpeg/anything)
  9. php多少内置函数,php有多少个内置函数
  10. 【阳谋】学会这几招,年底晋升不慌了!
  11. PostgreSQL 配置内存参数
  12. python爬虫学习之XPath基本语法
  13. vscode还用装git_使用vscode实现git同步
  14. cuda+cudnn下载安装
  15. WIN10系统重新安装与初始化教程
  16. 华为HG8347R V3R016C10S135光猫桥接 北京联通 恢复华为原版
  17. 巧用千寻位置GNSS软件|逐点放样应用技巧
  18. SAP批量修改物料标准成本
  19. 算法竞赛入门经典——训练指南
  20. 【坑2】maven通过nexus私服服务器下载jar包提示无权限Authentication failed for http://localhost:8081/repository/maven-pub

热门文章

  1. Python:图书管理系统
  2. ADB 调试手机的三种方式(USB、WLAN、WIFI)
  3. ucore_lab4实验报告
  4. 抓包神器 Wireshark,帮你快速定位线上网络故障(3)
  5. Ubuntu 14.04 xfce中文输入法安装
  6. java 声明一个bus类_第11章 新特性 – 你应该更新的Java知识之Observer - Java 基础入门笔记...
  7. Break or Repair?
  8. 《Web GIS原理与应用开发》读书笔记(7)
  9. 你会选择成为什么样的人
  10. [c++17] --- c++17相对于c++11的新增特性