入职新公司,如何快速熟悉一个系统?

前言

大家都知道我们新入职一家公司,经常会面临下面一些场景:

  • 新人入职,需要学习已有系统,作为 landing 的一部分,如何学习?
  • 被拉过去参与一个陌生系统的迭代开发或者系统维护(bugfix),如何快速上手?
  • 同事离职或转岗,需要把系统交接给你,怎么去接? 内心 os:这是一口锅吗?

这样的场景多了,就需要去梳理常见问题以及应对方法,方便后续遇到类似场景可以快速应对。本文总结熟悉系统主要分为:业务学习、技术学习。每部分会梳理一些在学习过程中需要解答的问题,这些问题随着经验的积累需要逐步补充完善。

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

自动化测试篇—实战案例:自动化及接口自动化本质及适用场景

一、业务学习

业务学习就是从业务角度去学习系统,我们需要了解系统的客户是谁、使用人是谁、带来了什么价值,系统提供了哪些功能等。不清楚业务,就等于不知道系统在干什么。技术是为业务落地而服务,清楚了业务才知道怎样用技术更好地服务业务,所以业务学习是熟悉一个系统的首要任务。这块主要的学习方式有跟产品、运营、开发沟通,学习产品设计文档文档、PRD、自己使用系统,还有一些常见图,如产品功能架构图、业务流程图、功能树,用例图等。

常见问题:

  • 系统所在行业的情况是怎样?
  • 系统的目标用户是谁?比如是给公司高层做决策用?给运营或客服用?还是互联网用户用?
  • 平均有多少人在使用?高峰期有多少人在用?
  • 系统有什么业务价值?有哪些指标可以衡量系统业务价值?
  • 系统有哪些功能模块?
  • 系统有哪些领域概念?梳理下系统的领域模型;
  • 系统的关键业务流程有哪些?关键业务流程是怎样?
  • 系统的非功能性需求有哪些?如性能、质量、扩展性、安全性等;
  • 系统未来的发展规划是怎样?

二、技术学习

技术学习主要学习系统的架构、如何实现、系统的运维等。描述一个系统的架构有五视图方法论。

五视图分别是:

逻辑架构
开发架构
运行架构
物理架构
数据架构

2.1、逻辑架构

逻辑架构着重考虑功能需求,系统应当向用户提供什么样的服务,关注点主要是行为或职责的划分。常用表达图形,静态图有包图、类图、对象图;动态图有序列图、协作图、状态图、活动图。逻辑架构的核心设计任务是模块划分、接口定义、领域模型细化。

常见问题:

  • 有哪些子系统或模块?系统之间是什么样的关系?
  • 对外上下游接口有哪些?对接人是谁?
  • 关键业务流程怎么实现的?用类图、序列图等方式表达出来。

2.2、开发架构

开发架构关主要关注系统源代码、第三方 SDK、使用的框架、中间件、工具包。

常见问题:

  • 代码在哪?
  • 包怎么划分的?怎么分层?如 mvc、controller-service-dao;
  • 用了什么框架,如 ssh、dubbo;
  • 用了哪些工具包?如 apache commons、guava;
  • 用了哪些中间件?如 metaq、tair、schedulerX、Diamond;
  • 依赖哪些平台?如权限平台、流程引擎等。

2.3、运行架构

运行架构的着重考虑运行期质量属性,关注点是系统的并发、同步、通信等问题,这势必涉及到进程、线程、对象等运行时概念,以及相关的并发、同步、通信等。

常见问题:

  • 系统能支撑多少 qps?峰值 qps 多少?
  • 与上下游系统怎么交互的?rpc?http?同步还是异步?

2.4、物理架构

物理架构的设计着重考虑安装和部署需求,关注点是目标程序及其依赖的运行库和系统软件最终如何安装或部署到物理机器,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性、持续可用性、性能和安全性等要求。

常见问题:

  • 系统如何发布部署?有哪些部署环境?
  • 系统有多少台机器?
  • 系统部署怎么部署的?关注接入层,部署方式,如集群部署、分布式部署等
  • 有没有容器化?
  • 有没有多机房部署?

2.5、数据架构

数据架构的设计着重考虑数据需求,关注点是持久化数据的存储方案,不仅包括实体及实体关系数据存储格式,还可能包括数据传递、数据复制、数据同步等策略。

常见问题:

  • 数据存储在哪?用了什么数据库,如 oracle、mysql;
  • 梳理 E-R 图;
  • 数据量有多少?是否有分库分表?
  • 用了哪些 nosql 库?
  • 有哪些数据同步任务?
  • 大数据框架的使用情况如何?

2.6、系统运维

系统运维重点关注什么时候会出问题,出了问题怎么解决。

常见问题:

  • 什么时间容易出问题?比如电商 双11,对系统的压力很大,这时候很容易出问题;
  • 对关键功能是否有监控?需要看系统有配置了哪些报警项,监控了哪些方面;
  • 出了问题怎么解决?日志在哪?是否有全链路跟踪?是否有一些紧急操作,比如开关配置、降级、限流配置;
  • 系统有哪些坑?找开发同学回顾历史问题,以免踩坑。通过同事总结的 case,或者与负责的产品、运营、技术与了解。系统总会有一些坑,需要把这些坑填上。历史代码经过多次迭代总会导致复杂度高(分支、嵌套、循环很多),存在设计漏洞,性能隐患等,很难维护,这些就需要我们去重构了。记住有一句话:填的坑越大,能力越大;
  • 运营、客服反馈的常见问题有哪些?

总结

今天的文章就到这里了,希望这篇文章能够让小伙伴们更好的融入到新的公司哟,在新的公司顺风顺水哟,喜欢的小伙伴记得点赞收藏评论加关注哟。

最后祝大家都能找到心仪的工作,快乐工作,幸福生活,广阔天地,大有作为。PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G【点击文末小卡片免费领取】

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了! 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我不太熟悉Java,但是我可以为你提供一些建议,比如:首先,你可以尝试学习一些Java的基础知识,比如变量定义、继承、接口等;其次,可以在网上搜索一些Java的教程,从中积累Java的编程经验;最后,可以参加一些Java的在线训练课程,以加快你掌握Java的进度。 ### 回答2: 要尽快入职Java开发领域,你可以按照以下几个步骤来学习和提升自己的技能: 1. 广泛学习基础知识:开始学习Java编程语言的基础知识,包括Java的语法、数据类型、变量、循环和条件语句等。可以通过网上的教程、书籍或在线课程来学习。 2. 学习面向对象编程(OOP):Java是一种面向对象的编程语言,因此理解和掌握面向对象编程的概念是至关重要的。需要学习类、对象、封装、继承和多态等概念,并能够应用到实际的编程项目中。 3. 实践项目:通过编写简单的Java程序来巩固所学知识。使用Java开发工具(如Eclipse或IntelliJ IDEA)创建并运行一些基础的程序,从简单的“Hello World”程序开始,逐渐挑战更复杂的项目。 4. 学习常用的Java库和框架:Java拥有许多流行的库和框架,它们可以极大地提高你的开发速度和效率。学习如何使用常用的库,如Java集合框架、IO库和数据库访问库,以及一些流行的Java框架,如Spring和Hibernate。 5. 参与社区和开源项目:加入Java开发者社区,与其他开发者进行交流和互动。参与开源项目可以使你接触到实际的项目经验,并从其他经验丰富的开发者那里学习和提高自己的技能。 6. 持续学习和自我提升:Java是一个不断发展和变化的领域。保持学习的动力,关注最的技术趋势和发展,不断提升自己的编程能力和技术水平。 总之,快速入职Java开发需要通过学习基础知识、编写实践项目、学习常用库和框架,并积极参与社区和开源项目来提升自己的能力。同时,持续学习和保持好奇心也是成为一名优秀的Java开发者的关键。 ### 回答3: 如果想要快速入职Java岗位,以下是一些建议: 1. 系统学习Java基础知识:首先理解Java的核心概念,如面向对象编程、数据类型、循环和条件语句等。可以通过在线教程、学习网站和Java编程书籍进行学习。 2. Java开发环境的搭建:安装Java Development Kit(JDK)和集成开发环境(IDE),如Eclipse或IntelliJ IDEA,帮助你编写和运行Java代码。 3. 学习使用常见的Java开发工具和框架:熟悉常用的Java开发工具,如Maven和Git,并学习一些常用的Java框架,如Spring和Hibernate。 4. 实践编写小型项目:通过编写小规模的Java项目,加深对Java语言和各种概念的理解。可以从简单的控制台应用程序开始,逐步扩展到Web开发和数据库操作。 5. 参与开源项目和社区:参与Java开源项目和社区讨论,能够学习到其他开发者的经验和最佳实践,提升自己的编码能力和理解。 6. 多练习和解决问题:通过解决编程问题和参与在线编程练习,提升自己的编码技巧和调试能力。 7. 继续学习和更知识:Java是一门不断发展的编程语言,持续学习的语言特性和发展趋势,保持对Java生态系统的了解。 在快速入职Java岗位的过程中,要保持积极的学习态度和扎实的实践能力,不断提升自己的编程技能和解决问题的能力,同时与其他开发者进行交流和学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值