什麼是全棧工程師
現在,技術其實變得越來越簡單。雲服務就在提供水和電。 所以你需要充分的去了解PAAS服務的平臺,amazon的服務,github的服務,讓技術不再成為門檻,讓事情聚焦在提供專業的價值上面。這也就是世界級的IT支援了,你再也不用擔心“只差一個程式設計師”了。
LAMP的技術棧 MEAN的技術棧
作者提出全棧工程師或者說工程師的前景:
一專多長解決問題而不是醉心技術其實全棧工程師,跟我在taobao十年裡面看到的工程師可能是不相符合的。很多淘寶的大型系統,需要非常專業的工程師進行很多的最佳化才可以實現。
如何成為全棧工程師我們都是普通人,“一萬小時定律”是繞不過去的。所以要成為有競爭力的專業人員,必須要投入大量的時間。
對於招聘來說,要的不僅僅是滿足要求,很多時候非常希望候選人能夠超出預期。你必須要有一些額外的亮點,也就是競爭力才行。
對於成為全棧工程師這件事情,作者提供了一些建議:
圍繞商業目標:轉型是每時每刻都存在的,每個人,不僅僅是公司,都應該圍繞商業目標。商業目標是穩定的,比技術更為穩定。對於直接製作產品,給使用者使用的團隊,就需要對外關注如何提高產品質量、降低產品成本;對內應該關注如何最佳化流程、減少錯誤率、如果團隊輸出的結果是公司內其他部門需要的原材料,就要關注下游的需求,研究如何更好地輸出結果,如何在流程上使得輸出產品的過程更加順暢。關注使用者體驗不爽的地方不要習慣,而是要去改變。專注目標,以目標的維度去思考,不要讓別人費事的去猜。做自己會用的產品從學生到工程師本章主要論述了從學生進行校園招聘到入職實習後作者的一些感悟,對於未畢業的學生還是可以一看的。已經工作的同學,就略過吧~~
較小的風險技術最佳實踐垂直專精的技能服務海量使用者的經驗軟技能人脈心態由此而見,作者本人是比較喜歡大公司的。不過根據《駭客與畫家》中的觀點,大公司會讓你的公司沒有可放大性與可衡量性。究竟如何選擇,就是仁者見仁,智者見智了。
工程師事業指南對技術人員而言,職業生涯的發展非常重要。《您就是極客》中提出了對軟體工程師而言最重要的三點:技術、成長和聲望。
為啥架構師那麼火?就是因為他看起來對所有的問題都知道答案。如果你是團隊中這樣的角色,那麼可以說你非常重要。所以首先對你來說就是成為那個什麼都懂得傢伙。
其次對你來說重要的是積累你的作品集。作品集其實是想別人(老闆、潛在老闆、志同道合者)的展示視窗。github顯然是程式設計師最重要的作品集之一。而對於高逼格的設計師來說,dribble則是更好的選擇。同時github提供的靜態頁面託管服務對於不想費力租賃機器搭建網站的人來說,也是一個很好的選擇。
全棧工程師眼中的HTTPhttp協議是web開發繞不開的關鍵點,但是前後臺對其理解都有不同。 Http版本,現存最多的還是http1.1,而大部分的瀏覽器和伺服器server都已經支援http/2了。 從前端的角度來看,有很多http的最佳化方式:
減少請求合併同域請求減少同域內請求以規避達到同域併發上線傳輸內容縮減雪碧圖程式碼、html gzip壓縮靜態資源單獨部署各類快取(cdn、瀏覽器快取)而從後臺來看則是另外的一種場景:
關注伺服器最大連線數關注伺服器網路模型必須防範DDos攻擊 B* igPipe:提供針對一次http請求,伺服器返回多次的結果,從而規避過多的建立連線過程。事實上大資料時候,http server本來就會分塊傳輸。高效能網站的關鍵:快取本章主要是從基本概念的維度介紹了一下快取,從伺服器快取到瀏覽器快取兩大門類。 伺服器快取則分為:
資料庫快取(讀多寫少的場景)memcache:聞名的web快取,支援分散式,但不支援無痛擴充套件。檔案快取靜態化:叫快取可能不準確了,更多是加速。瀏覽器快取:
expires:設定過期時間,無須互動last-modified:需要和伺服器簡單互動一次,304cache-control:新的倒計時式的快取作者推薦的瀏覽器快取最佳實踐:
對於動態生成的HTML頁面使用Https頭:Cache-control:no-cache對於靜態HTML頁面使用HTTPS頭:Last-modified其他檔案型別設定Expires頭,並在檔案內容修改時,更改Query String(現在的前端構建都是透過修改檔名的方式了。)。大前端作者在本章提出了大前端的概念,這也是最近在前端業界被提的比較多的一點。 比較有參考價值的是作者提出的前端知識體系: 初級工程師:
對瀏覽器相容性的瞭解對HTML/CSS/JavaScript語法和原理的理解對編輯器和外掛的熟悉程度對除錯工具的瞭解程度對版本管理軟體的熟悉和應用經驗對前端庫/框架的使用標準/規範中級工程師:
對程式碼質量、程式碼規範的理解對Javascript單元測試的熟悉對效能最佳化的應用和理解對SEO的應用和理解程式碼部署移動web高階工程師:
程式碼架構安全對自動化測試的理解一家之言,不過大家需要的可以自行對照參考。
向移動端轉型移動端轉型是大勢所趨,因為大家在手機上花費的瀏覽時間越來越長了。 移動端可以參與的主要有:
IOS原生AppAndroid原生AppWindows Phone原生AppWeb App混合模式App(最近熱的發燙的reactor)本章在討論移動端的同時也強調了一個觀點:
讓市場認可你的能力,而不是讓老闆認可,因為老闆會變,老闆的標準不一致,而市場是一致的。
持續整合對於服務端和前端開發而言,由於沒有客戶端和移動app端的整合開發環境,比較難打通包括版本控制、包管理、依賴關係、持續整合在內的流程。
版本控制軟體中,SVN與GIT難解難分。本質上是集中管理å分散式程式碼管理之爭。這裡不展開,但是提供一些版本控制的最佳實踐:
鼓勵頻繁的提交確定分支流程:feature分支和bug修復分支是必須的定義主幹原則:主幹必須可以隨時上線不要把邏輯修改和程式碼格式化混在一起不想幹的程式碼分開提交保持工作程式碼庫乾淨:適當的ignore包管理中,node的npm做的非常出色。經歷過java的maven那一套的都能理解npm做的有多好,多簡單。同時作者還推介了bower作為新的包管理工具,這適用於有很多前端版本js庫的情況。
首先必須有良好架構具備合適的分離粒度,區分全域性、區域性元件最小知識原則:元件和物件不應暴露細節DRY:特殊功能不應存在多個副本最小化預先設計:選擇器這類元件,必須留下自定義空間,不限死排列一致且可執行的命名規則完成了良好架構,接下來就是grunt、gulp等javascript構建工具的登場理解程式語言本章更多是以一種白話的方式老生常談了程式界經常討論的問題:是語言重要還是對演算法和系統的理解更重要。 當然最終作者沒有也無法給出答案,這個只能讀者自己來思考了。
全棧遊樂場全棧工程師的遊樂場是VPS,隨著阿里雲、騰訊雲、AWS的大力推廣,現在獲取VPS的成本也越來越低了。 獲取自己的VPS並搭建自己網站最大的好處就在於它可以給你一覽網站的全貌,而不再是侷限在自己的技術棧中。 作者在本章也給出了使用VPS的一般入門,有興趣的同學可以關注下。
軟體設計方法本章作者主要介紹了常見的設計模式,比較有料的是介紹了Web開發中的MVC這種架構模式。同時也列舉了一些不同語言中常見的MVC框架:
Javascript mvc framework:AngularJS、backbone.jsPhp:CakePHP、Yii、CodeigniterObjective-C: CocoaRuby mvc framework:Ruby on RailsNodejs:Sail.js Total.js Express高效工程師效率在現在快節奏的職場中越來越重要。對於工程師來說,必須做到:
不斷學習閱讀英文資料加入技術社群善用搜索引擎時間管理時間管理四象限:要忙,但是不要瞎忙消除重複的工作:善用指令碼,善用工具給自己留出專注的時間番茄工作法跨界思考智商頭腦風暴學習設計對工程師來說,瞭解設計,對設計有感覺非常的重要。 作者這裡推薦了一本《寫給大家看的設計書》,著重強調了設計的四大基本理論:
親密性對齊重複對比對這些理論的理解能夠讓我們在coding的同時,也能停下來看看自己的產品究竟做的如何。
全棧思維一個人的價值,體現在他能夠承擔的責任。
市場越成熟,這句話應該就越對。 同時作者強調了溝通能力在全棧能力中的重要作用:
針對目標聽眾訴諸對方的利益找到方法金字塔原則:任何事情都可以歸納出一箇中心論點。向上表達自己的想法:立場足夠簡單,圍繞這一立場溝通最後書中推薦的書單彙總
《專業主義》 《重來》 《精益創業》 《寫給大家看的設計書》 《打造facebook》 《您就是極客》 《程式碼整潔之道》 《精益創業》 《駭客與畫家》 《卓有成效的管理者》 《程式設計的本質》 《圖解HTTP》 《高效能網站建設進階指南》 《從0到1:開啟商業與未來的秘密》 《程式碼的未來》 《禪與摩托車維修藝術》 《只是為了好玩:Linux之父林納斯自傳》 《卓有成效的程式設計師》 《軟體隨想錄》 《金字塔原理》 《卓有成效的管理者》 《安靜:內向性格的競爭力》