前言
入职了一个业务团队,在里面负责部门一个业务线的前端开发,在试用期第一个月时接手了业务系统中最复杂的一个模块,那次任务是基于原来的逻辑调整部分业务功能,再添加新需求功能,新增的功能需要对接其他部门的项目接口
很常见的新员工慢慢融入团队的过程,由易到难,我当时好像没怎么过渡 ?……
来看下项目里的核心技术栈
package.json 里面的配置项
- “@angular/core”: “~8.1.0”
- “devextreme”: “19.2.5”,
- “typescript”: “~3.4.3”
这里面的版本配置和官网对比有点老,像 angular
和 devextreme
国内用的也少,看了一下这个项目开始的提交,初始化项目是3年前,devextreme
UI库官方地址打开死慢死慢的,也不知道是当时架构部门基于什么考量用的这么一套搭配。
国内用 angular
有的那种是全套 Google 流派的,技术栈,服务,理念,管理等都是 Google 作风; 目前我们这边是混搭模式,这里顺便提一下,后端用的是 .net
, 微软派系,移动端用的 vue2
, 移动端 ui
库用的如下
- “@ng-bootstrap/ng-bootstrap”: “^1.0.0-beta.5”,
- “vant”: “^2.8.2”,
刚打开对应业务页面时的样子
编辑器直接报错,此条件将始终返回“true” ?
在这里感谢好心同事在几个月前留下的宝贵提醒 ?
当时需要在相对短的时间内,在这个页面添加一个复杂的业务需求,这个需求涉及到新增功能,修改现有逻辑,以及兼容之前功能的逻辑。
之前的业务不熟悉,好多年前的功能,中间不知道经过了多少大牛在中间修修补补,目前的现状是 ts 文件里面的逻辑代码就已经接近四千三百行了。
惊不惊喜,意不意外??
项目类型
项目为标准化产品,有各种客户定制化需求,再把部分定制化需求做到标准版里面,日常开发就是一边做客户的定制化需求,一边做标准版里面的功能,前端用的一套代码,业务复杂度极高,团队人员流动性也不小,部分功能维护开发起来很吃力,这种问题早就暴露出来了,现在的情况是业务逻辑复杂的功能模块,能不动就不动,必须动的一般会考虑一下拆分出来,如果不是独立的交互的那种需求,剩下的只能开发人员硬啃了?
当时我做那个需求时,仿佛不是在啃骨头,而是在啃石头
业务需求
ToB 的业务,标准化加定制化二合一的项目,涉及到不同的部门对接,需求没停过,在不停的迭代和维护,每周至少一次发版频率。
开发现状,以及当时了解到的情况
项目里各种奇奇怪怪的问题,例如:
- 项目每次都加载会调十几个关于权限的接口
- 表格排序会调用接口
- 搜索表格会调用接口
- 进入首页查询接口会调用两遍
- 前后端规范文档不完整,日常接口对接在微信里发个接口名称,发一个返回参数,OData 接口的传参没有,一般都是用的时候自己问,或者从找项目里其他接口找
- 由于项目是平台型的,不同的部门的项目前端统一使用 iframe 嵌套在在公司架构部门提供的基础平台上
- 不同的用户组织权限又由权限系统提供认证,这部分的权限如何认证使用,也没有文档,涉及到平台里数据上下游流转的文档也没有,对于业务新手来讲文档这部分不太友好
槽点很多对不对,每个公司,每个团队都有很多可吐槽的,也有很多值得肯定的地方,善于发现那些美的地方,工作只要不讨厌就很不错了?
遇到这种情况怎么做
如果时间充足又有人有时间指导,这当然是最好的情况。
我当时的情况是,由于工位紧张,试用期在大办公区另一端的角落临时坐着,负责给安排任务带我的是个了解前端的后端开发老师,问了几次项目里的前端问题后,让我找别的业务线的前端老师,那时候项目正年底冲刺,开发人员都很忙,还天天加班,只能硬着头皮上
- 首先稳住心态,把需要的做的功能相关的业务了解清楚,这个找产品老师,这部分倒还好
- 根据业务需求再去项目仓库里找相关的代码,看完代码后当时是有点犯怵,这代码也太多太乱了吧,该有的注释没有,好在有之前的大佬留下好心提示
- 前端开发的话,直接根据页面上的交互,找对应的代码逻辑,判断逻辑太多,还各种函数调来调去的,只能通过log输出,或者 debugger 来跟踪代码了,这时候找代码的时候一定要细心点,因为各种比较像的判断和代码逻辑在里面
- 由于业务场景复杂,写代码的时候尽量完善注释,方便以后维护
吭哧吭哧加班好多天,提测后测试老师也提出很多bug,这种工作对个人最大的帮助就是磨练心态,难度不大,整个过程需要静下心来去梳理代码逻辑,完善注释,实现功能,然后再一步步把所有场景复现测试流程是否正常,刚开始可能比较恶心一点,改着改思路就越来越清晰了
最后来看下改了两周以后的代码量,好家伙,只是ts文件就加了约2000行
未来的规划
在这种业务型团队中又是ToB的业务,公司的技术更新迭代是相对来讲是比较慢的,频率也很低,大部分都是只要老项目能跑能用技术一般不升级那种,那么技术人的技术栈升级就需要自己来规划,例如找自己喜欢的方向做开源项目,写demo,写博客等去完善和升级技术体系,以及在技术社区多交流,避免信息封闭…
祝所有的看官,最后都能活成自己想要的样子 ^-^