最近跳槽到一家创业多年的小公司,带一个前端小团队。
在这一个多月中,主要是熟悉业务,维护老代码,编写新业务等,期间也发现了当前团队出现的种种问题,打算在接下来的日子里好好改造。
接下来给自己定的小目标是,改变混乱的局面,提升工作效率,团队更加稳定和规范化。
一、适应新的环境
1)规章制度
首先要适应公司的规章制度,主要还是要习惯上下班时间,这和以往不同,本来是到点就走的。现在的话,每天都比较忙碌,下班时间也不定。
2)新的角色
其次是要适应自己的新角色,新公司负责的事情要比老公司多很多,以往还是蛮闲的,但现在不同。
并且要带团队,考虑的层面也得比以前更高一点。不能只想着自己的个人发展,更多的是要关注团队发展,为团队的每个人负责。
3)开发模式
接着是要适应当前的开发模式,上家公司只做H5相关的事情,也就是做些效果、小程序之类的纯前端工作。
而这里还会涉及到一些后端任务,用Node做了中间层,整合各类数据,执行Redis缓存,有时候还要直接操纵数据库。
刚开始还真有点不适应,不仅要学会用终端,还得知道怎么通过看日志来排查各类问题等等。
4)业务逻辑
最后就是要熟悉业务逻辑,前提就是要把项目跑起来,知道怎么修改。
目前公司缺失各类文档,员工离职后很多信息就只能通过代码来了解其中的逻辑了。
为了方便调试,特地搭建了单元测试(主要测试Node方面的代码,Mocha+Chai+Supertest),这样既能保障代码质量,也方便了解某个函数的功能、变量的值等。
目前还有很多我不了解的业务,未来将会经常遇到。对于这些未知业务,除了被动的遇到后再了解之外,还可以主动与各个组的相关负责人了解,未雨绸缪。
5)难点
祖传代码还在运行中,代码写的杂乱无章,并且很多服务已无人维护,但是由于缺乏文档,难以轻易地修改。
人员缺乏,每天都疲于修复各种BUG,以及各种杂七杂八的事情,经常要花大精力去查看代码、日志和数据库,计划要写的代码或要做的事情经常无法按时完成,难以达到平衡。虽然短期内加班可以解决,但长期的话还是得补充人员。
二、制订游戏规则
1)前后端真正分离
当前公司对前端的要求有点高, 既要会市面上主流的前端技术(HTML和CSS是必须的,还有React、Vue等),也要有后端开发的经验,比如操作MongoDB和MySQL等。
之前公司已经有好几个员工因为这些原因而离职了。以后如果还这么招人,定会遇到许多阻碍,毕竟没有大厂的条件。
前端会负责一个比较庞大的后台管理系统,如果是些简单的查询更新等数据库语句,其实复杂度上倒也没什么,只不过费时间而已。
但前端还要处理金额敏感信息,这块还是需要交接出去,过来后就和后端的大佬们讨论了方案,做到真正的分离,后端组的人也是积极响应,不过这种交接过程将是比较漫长的,毕竟资源有限。
未来尽量由后端服务器组提供数据源,前端就做数据整合以及页面效果的工作,尽量做到专精。
2)统一技术栈
当前前端有些技术栈比较老旧,有些活动页面甚至还在用jQuery制作,这样很限制团队成员的发展。
因此打算统一技术栈,将后续的项目迁移到Vue或React这些目前比较主流的库,这样也有利于团队成员的自身发展。
三、补全各类文档
1)技术文档
在我进新公司之时,有个老员工要离职了,他了解很多业务,于是就安排他尽可能多的记录到内网的Wiki中。文档虽然不算全,但好歹有个雏形,未来慢慢补全。
当前前端组维护了多个项目,这些项目又分别使用了不同的技术栈。
例如后台管理系统前台采用的是UmiJS+DvaJS+Ant Design+React,后台采用的是KOA2+NodeJS+MySQL+MongoDB。
自己花了点时间和精力探索了一下这两个项目的运行过程(画了几张流程图),还对其中的技术细节做了归纳和总结,降低后续新加入的小伙伴的理解难度。
2)代码注释
未来的话,还需要完善源代码的各种注释,目前很多组件和函数都是没有注释的,只能一行一行的看代码来理解,很是费劲。
公司也打算用工具(例如swagger)通过写注释的方式,自动生成接口文档。
3)各类业务
其他组应该也会有相关文档,未来需要有个引导页面,跳转到相关业务中。如果没有的话,需要找个协商人,让他安排人手去补齐。