繼續維護專欄,開辟了Web優化和算法欄目,并且補充了React、Node.js等欄目。
  繼續GitHub倉庫,除了完善[daily](https://github.com/pwstrick/daily)之外,還新增了一個性能分析工具,代號[pineapple](https://github.com/pwstrick/pineapple),不過沒有堅持維護下去,也沒機會在線上做驗證。
  除此之外,在年中的時候做了個一個重要的決定:跳槽,離開呆了4年多的公司,跳出這么多年的舒適區,開始新的歷程,期間也經歷了各種波折,不過都是些不錯的體驗。下面是一些感悟。
  最近跳槽到一家創業多年的小公司,帶一個前端小團隊。
  在這一個多月中,主要是熟悉業務,維護老代碼,編寫新業務等,期間也發現了當前團隊出現的種種問題,打算在接下來的日子里好好改造。
  接下來給自己定的小目標是,改變混亂的局面,提升工作效率,團隊更加穩定和規范化。
:-: 
## 一、適應新的環境
**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),歡迎閱讀。

- 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年
- 2024年
- 日志
- 2020