继续维护专栏,开辟了Web优化和算法栏目,并且补充了React、Node.js等栏目。
  继续GitHub仓库,除了完善[daily](https://github.com/pwstrick/daily)之外,还新增了一个性能分析工具,代号[pineapple](https://github.com/pwstrick/pineapple),不过没有坚持维护下去,也没机会在线上做验证。
  除此之外,在年中的时候做了个一个重要的决定:跳槽,离开呆了4年多的公司,跳出这么多年的舒适区,开始新的历程,期间也经历了各种波折,不过都是些不错的体验。下面是一些感悟。
  最近跳槽到一家创业多年的小公司,带一个前端小团队。
  在这一个多月中,主要是熟悉业务,维护老代码,编写新业务等,期间也发现了当前团队出现的种种问题,打算在接下来的日子里好好改造。
  接下来给自己定的小目标是,改变混乱的局面,提升工作效率,团队更加稳定和规范化。
:-: ![](https://img.kancloud.cn/73/8d/738d3298db2dec28f0e4439d8a80ea5c_786x364.png =400x)
## 一、适应新的环境
**1)规章制度**
  首先要适应公司的规章制度,主要还是要习惯上下班时间,这和以往不同,本来是到点就走的。现在的话,每天都比较忙碌,下班时间也不定。
**2)新的角色**
  其次是要适应自己的新角色,新公司负责的事情要比老公司多很多,以往还是蛮闲的,但现在不同。
  并且要带团队,考虑的层面也得比以前更高一点。不能只想着自己的个人发展,更多的是要关注团队发展,为团队的每个人负责。
**3)开发模式**
  接着是要适应当前的开发模式,上家公司只做H5相关的事情,也就是做些效果、小程序之类的纯前端工作。
  而这里还会涉及到一些后端任务,用Node做了中间层,整合各类数据,执行Redis缓存,有时候还要直接操纵数据库。
  刚开始还真有点不适应,不仅要学会用终端,还得知道怎么通过看日志来排查各类问题等等。
**4)业务逻辑**
  最后就是要熟悉业务逻辑,前提就是要把项目跑起来,知道怎么修改。
  目前公司缺失各类文档,员工离职后很多信息就只能通过代码来了解其中的逻辑了。
  为了方便调试,特地搭建了单元测试(主要测试Node方面的代码,[Mocha](https://mochajs.cn/)+[Chai](https://www.chaijs.com/)+[Supertest](https://github.com/visionmedia/supertest)),这样既能保障代码质量,也方便了解某个函数的功能、变量的值等。
  目前还有很多我不了解的业务,未来将会经常遇到。对于这些未知业务,除了被动的遇到后再了解之外,还可以主动与各个组的相关负责人了解,未雨绸缪。
**5)难点**
  祖传代码还在运行中,代码写的杂乱无章,并且很多服务已无人维护,但是由于缺乏文档,难以轻易地修改。
  人员缺乏,每天都疲于修复各种BUG,以及各种杂七杂八的事情,经常要花大精力去查看代码、日志和数据库,计划要写的代码或要做的事情经常无法按时完成,难以达到平衡。虽然短期内加班可以解决,但长期的话还是得补充人员。
## 二、制订游戏规则
**1)前后端真正分离**
  当前公司对前端的要求有点高, 既要会市面上主流的前端技术(HTML和CSS是必须的,还有React、Vue等),也要有后端开发的经验,比如操作MongoDB和MySQL等。
  之前公司已经有好几个员工因为这些原因而离职了。以后如果还这么招人,定会遇到许多阻碍,毕竟没有大厂的条件。
  前端会负责一个比较庞大的后台管理系统,如果是些简单的查询更新等数据库语句,其实复杂度上倒也没什么,只不过费时间而已。
  但前端还要处理金额敏感信息,这块还是需要交接出去,过来后就和后端的大佬们讨论了方案,做到真正的分离,后端组的人也是积极响应,不过这种交接过程将是比较漫长的,毕竟资源有限。
  未来尽量由后端服务器组提供数据源,前端就做数据整合以及页面效果的工作,尽量做到专精。
**2)统一技术栈**
  当前前端有些技术栈比较老旧,有些活动页面甚至还在用jQuery制作,这样很限制团队成员的发展。
  因此打算统一技术栈,将后续的项目迁移到Vue或React这些目前比较主流的库,这样也有利于团队成员的自身发展。
## 三、补全各类文档
**1)技术文档**
  在我进新公司之时,有个老员工要离职了,他了解很多业务,于是就安排他尽可能多的记录到内网的Wiki中。文档虽然不算全,但好歹有个雏形,未来慢慢补全。
  当前前端组维护了多个项目,这些项目又分别使用了不同的技术栈。
  例如后台管理系统前台采用的是[UmiJS](https://umijs.org/zh-CN)+[DvaJS](https://dvajs.com/)+[Ant Design](https://ant.design/index-cn)+[React](https://react.docschina.org/),后台采用的是[KOA2](https://koa.bootcss.com/)+[NodeJS](http://nodejs.cn/)+[MySQL](https://www.mysql.com/)+[MongoDB](https://www.mongodb.com/)。
  自己花了点时间和精力探索了一下这两个项目的运行过程(画了几张流程图),还对其中的技术细节做了归纳和总结,降低后续新加入的小伙伴的理解难度。
**2)代码注释**
  未来的话,还需要完善源代码的各种注释,目前很多组件和函数都是没有注释的,只能一行一行的看代码来理解,很是费劲。
  公司也打算用工具(例如[swagger](https://swagger.io/))通过写注释的方式,自动生成接口文档。
**3)各类业务**
  其他组应该也会有相关文档,未来需要有个引导页面,跳转到相关业务中。如果没有的话,需要找个协商人,让他安排人手去补齐。
*****
> 已建立一个微信前端交流群,如要进群,请先加微信号freedom20180706或扫描下面的二维码,请求中需注明“看云加群”,在通过请求后就会把你拉进来。还搜集整理了一套[面试资料](https://github.com/pwstrick/daily),欢迎阅读。
![](https://box.kancloud.cn/2e1f8ecf9512ecdd2fcaae8250e7d48a_430x430.jpg =200x200)
- ES6
- 1、let和const
- 2、扩展运算符和剩余参数
- 3、解构
- 4、模板字面量
- 5、对象字面量的扩展
- 6、Symbol
- 7、代码模块化
- 8、数字
- 9、字符串
- 10、正则表达式
- 11、对象
- 12、数组
- 13、类型化数组
- 14、函数
- 15、箭头函数和尾调用优化
- 16、Set
- 17、Map
- 18、迭代器
- 19、生成器
- 20、类
- 21、类的继承
- 22、Promise
- 23、Promise的静态方法和应用
- 24、代理和反射
- HTML
- 1、SVG
- 2、WebRTC基础实践
- 3、WebRTC视频通话
- 4、Web音视频基础
- CSS进阶
- 1、CSS基础拾遗
- 2、伪类和伪元素
- 3、CSS属性拾遗
- 4、浮动形状
- 5、渐变
- 6、滤镜
- 7、合成
- 8、裁剪和遮罩
- 9、网格布局
- 10、CSS方法论
- 11、管理后台响应式改造
- React
- 1、函数式编程
- 2、JSX
- 3、组件
- 4、生命周期
- 5、React和DOM
- 6、事件
- 7、表单
- 8、样式
- 9、组件通信
- 10、高阶组件
- 11、Redux基础
- 12、Redux中间件
- 13、React Router
- 14、测试框架
- 15、React Hooks
- 16、React源码分析
- 利器
- 1、npm
- 2、Babel
- 3、webpack基础
- 4、webpack进阶
- 5、Git
- 6、Fiddler
- 7、自制脚手架
- 8、VSCode插件研发
- 9、WebView中的页面调试方法
- Vue.js
- 1、数据绑定
- 2、指令
- 3、样式和表单
- 4、组件
- 5、组件通信
- 6、内容分发
- 7、渲染函数和JSX
- 8、Vue Router
- 9、Vuex
- TypeScript
- 1、数据类型
- 2、接口
- 3、类
- 4、泛型
- 5、类型兼容性
- 6、高级类型
- 7、命名空间
- 8、装饰器
- Node.js
- 1、Buffer、流和EventEmitter
- 2、文件系统和网络
- 3、命令行工具
- 4、自建前端监控系统
- 5、定时任务的调试
- 6、自制短链系统
- 7、定时任务的进化史
- 8、通用接口
- 9、微前端实践
- 10、接口日志查询
- 11、E2E测试
- 12、BFF
- 13、MySQL归档
- 14、压力测试
- 15、活动规则引擎
- 16、活动配置化
- 17、UmiJS版本升级
- 18、半吊子的可视化搭建系统
- 19、KOA源码分析(上)
- 20、KOA源码分析(下)
- 21、花10分钟入门Node.js
- 22、Node环境升级日志
- 23、Worker threads
- 24、低代码
- 25、Web自动化测试
- 26、接口拦截和页面回放实验
- 27、接口管理
- 28、Cypress自动化测试实践
- 29、基于Electron的开播助手
- Node.js精进
- 1、模块化
- 2、异步编程
- 3、流
- 4、事件触发器
- 5、HTTP
- 6、文件
- 7、日志
- 8、错误处理
- 9、性能监控(上)
- 10、性能监控(下)
- 11、Socket.IO
- 12、ElasticSearch
- 监控系统
- 1、SDK
- 2、存储和分析
- 3、性能监控
- 4、内存泄漏
- 5、小程序
- 6、较长的白屏时间
- 7、页面奔溃
- 8、shin-monitor源码分析
- 前端性能精进
- 1、优化方法论之测量
- 2、优化方法论之分析
- 3、浏览器之图像
- 4、浏览器之呈现
- 5、浏览器之JavaScript
- 6、网络
- 7、构建
- 前端体验优化
- 1、概述
- 2、基建
- 3、后端
- 4、数据
- 5、后台
- Web优化
- 1、CSS优化
- 2、JavaScript优化
- 3、图像和网络
- 4、用户体验和工具
- 5、网站优化
- 6、优化闭环实践
- 数据结构与算法
- 1、链表
- 2、栈、队列、散列表和位运算
- 3、二叉树
- 4、二分查找
- 5、回溯算法
- 6、贪心算法
- 7、分治算法
- 8、动态规划
- 程序员之路
- 大学
- 2011年
- 2012年
- 2013年
- 2014年
- 项目反思
- 前端基础学习分享
- 2015年
- 再一次项目反思
- 然并卵
- PC网站CSS分享
- 2016年
- 制造自己的榫卯
- PrimusUI
- 2017年
- 工匠精神
- 2018年
- 2019年
- 前端学习之路分享
- 2020年
- 2021年
- 2022年
- 2023年
- 日志
- 2020