《Web全棧工程師的自我修養》讀書筆記

爲何我會選擇讀這本書?兩個緣由,一是自己對於全棧的技術很感興趣。倒並非認爲全棧工程師懂的東西多就牛逼哄哄,而是在當前這種先後端分離的大勢之下,先後端開發人員都愈來愈聚焦於本身的領域,而缺少對整站或者整個系統的瞭解,以全棧的視野更容易瞭解技術的全貌。二是由於書評分還不錯,做者是騰訊社交用戶體驗設計部高級UI工程師餘果。javascript

這本書是由做者從連載專欄中整理出來的。按照做者的定義是「輕鬆的技術雜文集」。讀完兩遍以後的總體感受是:提高視野,拓展思惟。前端

什麼是全棧工程師java

一專多長。工程師首先有一個精專的方向,在這個方向上足夠精通以後(高級工程師級別),以此爲突破點去學習更多的知識,增長本身的長處。node

在技術上,我一直提倡的是十字型的成長方式,即從水平和垂直兩個方向提高本身的能力。好比我擅長的是javascript,我會去學習jquery、angular等這些有用的js庫,這屬於垂直方向。同時我繼續對node.js、mongodb這類後端技術進行學習,這屬於水平方向。jquery

雖然我以爲這是一個好的學習方法,可是並不能做爲衡量一個全棧工程師的標準。全棧工程師應該是在先後端都有必定專業知識,能獨立開發的程序員,有沒有專精的方向並不重要。即便像下面的被稱做「野生程序員」的開發者,能力模型每項都得60分就應該算合格。nginx

對於那些達不到一專多長,雖然知識面比較廣,可是各方面都只知其一;不知其二的開發者,做者給了一個特殊的稱號:野生程序員。程序員

這個能力模型居然把JQuery單獨列出來了,AngularJS、Zepto.js、Vue.js…都表示很失望~mongodb

老闆僱傭一個員工,不是由於他能寫程序,而是由於他能幫助本身賺錢。賺錢的方法有兩種:減小成本,或者增長收入。程序員若是能加快內部系統的運行效率,讓產品製做流程更加順暢,就是減小成本。若是能讓用戶更容易一地購買產品,或者提升服務質量吸引更多用戶,就能增長收入。數據庫

嗯,這一點我以爲很重要,使用技術知其然還要知其因此然~後端

爲何要用JQuery?它的選擇器很強大,操做dom方便。

爲何要用Angular?它的雙向數據綁定再也不須要選擇器,對於CRUD操做頗有優點。

爲何要用Vue.js?它實現雙向數據綁定的同時又是一個輕量級的框架。

技術只是手段,最合適的技術便是最好的技術。不迷信於某個技術,本末倒置,而是爲了解決某類問題而去選擇最低成本的技術,這纔是一個成熟的開發者應有的思惟。

全棧工程師涉及的一些重要技術

HTTP

前端須要關注

  • 發出的請求列表

  • 每一個請求的開始時間

  • 每一個請求從剛開始到結束花費的時間

  • 每一個請求的類型

  • 每一個請求的狀態嗎

  • 每一個請求產生的流量消耗

  • 每一個請求gzip壓縮前的體積,以及在本地gzip解壓後的體積

這裏推薦一本書《圖解HTTP》,通俗易懂。

優化策略

  • 儘可能減小同一域下的HTTP請求數。域名散列等

  • 儘可能減小每個資源的體積。壓縮合並等

HTTP2.0下這種優化就變得沒意義了,不過預估HTTP1.1還將用10年。

後端須要關注

  • 提升服務器的請求處理能力。利用nginx等服務器作負載均衡等

  • 預防DDoS攻擊。生成靜態頁,利用cdn等

BigPipe是Facebook公司科學家Changhao Jiang發明的一種非阻塞式模型,這種模型能解決兩個問題:

  • HTTP3次握手消耗的時間

  • 現有阻塞模型中,服務器計算生成頁面須要時間,等服務器徹底生成好整個頁面,纔開始網絡傳輸,網絡傳輸也須要時間。

緩存

服務器緩存

  • 使用數據庫緩存和緩存工具,如memcached,注意提升緩存的命中率。

  • 再加一層文件緩存。做爲內存緩存的補充,查找優先級:內存緩存 ——> 文件緩存 ——> 數據庫

  • 頁面靜態化

瀏覽器緩存

  • Expires

  • Last-Modified

  • Cache-Control

持續集成

版本控制

  • SVN。適合企業內部使用

  • Git。多用於開源軟件

最佳實踐

  • 鼓勵頻繁的提交

  • 肯定分支流程

  • 定義主幹原則,而且堅守它

  • 不要把邏輯的修改和代碼格式化操做混在一塊兒

  • 不相干的代碼分開提交

  • 保持工做代碼庫的「乾淨」

根據Semver的規範,版本號用小數點分割爲三個數字。好比v3.2.1中3是主要版本號,2是次要版本號,1是補丁。

  • 主要版本號:有API變動致使不兼容舊版本的時候使用

  • 次要版本號:新增功能,可是向前兼容的狀況下使用

  • 補丁:修復向前兼容的bug時使用

全棧工程師的成長途徑

做品集的積累。程序員和設計師的做品集每每是本身的在線我的網站。對於程序員來講,成本最低的一種做品展現方式就是把本身的代碼發佈到GitHub上。

初級前端知識體系

  • 對瀏覽器兼容性的瞭解

  • 對HTML/CSS/Javascript語法和原理的理解

  • 對編輯器和插件的熟悉程度

  • 對調試工具的瞭解程度

  • 對版本管理軟件的熟悉和應用經驗

  • 對前端庫/框架的使用

  • 標準/規範

  • 中級前端知識體系

  • 對代碼質量、代碼規範的理解

  • 對Javascript單元測試的熟悉

  • 對性能優化的應用和理解

  • 對SEO的應用和理解

  • 代碼部署

  • 移動Web

  • 高級前端知識體系

  • 代碼架構

  • 安全

  • 對自動化測試的理解

雖然VPS對於我的開發者來講比較昂貴,但我仍是推薦全棧工程師買一臺VPS,本身玩一玩。理由以下:

  • 對於網站的全貌有所瞭解

  • 服務器穩定

  • 能夠部署本身的環境

  • 能夠學習Linux

  • 幫助理解HTTP

VPS選擇

  • 內存通常是主要瓶頸,建議選擇最少512MB

  • CPU是相對沒那麼重要的性能指標

  • 硬盤的大小和讀寫速度是關鍵

  • 服務商的客戶服務

本身搭建網站是個很費時費力的事,途中會碰到不少問題,確實能夠學到不少東西,適合有精力有興趣的同窗。

全棧工程師擴展技能

設計模式

  • 建立型模式。用來建立對象的模式,它對實例化的過程進行了抽象。如單例模式

  • 結構型模式。主要解決類、對象、模塊之間的耦合關係。如適配器模式

  • 行爲型模式。用來識別對象之間的經常使用腳力模式並加以實現。如觀察者模式

設計原則

  • Don’t Repeat Yourself

  • 慣例優於設置。開發人員僅需規定應用中不符約定的部分。

  • Keep it simple,stupid

  • 最少知道原則。減小耦合。

推薦一本書《大話設計模式》

提升工做效率方式

  • 閱讀英文資料。英文的技術資料更多。Google的搜索能力很是強。英語世界的語言風格比較嚴謹

  • 時間管理四象限。若是您平時沒有作重要的事情,就會發現本身經常在作緊急的事情。

  • 消除重複工做。使用工具來無縫銜接已有流程

  • 給本身留出不被打擾的時間

  • 番茄工做法

  • 跨界思考

  • 紙上頭腦風暴

  • 使用版本控制工具和構建系統

拿工做時長來拼,這仍是體力勞動時代打工者的心態在做祟。

架構模式

  • MVC模式(Model-View-Controller)是最有名的一種架構模式。

前端有一種MVVM的模式,熟悉Angular的人都知道~

學習設計

設計的四大基本理論:

  • 親密。關係親密的元素要放在一塊兒,關係疏遠的元素則要分開。位置的親密性直接表現出意義的相關性。

  • 對其。

  • 重複。視覺上使用重複的圖形和元素、線條、顏色等。

  • 對比。若是兩個元素不同,就讓它徹底不同,產生視覺衝擊力。

設計工具

  • Axure

  • Sketch

  • Quartz Composer

學習管理

  • 在項目最開始作出合理的時間評估

  • 根據人員的強項來安排任務

  • 喚起團隊對項目成功的渴望

  • 保障溝通。理想溝通頻率每週至少兩次。

相關文章
相關標籤/搜索