如何尽可能快地上手一个业务or项目

简介: 本文简单讲述作者对于“怎么尽可能快地上手一个新业务/项目?”这个问题的个人理解。

在日常工作中,作为程序员可能会经常需要面对业务的变动和接受组织的工作安排,在不同的部门和业务下,我们所需要做的工作是不一样,那我们要如何尽可能快的上手一个业务系统呢?我在这简单聊聊自己的看法~

image.png

1.尽可能全地搜集项目资料

不论是转岗还是加入新团队,直接从事一个全新的项目机会比较罕见(尽管并非不可能)。大多数情况下,我们会接手别人留下的“遗产”。这无外乎几种情形:


1、前同事离职,你继承了他的部分工作;


2、或者你加入了一个新的项目组,被分配了特定的任务;


3、又或者领导对你青睐有加,除了原本职责外,还额外交付了一系列任务,附带了必要的文档。


所以在第一步,我们要去做的就是收集新项目的项目文档。就像学习一个中间件或者一门技术一样,文档就是一份说明书,有了说明书我们才能快速的去了解这个系统的概况甚至是细节。文档沉淀是我们在了解一个项目/业务的时候,最直接、便捷的方式。这也是为什么我觉得要把它放在第一位。


通常团队都会有一个新人空间,存放一些新人要看的基础资料信息,比如一些公共的平台、代码库地址、项目信息等等。这些可以帮我们了解一些项目的概况,一些基础能力依赖等等,但是这些对于我们来说可能还不太够。


我们还需要问带自己的师兄/组长(不同公司称谓可能不一样)要一些我们即将要接受的系统的详细资料。比如说:系统的架构设计、系统的领域划分、历史模块开发时候的设计文档 等等。即使不是自己之后可能负责的模块,有时间也要去阅读相关的文档,因为模块之间可能也会有一些相互依赖或者彼此支撑的关系存在。


不要不好意思开口去要,即使有点内敛的性格,也要“腼腆”的去要资料!因为我们了解的背景、相关领域知识越多,以后上手时候遇到的问题就会越少。不然可能后续需求或者什么来了,你发现什么模型我们都不清楚,那就会一步一坎。


2.梳理领域数据模型

我们在读文档的时候,不要只是简单的看看,有个印象就好,这对于我们接手一个项目是远远不够的。在这里抛个问题:我们阅读文档的根本目的是什么?(这个问题并不好,其实最根本的问题就是文章的标题 怎么尽可能快速地上手项目/业务?)


其实解决了这个问题,我们后续的工作就是顺藤摸瓜了。那我认为的问题的答案是什么呢?或者说问题的关键是什么?


这个关键问题就是 数据模型。


任何系统和业务的运作,不管是面向过程设计也好,面向对象设计也好,领域模型设计也好,其核心都是数据模型的设计。


单个数据模型自身的设计,比如:包含哪些属性、每个属性的含义是什么、这个模型本身代表什么等;同时也有数据模型之间关系的设计,比如:商品和SKU是1:n的关系,榜单和商品、商家等等模型是1:n的关系等。当然这里只是举个例子哈,具体问题具体分析。


我们在梳理数据模型的过程中,可以尝试画ER图或者其他图来把这些关系都表示出来,虽然画图的过程在外人眼里可能看起来会花里胡哨,但是只要帮助我们更好的理解和记忆这个模型这个系统,那就是一个不错的方法。我个人就喜欢边看文档边作图,这样即使后边忘记了,会过来翻一下之前的图例,就可以快速的回忆起来。


了解了业务系统内对应的数据模型,我们可以根据文档以及我们自己的理解,给他们划一下不同的领域,然后就可以找出来不同领域的哪些数据模型进行了交互,这样我们也就慢慢理解了业务里不同领域的范围。再到我们看代码的时候,我们对代码里的逻辑关系理解也可以更快更轻松。


3.理解项目结构及业务逻辑

在完成上述两步之后,我感觉我们就可以慢慢开始看代码了。因为我们已经理解了对应的数据模型,所以我们完全可以按照数据模型作为切入点,开始看项目。


一个项目,通常都会有不同的项目结构,比如说有的是MVC、有的是DDD,又或者其他。所以我们了解一个项目,首先肯定就是它的结构、模块(目录层级)上的划分。我们可以知道入口层在哪里、核心逻辑层在哪里、数据交互层在哪里、对外暴露的接口一般都定义在哪里等等这些项目的基础信息。了解了这些可以方便我们以后定位不同的代码在的位置,方便我们快速定位我们疑问的答案可能会出现在哪个目录(包)下。


之后我们就可以开始链路上的熟悉,参照我们之前搞出来的数据模型,我们可以逐个了解数据模型在系统内对应的业务逻辑设计/实现(这些在文档里或多或少也会提及,我们要对比着看),对于每个模块或者功能的业务流程,我们可以边看边作业务流程图来梳理。作图可以帮我们理清逻辑,也方便实在有看不懂的地方的时候,请教他人。


当然啦,遇到看不懂的流程也很正常,每个系统都会有很多新手不友好的内容。这时候不要害羞,还是那句话:“即使有点内敛的性格,也要“腼腆”的去要xxx”。我们可以去咨询负责对应业务的同学(一般根据文档的作者都能定位到),问一下我们的问题,然后记录下来。如此反复,了解系统的不同业务流程了解个七七八八(百分百肯定不可能的,后续还是需要通过实践来补充剩下的知识的)。


4.学习常用平台相关知识

在了解了差不多之后,我们就要开始为我们实战做准备了。


实战部分,通常会涉及到:需求的生命周期、项目的部署、开发模式(多分支开发、单分支开发)、中间件平台的使用、日志查询等等。


这些一般在新人文档中也应该会有,如果没有的话,就找自己的师兄问下(能找到肯定还是自己尽力找哈)。自己可以尝试搞个测试的分支,写一些测试的代码了解下中间件的使用、平台的使用等等,走个流程熟悉一下。


到这里,我感觉我们上手一个项目的准备基本上就差不多了,剩下的一些可能就要在实际项目需求中去学习了。


5.寄语与展望

本文呢,就是简单讲讲自己对于“怎么尽可能快地上手一个新业务/项目?”这个问题的理解,因为是从个人角度的理解写的,所以可能也会有一些遗漏或者和各位意见不一致的地方,大家有补充的或者指正的,欢迎评论~

希望这些建议能帮助我们快速适应新项目,实现个人和职业的成长!祝愿大家 bug--; money++;





来源  |  阿里云开发者公众号

作者  |  做棵大树



相关文章
|
10月前
|
人工智能 JSON JavaScript
用 AI + 高德地图 MCP,3 小时做出杭州美食地图
本文记录了一次从灵光一现到快速落地的 AI + 地图服务实践,通过结合 Cursor 与高德 MCP 地图服务平台,作者仅用几个小时就实现了一个可交互、可筛选、可推荐的杭州美食地图应用。
1723 25
用 AI + 高德地图 MCP,3 小时做出杭州美食地图
|
7月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
11月前
|
数据采集 人工智能 数据可视化
如何让AI写出高质量的数据分析报告?DataV-Note的评估体系揭秘
本文围绕DataV-Note智能分析创作平台的评估体系建设展开,旨在探索如何在AI技术快速发展的背景下,构建一套科学、可量化、多维度的数据分析报告评估体系。
508 10
|
前端开发 UED 开发者
开发同学如何理解业务?
本文深入探讨了理解业务的重要性及其对于软件开发流程的深远影响。
|
11月前
|
人工智能 自然语言处理 关系型数据库
如何构建和调优高可用性的Agent?浅谈阿里云服务领域Agent构建的方法论
本文深入探讨了Agent智能体的概念、技术挑战及实际落地方法,涵盖了从狭义到广义的Agent定义、构建过程中的四大挑战(效果不稳定、规划权衡、领域知识集成、响应速度),并提出了相应的解决方案。文章结合阿里云服务领域的实践经验,总结了Agent构建与调优的完整路径,为推动Agent在To B领域的应用提供了有价值的参考。
3861 22
如何构建和调优高可用性的Agent?浅谈阿里云服务领域Agent构建的方法论
|
人工智能 自然语言处理 供应链
为什么一定要做Agent智能体?
作者通过深入分析、理解、归纳,最后解答了“为什么一定要做Agent”这个问题。
2213 41
为什么一定要做Agent智能体?
|
10月前
|
机器学习/深度学习 人工智能 缓存
万字综述,讲一讲这两年大模型这整个领域到底发展了哪些方面
本文深入探讨了自2023年GPT-4发布以来,大型语言模型(LLM)领域的发展趋势及其技术演进路径。
万字综述,讲一讲这两年大模型这整个领域到底发展了哪些方面
|
10月前
|
人工智能 自然语言处理 搜索推荐
从理论到应用:AI搜索MCP的最佳实践案例解析
本文深入探讨了如何通过 MCP 协议让大语言模型(LLM)高效调用外部工具,并结合多个实际场景展示了 MCP 在 AI 应用中的价值和未来潜力。
|
搜索推荐 架构师 数据挖掘
架构实操:画好一张业务模型图
本文以SDK设计的角度分析了如何构建一张属于SDK的各个业务的模型图。
1001 14
|
12月前
|
机器学习/深度学习 数据采集 存储
大模型微调知识与实践分享
本文详细介绍了大型语言模型(LLM)的结构、参数量、显存占用、存储需求以及微调过程中的关键技术点,包括Prompt工程、数据构造、LoRA微调方法等。
2931 72
大模型微调知识与实践分享