首页 > 编程语言 >程序员必备技能-怎样快速接手一个项目

程序员必备技能-怎样快速接手一个项目

时间:2023-06-12 11:07:16浏览次数:35  
标签:用户名 接手 项目 必备 系统 程序员 地址 文档 代码

作为一个程序员,我们很少能从头到尾参与一个新项目的开发。如果你经常开发的是新项目,那你真是太幸福了。

更多的情况是半路进入一个项目组进行开发,或者是有其他同事离职了,之前由他维护的系统转交给你维护。

还有一种情况就是领导不知道从哪里弄过来一个系统和一堆文档,然后就直接就把系统交给你了维护了。

遇到以上几种情况我们怎样才能快速熟悉上手项目,应对生产问题呢?下面是我自己在工作中的一点总结,希望能对大家有所帮助。

资料要要全

当你接手一个新项目(别人的项目)的时候,你要第一时间向把项目移交给你的人要到所有的资料。因为在这之后,这个同事可能就会离职了,到时再要什么文档就不太方便了。一般情况下,你需要拿到这些资料:

  • 项目代码的地址(svn地址或者是git地址);
  • 系统部署的Linux机器地址,登陆的用户名和密码(方便登陆上去看看机器的运行状况)
  • 数据库地址/用户名/密码(不要以为所有项目中都会有用户名密码,有些项目会将用户名密码加密)
  • 系统的登陆用户/密码(如果系统有页面,将可以登陆的用户要一个,不用自己再造用户了)
  • 其他中间件地址(MQ、Redis等)
  • 需求文档
  • 接口文档
  • 其他所有资料(上面的文档时必须的,如果除此之外还能拿到其他文档,都可以保存下来)

技术栈要看懂

拿到文档资料后,我个人的经验是先要快速浏览下文档,不需要看清文档的每个段落,但是我们要通过略读文档知道这个系统大概是干什么的,有哪些功能。这点对我们后续看代码帮助很大。

熟悉项目技术栈

快速浏览完文档之后,我们就要开始看代码了。这个阶段,你需要能将代码在本地跑起来,知道这个项目运用了哪些技术栈,每个技术栈的作用是什么。

熟悉上下游系统

搞清楚了上下游系统,我们就知道了谁调用了我们系统,或是我们的系统调用了谁,查起问题来也能有的放矢。

知道去哪里查日志

日志是查线上问题的关键,必须要知道怎么查日志,去哪里查日志。

知道怎么打包

接了新需求或者改了Bug之后你肯定要发布吧,那你必须要知道这个怎么打包部署。

知道怎么部署

同上

熟悉业务代码

到了最关键的一步了,但是对于这步我觉得不同的系统我们可以区别对待下。有的系统我们接手过来是要在此基础上长期开发维护的,那这种系统就需要我们好好梳理下业务。

但是有的系统比较稳定了,也不会再加什么新功能,对于这种系统要不要深入研究就需要我们自己权衡了。因为时间成本上可能划不来。

下面是我熟悉业务的一般流程:

  • step1:在看业务代码之前,首先需要看完数据库的表设计,不然会不知所云。
  • step2:然后就是梳理各个接口了,一般是各个Controller(一般系统功能都是通过Controller暴露出去的),如果你能每个接口跟进去debug一遍,整个调用流程都梳理清楚,那么这个业务你就梳理清楚了(这步最好根据接口文档来梳理)
  • step3:当然,系统的功能不都是由Controller提供的,有的是通过定时任务来触发的,所以你要看看系统中配置了哪些定时任务,都实现哪些功能;
  • step4:还有的功能是通过消费MQ触发的,所以也要看看有没MQ相关的交互;
  • step5:类似其他的交互

关于熟悉业务代码这块可能没有太通用的方法,还是需要大家自己总结。




资料要要全

当你接手一个新项目(别人的项目)的时候,你要第一时间向把项目移交给你的人要到所有的资料。因为在这之后,这个同事可能就会离职了,到时再要什么文档就不太方便了。一般情况下,你需要拿到这些资料:

  • 项目代码的地址(svn地址或者是git地址);
  • 系统部署的Linux机器地址,登陆的用户名和密码(方便登陆上去看看机器的运行状况)
  • 数据库地址/用户名/密码(不要以为所有项目中都会有用户名密码,有些项目会将用户名密码加密)
  • 系统的登陆用户/密码(如果系统有页面,将可以登陆的用户要一个,不用自己再造用户了)
  • 其他中间件地址(MQ、Redis等)
  • 需求文档
  • 接口文档
  • 其他所有资料(上面的文档时必须的,如果除此之外还能拿到其他文档,都可以保存下来)

技术栈要看懂

拿到文档资料后,我个人的经验是先要快速浏览下文档,不需要看清文档的每个段落,但是我们要通过略读文档知道这个系统大概是干什么的,有哪些功能。这点对我们后续看代码帮助很大。

熟悉项目技术栈

快速浏览完文档之后,我们就要开始看代码了。这个阶段,你需要能将代码在本地跑起来,知道这个项目运用了哪些技术栈,每个技术栈的作用是什么。

熟悉上下游系统

搞清楚了上下游系统,我们就知道了谁调用了我们系统,或是我们的系统调用了谁,查起问题来也能有的放矢。

知道去哪里查日志

日志是查线上问题的关键,必须要知道怎么查日志,去哪里查日志。

知道怎么打包

接了新需求或者改了Bug之后你肯定要发布吧,那你必须要知道这个怎么打包部署。

知道怎么部署

同上

熟悉业务代码

到了最关键的一步了,但是对于这步我觉得不同的系统我们可以区别对待下。有的系统我们接手过来是要在此基础上长期开发维护的,那这种系统就需要我们好好梳理下业务。

但是有的系统比较稳定了,也不会再加什么新功能,对于这种系统要不要深入研究就需要我们自己权衡了。因为时间成本上可能划不来。

下面是我熟悉业务的一般流程:

  • step1:在看业务代码之前,首先需要看完数据库的表设计,不然会不知所云。
  • step2:然后就是梳理各个接口了,一般是各个Controller(一般系统功能都是通过Controller暴露出去的),如果你能每个接口跟进去debug一遍,整个调用流程都梳理清楚,那么这个业务你就梳理清楚了(这步最好根据接口文档来梳理)
  • step3:当然,系统的功能不都是由Controller提供的,有的是通过定时任务来触发的,所以你要看看系统中配置了哪些定时任务,都实现哪些功能;
  • step4:还有的功能是通过消费MQ触发的,所以也要看看有没MQ相关的交互;
  • step5:类似其他的交互

关于熟悉业务代码这块可能没有太通用的方法,还是需要大家自己总结。

标签:用户名,接手,项目,必备,系统,程序员,地址,文档,代码
From: https://blog.51cto.com/u_14347868/6460613

相关文章

  • 美女程序员:仅有30天,该怎么准备?
    你好,我是田哥昨天,一个美女同学私信我,现在想下个月就去面试,现在该如何准备面试,如何快速复习。下面,我来说一下我的看法。了解情况第一步,肯定是要了解自己的情况,不能随便说说你怎么怎么快速复习。要结合自己的技术栈来。针对性得来安排,而不是一概而论。比如说,你在项目中用过Spring、S......
  • 程序员减少BUG的两个小妙招!
    原创:陶朱公Boy(微信公众号ID:taozhugongboy),欢迎分享,转载请保留出处。​点评:我们说衡量一个程序员水平的高低往往有很多因素,但有一个因素至关重要即代码质量。如果程序员写的功能在测试阶段就被频繁打回,上线了之后,用户反馈这里有问题那里有问题,大家可以想像这样的程序员水平能......
  • 程序员避免项目延期的四个小窍门!
    原创:陶朱公Boy(微信公众号ID:taozhugongboy),欢迎分享,转载请保留出处。点评:身为程序员的你,不知道在你身上曾经有没有发生过,因为种种原因,导致项目延期的情况?(约定某个时间点上线,结果拖到几天时间后)这里面我相信肯定有一些客观因素存在:比如就像上文最后一幅漫画图所描述的那样,市场......
  • 01-《程序员修炼之道——从小工到专家》读书笔记
     这本书描述了一些程序员编写大型项目时所应该遵循的最基本的原则和可以使用的最基本的工具。它没有描述某一种特定的语言、特定的算法,也没有推荐一种编程方法作为万灵药,而是介绍了实用主义的思想,并介绍了一整套方法论帮助程序员与团体避免错误、避免浪费无谓的时间,更有效地开发......
  • 02-《程序员修炼之道——从小工到专家》读书笔记
    复制别人的代码时,代码中可能包含了我们并不需要的段落,或者是出现了我们并不理解的逻辑,这会导致我们的代码不够清晰、不够简洁。另外,如果我们使用之前成功的代码来解决新问题,那么我们就会变成一个只能解决管理员问题,却不能写出优秀代码的程序员。最后,当我们不写注释时,这会让后来的......
  • 03-《程序员修炼之道——从小工到专家》阅读笔记
     重写、重做和重新架构代码合起来,称为重构。那么我们该在什么时候进行重构呢?当你遇到绊脚石——代码不再合适,你注意到有两样东西其实应该合并或是其他任何对你来说是“错误”的东西,那么你不要对改动犹豫不决,应该现在就做。但往往现实世界特别复杂,当你去找你的老板和客户,对他们说......
  • 程序员自由职业的第一次接单,我踩了哪些坑?
    Hello,大家好,我是吹白,今天来聊一聊我自由职业之后接的第一个单子以及这个单子带给我的经验教训,希望对大家避坑有所帮助。说来惭愧,在深圳做了几年Android/Flutter画图仔,并没有存下什么钱。离职的时候,我手上只有差不多一年的生活费。离职的第一个感觉是心慌,因为不再会有人在每个月的......
  • #yyds干货盘点# LeetCode程序员面试金典:环形链表
    题目:给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos不作为参数进行传递 。仅仅是为了标识链......
  • #yyds干货盘点# LeetCode程序员面试金典:移除链表元素
    1.简述:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。 示例1:输入:head=[1,2,6,3,4,5,6],val=6输出:[1,2,3,4,5]示例2:输入:head=[],val=1输出:[]示例3:输入:head=[7,7,7,7],val=7输出:[]2.代码实现:class......
  • Python 3.8与普通程序员有关的几个新特性
    ==============1、字典支持内置函数reversed()了。在Python3.7之前的版本中,是不支持内置函数reversed()的,但在Python3.8中,可以这样做了,2、加强了函数调用时关键参数形式的限制。在Python3.7之前的版本中,是允许这样用的,虽然很少有人这样做但在Python3.8中,不再允许了,3、改进了函......