如何成為一名全棧開發人員
全棧工程師是可以將最初的原型轉換成為 MVP(最低可行產品),他們通常被稱之為行業的萬精油,無所不會的大師,而且有很好的聲譽。為了定義現代的全棧工程師,我們首先需要關注的是完整的堆棧開發人員曾經是什麼。
全棧工程師的以前
很久以前,大約在 2000年(在互聯網時代,17 年是很久以前),一個完整的堆棧開發人員是這樣的人可以做的:
能利用 Adobe 工具像圖象處理軟體PS處理圖片或者是設計煙花網頁
把這個設計變成 HTML、CSS 代碼和站點上的圖片(哦,還記得嗎?)
還有就是編寫一些基本的 PHP 4 腳本(在那時沒有面向對象的 PHP)來處理伺服器端的業務邏輯。
將所有動態數據存儲到 MySQL 中,可能會做一些優化。
把這些工作通過 FTP 上傳到伺服器,然後收集薪水。
請注意,我們在這裡談論的 PHP —— 全棧的 FLASH 或 ColdFusion 開發者的工作流程是不同的(但只是略有不同)。
那些日子很簡單,生活很美好。一個人的代理機構到處都是,工作過後,人們仍然有時間和家人在一起。
現在的全戰工程師是怎樣的呢?
現在一個全棧開發者需要懂得什麼?
這些日子,我們擔心如下正在發生的事情。 何以發展至這個地步?(圖片文字意思是:我幾乎見不到我的孩子。那也是你不得不承擔的風險)
為了在如今飽和的市場上取得成功,我們開發者,常常也是完美主義者,在是否需要外包上猶豫不定,常常奉行「如果你要做對某事,就要怎樣怎樣」的信條。這把我們逼到了牆角,我們不得不學習每件事情,如此一來,成為一個全棧開發者常常以圍繞如下事情而告終。
伺服器管理員 / DevOps
一個開發者必須懂得如何進行基本的伺服器管理。這包括但不限於以下幾點:
通過終端連接到非圖形化界面環境的遠程伺服器
基本的 shell 腳本編程
管理伺服器的用戶和用戶組
管理伺服器程序比如 Apache 和 Nginx,以便其服務於應用程序
管理防火牆和許可權
安裝新軟體,更新軟體版本
圖片來自GIPHY
除了以上基礎知識,一個開發者應該懂得如何通過 Docker 或虛擬機比如Vagrant來創建良好、健康、隔離的開發環境。如果以上所有方面你都不熟悉,我們有一本關於這個主題的在售優秀圖書.
一個開發者還應該熟諳版本控制系統,才能夠可靠地生成可共享的、協作的代碼庫及其備份, 並且隨時間流逝跟蹤其變化。這些日子以來沒有一個現代開發者的流程能夠少得了版本控制系統。我們這裡有一個精彩的付費視頻教程。
除了實際管理的或虛擬化的伺服器,開發者可能還需要知道雲- 託管平台,像Heroku、Google Clould、Azure、AWS 等。
對於平台和工具來說,有一點值得一提,那就是宣傳比即時可用有效果。但是長遠來看,熟悉大家都在談論的服務終究會派上用場 — 現在客戶端可以隨時更換供應商,所以需要時刻準備著。幸好我們有部署到這些雲主機的終極指南。
在後端, 除了懂得所選擇的語言(我們選擇 PHP)的多種框架和CMS(內容管理系統),一個開發者需要熟悉:
資料庫是一個獨立的部分,因為除了掌握好管理數據的關係資料庫,資料庫的模式不會經常改變,(比如MySQL或 PostgreSQL),一個開發者需要弄懂 NoSQL 資料庫比如MongoDB、Redis,或者Cassandra– 更不用說圖資料庫比如Neo4j。
更糟糕的是,這些都在伺服器上,在開發者的控制下。 也有幾個遠程方案比如類似 Mongo 的RestDB或 Google 擁有的Firebase等等。
前端真的很混亂。
要全面了解當前健康的前端工作流需要什麼,請參閱 JavaScript 頻道上的這篇優秀文章。但作為一篇「太長,別看」的文章,它概括起來包括以下要點:
NodeJS 和 NPM
Yarn
預處理器和諸如 Typescript、ES6、LESS、SCSS、SaSS 的跨(語言)編譯器
構建器和任務執行器,比如 Grunt 和 Gulp
框架,比如 VueJS、React、Angular
模塊打包工具,比如 Webpack、Browserify、Rollup
在設計中,開發者需要知道如何將應用程序的原型轉換成可用的格式,如 HTML 和 CSS。 然後可以使其與一些 JS 交互,後端可以用偽 JS 端點模擬,只有當這個「殼」應用程序完成,用戶體驗設計和介面設計就緒,才能真正開始開發。 這本身就是一項艱巨的任務,需要一套特殊的工具,如:
Photoshop 和/或 Illustrator 或開源的替代品如 Gimp / Inkscape – 在Design channel上找到所有關於這個的信息
一個良好、快速的編輯器如Atom或 Sublime Text (全棧開發的10個 ST 插件在這裡)
模式採摘器如 Subtlepatterns 和色彩採摘器以便配色
CSS 的grid systems
以上所有前端部分用於 JavaScript 模擬
在網上部署原型的方法,讓顧客看到並給你反饋 –Ngrok對此非常有用
開發者需要對 App 的健康狀況進行有效的關注,需要追蹤錯誤,訪問日誌並從中提取有價值的信息。開發者們還需要儘可能識別標誌性的趨勢,像 CPU 或者 I/O 使用量的提升都是故障停機的重要標誌,這跟 Devops 有一些聯繫,但這需要擁有特別的技能集。
我們有一篇很好的關於 ELK 棧的文章,它把你對日誌的需求都準備好了——它結合了 ElasticSearch 來搜索日誌,Logstash 用來收集他們,並且它的可視化面板 Kibana 可以疊加地把它們顯示在用戶友好的監視器上。甚至還有託管的解決方案來幫助你解決這個問題,例如Logz.io。


※高質量代碼的特徵
※曾估值30億美元的智能硬體廠商Jawbone遭清算,創始人成立新公司跑路
※Go語言中 select和switch 的比較
※掌上維度推出共享充電寶產品「電猿」,這個風口還有戲嗎?
※为什么做了这么多,种子用户就是不买帐?
TAG:推酷 |
※汽車人成真!日本人成功開發出變形金剛 機器人狀態下也能開
※《全境封鎖》前主創人員正在開發全新多人遊戲
※如何成為一名優秀的 WEB 開發者?
※我只是一名平庸的開發者
※開發人脈的方法,成功就差一個人脈圈
※騷操作集錦,看過去一年全世界人們如何開發潛能極限
※如何開發市場
※開發人員如何實現4K遊戲
※火影忍者:這四位堪稱研究忍術大師,開發的術最終都成全了別人
※趣圖:開發人員如何處理別人的代碼
※全世界開發者都在趕往同一個地方
※程序開發人員愛開發
※成年人開發天眼需要具備的條件
※如何成為區塊鏈開發者:速成課!
※劍橋研究人員開發出一款可以剝菜葉的機器人
※他離開發妻身無分文,娶她人事業下滑,前妻成名他被人遺忘
※年紀輕輕已成隊史第一人,若開發出穩定遠投他將不可阻擋
※20年前,一群毫無遊戲開發經驗的職場新人如何打造出《博德之門》
※這是一項艱難的成就!十個沒有雷作的遊戲開發商
※貴州一個正在開發旅遊的小村,因舉辦千人長桌宴成了網紅