应届生入职银行科技岗:组长让我看一下系统,我到底要看什么?
组长说「先看下这个系统」,不是让你做代码 review。先抓边界、文档地图和核心链路,才能把系统主线讲清楚。
很多应届生刚进银行科技岗,组长丢你一句:"你先看下这个系统。"然后人就懵了。代码下下来,打开 IDE,从 controller 看到 service,从 service 看到 mapper,越看越细,越看越乱。看了三天,最后组长问你:"这个系统主要是干嘛的?"你只能说:"嗯……里面有很多接口。"这就很尴尬了。
我是北哥,一个帮人进银行,也劝人别进银行的人。今天说点很实在的:组长让你熟悉系统,不是让你做代码 review。我见过太多新人,一上来就犯一个错:代码刚拉下来,就开始研究某个方法为什么这么写、某个 SQL 为什么这么查、某个字段为什么这么命名。这不是不认真,但方向错了。你刚进组,最重要的不是搞懂每一行代码,而是先搞清楚:这个系统为什么存在?它服务哪类业务目的?它的核心链路是什么?
建议按"三个方向"去熟悉系统。
第一个方向:先看它"连着谁"、谁"连着它"
代码下下来之后,不要急着钻业务逻辑。你要先搞清楚:这个系统有没有调用别的系统?别人有没有调用它?它是自己独立完成业务,还是只是链路里的一环?
比如一个银行内部系统,可能会连:客户信息系统、账户系统、账务系统、审批系统、参数平台、消息通知系统、影像系统、风控系统。你不用一开始就知道每个系统里面怎么实现,但你至少要知道:这个系统不是孤岛,它在哪些地方依赖别人,又在哪些地方被别人依赖。这一步做完,你对系统的边界就有感觉了。
第二个方向:去翻历史文档,但别迷信历史文档
一般来说,confluence、老需求文档里,都会藏着一些历史资料。"藏着"是因为这些文档一般有三个特点:不全、过时、没人维护。但它们有用——最大的价值不是让你照着文档背,而是帮你快速建立第一版系统地图。
你可以从文档里先看这些东西:这个系统当初为什么建、主要支撑哪类业务、核心功能有哪些、和哪些系统交互、有哪些批量任务、有哪些核心表、有哪些历史改造点。
你要带着怀疑去看文档,不要看到文档写了就觉得一定是现在的真实逻辑。银行系统跑了几年之后,很多东西早就变了,文档可能还停留在三年前。但它至少能告诉你:这个系统曾经为什么存在。这就够你先入门了。
第三个方向:抓核心链路,不要一头扎进细节
熟悉系统最怕什么?最怕你把自己看成代码扫描器。你看了 5000 行代码,但不知道这套系统到底在干嘛。正确的方式是反过来:先问业务目的,再找核心链路。
比如这个系统是参数管理系统,那它存在的目的是什么?不是提供增删改查,而是:保证各业务系统用到的参数可配置、可审批、可追溯、可生效、可回滚。那核心链路就不是"查参数列表",而是:参数创建→参数审批→参数发布→参数生效→参数使用→参数回滚→审计留痕。
再比如这是一个息费表单系统,它存在的目的也不是"填表",而是:把业务上要调整的息费信息,通过流程化、可审批、可追踪的方式落到后续账务处理里。那你就要看:谁发起表单、填哪些关键字段、走什么审批、审批通过后调用哪个系统、失败怎么处理、结果怎么回写、日志怎么查。
这才叫熟悉系统——不是你把某个 if else 看明白了,而是你知道:这个系统的主干在哪里。
注意(敲黑板!)
你刚开始熟悉系统时,不要钻到细节里出不来。尤其不要一上来就研究:这个变量为什么这么命名、这个方法为什么没抽出来、这个 SQL 能不能优化、这个类是不是写得不优雅。这些问题以后当然可以看,但不是第一阶段的重点。组长让你熟悉系统,不是让你上来审判祖传代码。你第一阶段的目标就一个:把系统主线讲清楚。
还有一个新人很容易忽略的点:看完之后,不要傻坐着等组长安排。你可以主动去找组长说:"我这两天看了一下系统,大概理解是这样的:这个系统主要是为了支撑 XX 业务,核心链路是 A 到 B 到 C,中间会调用 XX 系统和 XX 系统。"大胆的找,大胆的说,因为你说错了,组长会纠正你;你说对了,组长会觉得你上手还挺快。如果你不找,组长可能以为你都看懂了,丢你个需求,你嘛嘛做完之后发现对系统理解的有问题,做错了就很尴尬。这其实就是一次低成本复核。
很多新人不敢问,怕显得自己不懂。但你要明白:新人最怕的不是不懂,最怕的是自己在错误方向上默默努力。你以为你很认真,组长一看:你看了半天,主线没抓住。那就亏了。
大部分新人熟悉系统,把力气花在"看懂代码细节"上。但真正拉开差距的,是你能不能快速说清楚:系统边界是什么?核心链路是什么?关键依赖是什么?业务目的是什么?
说白了,银行科技岗不缺会低头看代码的人,但很缺能抬头看链路的人。