<noframes id="5hjpd"><progress id="5hjpd"><form id="5hjpd"></form></progress>

    <noframes id="5hjpd">

    <span id="5hjpd"><progress id="5hjpd"><progress id="5hjpd"></progress></progress></span>
      <noframes id="5hjpd">
      <ins id="5hjpd"><sub id="5hjpd"><rp id="5hjpd"></rp></sub></ins>
      <del id="5hjpd"><big id="5hjpd"></big></del>
      <track id="5hjpd"></track>

      做一枚全棧工程師

      導語   這篇熱門文章在 2017 年 6 月更新過,引入了更多新技術! ∪绻粋全棧工程師能夠根據原型實現一個完整的MVP(minimum viable product,至少可行的產品),我們通常會認為他十八般武藝樣樣精通,而

        這篇熱門文章在 2017 年 6 月更新過,引入了更多新技術。

      Jack of all trades

        如果一個全棧工程師能夠根據原型實現一個完整的MVP(minimum viable product,至少可行的產品),我們通常會認為他十八般武藝樣樣精通,而且有足夠的理由來證明這一點。為了給全棧工程師一個最新鮮的定義,我們首先來關注一下全棧工程師以前是搞什么的。

        以前的全棧工程師

        很久以前,大約在 2000 年(在互聯網的次元里,17年可以說是一個非常長的時間了),一個全棧工程師必須掌握下面的本領:

        用 Adobe 公司的 Photoshop 或者 Fireworks 工具設計出一個網頁

        將設計稿變成 HTML, CSS 還有熱點圖(額,還記得那些嗎?)

        寫一些基本的 PHP 4.0 腳本(非面向對象的 PHP 即將成為歷史)來處理服務端邏輯

        保存所有的動態數據到 MySQL 中,也可能會做一些小優化

        用 FTP 上傳所有代碼、數據庫什么的到一臺服務器,然后就可以領取報酬啦

        注意我們在這里只討論 PHP —— 一個全棧 Flash 或者 Coldfusion (一種 Web 服務器) 開發者可能有不同的工作方式(但是也僅僅是細微的差別)。

        在那個單純的時代,生活是如此的美好。個人開發者一抓一大把,而且程序猿工作完還有大把的時間陪伴自己的家人。

        那現在呢?

        現在的全棧工程師需要自帶什么技能呢

        最近,我們也會產生這些恐慌——為什么工程師的生活會變成這樣?

      \

        為了在這個牛逼的市場里獲得成功,我們這些開發者——通常都是完美主義者——應經常把“如果你想做正確的事”當做自己的座右銘,并經常質問自己。這會強迫我們自己集中精力在一處,而且必須學習所有東西,所以做一個全棧工程師往往要學會以下技能:

        服務管理/運維

        一個開發者必須了解基礎的服務器管理知識。包括當不限于以下知識:

        通過終端或其他沒有用戶界面的環境來遠程連接服務器

        會寫基本的 shell 腳本

        服務器上的用戶和群組管理

        管理像 Apache 和 Nginx 這樣的服務器程序來提供應用

        防火墻管理和權限管理

        安裝和更新軟件

      運維

      圖片來自GIPHY

        除了這些基礎技能,開發者必須懂得怎樣去創建一個好的、健康的、分離的開發環境,在 Docker 或者像 Vagrant 這樣的虛擬機環境中。 如果上面所有的技術你都不熟悉,那我必須給你推薦一本超棒的書,點這里購買。

        開發者必須對版本控制系統非常熟練,為了讓開發有靠譜的生產備份和可分享、可協同的代碼庫,這些代碼庫能夠根據時間來跟蹤代碼變化,F在已經沒有開發者的工作流是完全離開版本控制的了。我們有一個非常棒的關于版本控制的視頻教程,點這里購買。

        云

        和實際管理或者虛擬服務器不同,一個開發者也許要知道云主機平臺,比如Heroku, Google Cloud, Azure, AWS等等。

      云

      圖片來自GIPHY

        有一點必須說明的是,平臺和工具更多的是為了炒作而不是其實用性。盡管有很多平臺和工具的實用性并不如宣傳的那么好,但是了解這些大家都在談論的服務,從長遠來看會很有用——客戶可能會隨時要求更換服務提供商。幸運的是,我們擁有這些云主機部署權威指南。

        后端

        在后端,除了要懂選擇什么語言以外,比如 PHP 和眾多的框架 and CMSes,一個全棧開發者必須熟悉:

        Web 服務器,比如 Nginx 和 Apache ,和運維緊密相關

        不幸的是,NodeJS 已經可以將 JS、CSS 和其他資源文件編譯成靜態可以方便緩存的文件了。幸運的是,也有辦法避免學習 NodeJS,用PHP也是可以的

        像Composer這樣的 PHP 包管理工具在現代化的開發環境中已經離不開了

        好的API 設計,自從大部分新型網頁都基于 API 而且僅僅為前端服務(下面會詳細描述)

        ElasticSearch (introduction here) 這樣的搜索引擎對于網站性能的提高是非常重要的

        cronjobs 和后端的工作,使用Gearman 或者 Crunz 這類的庫

        了解緩存, Varnish, Redis 等牛B的工具可以分片存儲數據,這樣可以將一個項目部署的多個主機上

        數據庫

        數據庫是一個單獨的部分,因為除了很好地掌握我們基本上不會有結構變化的關系數據庫(MySQL 或者 PostgreSQL)的數據模式之外,一個全棧工程師應該對非關系型數據庫有所了解,如MongoDB, Redis, 或 Cassandra ,更不用說像 Neo4j 這樣的圖形數據庫了。

      Database illustration

        不幸的是,這些都是服務器上的東西,都在全棧工程師的控制下。也有幾個類似 Mongo 的遠程解決方案,像RestDB或者 Google-owned Firebase 等。

        前端

        說到前端,真的很蛋疼。

      前端

      圖片來自GIPHY

        想知道一個正常的前端知識圖譜是怎么樣的,可以在JavaScript 版塊看 這篇絕世好文 。但是作為一個全棧工程師,你需要了解

        NodeJS and NPM

        Yarn

        預處理器和編譯器(如Babel),用來編譯 Typescript, ES6, LESS, SCSS, SaSS

        構建工具,如 Grunt 和 Gulp

        框架,如 VueJS、React、Angular

        模塊打包工具,如 Webpack、Browserify、Rollup

        設計

        在設計方面,全棧開發者需要了解怎樣在一個產品變成真正可用的 HTML 、CSS 代碼之前,畫一個 原型圖 。然后就可以去用 JS 寫交互、后端也可以用假數據來模擬生產環境。只有這個關鍵的原型圖完成,用戶體驗設計和接口設計就緒,真正的開發才能開始。這本身就是一項艱巨的任務,需要一套特殊的工具:

        Photoshop 和 Illustrator 或者一些開源的工具比如 Gimp / Inkscape。訪問 Design channel 來了解更多這樣的工具。

        一個牛B的、快速的編輯器,比如 Atom 或 Sublime Text (這兒有十種好用的 sublime插件)

        像 Subtlepatterns 的背景選擇器和顏色選擇器能夠搭配一些顏色

        CSS 的柵格系統

        上面所說的前端所需要了解的所有知識和 JS 數據模擬

        將原型圖發表到網上供大家瀏覽并給于反饋,Ngrok 就非常好用

        日志系統

        為了高效監控應用的健康度,全棧開發者必須能夠追蹤錯誤,找到錯誤日志然后從中提取出有用的信息。全棧開發者也需要從日志中預測一些趨勢,比如 CPU 或者 I/O 占用率的上漲,以防應用不知道什么時候就掛了。這部分和運維也有一些關系,但是需要一些特別的技能:

      日志

      圖片來自GIPHY

        推薦一篇非常棒的 ELK stack 的文章,這會幫助你了解做日志系統所需要的知識。里面包括了查找日志的 ElasticSearch ,收集日志的 Logstash,把日志用非常棒的圖表展現出來的的 Kibana,甚至還有提供解決方案的 Logz.io。

        移動端

        最后,我們該說說移動端了。隨著 iOS 和安卓上的的 webview 變得越來越高效,還有 PWA(漸進式web應用) 的到來,native 應用正在變得黯淡,因為他們開發起來實在是太復雜了。所以一個全棧工程師必須了解 PWA 或者 React Native,或者像NativeScript, Tabris, Cordova, Phonegap或者其他 webview 來讓客戶端應用調用 API 跑起來(如上一章最后說的那樣)。

        做一個全棧工程師值得嗎?

        所以最后只有一個問題,值不值?

        首先,應該注意到很少的全棧工程師稱得上真正的全棧,大部分全棧工程師關注了上面技術的某些方面,而不是所有的,僅僅因為不可能有那么多精力放在上面所有方面。

        其次,對所有方面都了解一點也許不會讓你在具體方面成為大師,但是說實在的,這會讓你在更好地理解項目的流程,和項目確實都需要用到的技術。當作為乙方、開一個外包公司或者給一個迷茫的團隊指一條明路方面是無價的技術。

        我可能不是一個“JavaScript 巨星”,“Elasticsearch 忍者”,“MySQL 大師”,“運維狂人”,或者“移動端老司機”,我不想被奉承,但是我覺得,做一個全棧工程師讓我張開了翅膀,測試不同的技術,作為自由職業者給我的客戶提供與眾不同的解決方案。我可以有各種各樣的賺錢方式,也能拿到從服務端工作到 WordPress 插件開發等不同的訂單,因為我對所有的這些都有很多了解(遲早的事)。對于我來說,做一個全棧工程師是非常值得的,對比我以前只做 Flash 的日子,我現在更喜歡我的工作,當時工作多而且工資低(沒有 JavaScript)。

        你呢,你是全棧還是也精于專呢?不管你是不是全棧,你覺得做的事情值嗎?

      http://www.randomwithlife.com/ true 做一枚全棧工程師 http://www.randomwithlife.com/show-10-1117-1.html report <?php echo strlen($content) / 2; ?>   這篇熱門文章在 2017 年 6 月更新過,引入了更多新技術! ∪绻粋全棧工程師能夠根據原型實現一個完整的MVP(minimum viable product,至少可行的產品),我們通常會認為他十八般武藝樣樣精通,而
      TAG:全棧工程師
      本站歡迎任何形式的轉載,但請務必注明出處,尊重他人勞動成果
      轉載請注明: 文章轉載自:愛思資源網 http://www.randomwithlife.com/show-10-1117-1.html

      [前端插件推薦] Plugin

      1 2 3 4
      • jQuery實現逐字逐句顯示插件l-by-l.min.js
      • jQuery帶方向感知的鼠標滑過圖片邊框特效插件
      • jQuery HotKeys監聽鍵盤按下事件keydown插件
      • 響應式無限輪播jQuery旋轉木馬插件
      響應式無限輪播jQuery旋轉木馬插件
      web前端開發
      愛思資源網 Copyright 2012-2014 www.randomwithlife.com All rights reserved.(晉ICP備13001436號-1)
      欧美精品久久久久久久自慰

      <noframes id="5hjpd"><progress id="5hjpd"><form id="5hjpd"></form></progress>

        <noframes id="5hjpd">

        <span id="5hjpd"><progress id="5hjpd"><progress id="5hjpd"></progress></progress></span>
          <noframes id="5hjpd">
          <ins id="5hjpd"><sub id="5hjpd"><rp id="5hjpd"></rp></sub></ins>
          <del id="5hjpd"><big id="5hjpd"></big></del>
          <track id="5hjpd"></track>