全棧開發:2017年你最好的選擇[翻譯]

在不斷壯大的招聘市場上,最須要的是有很是普遍技術棧的人。javascript

前言

敬愛的讀者,你們好。你們常常討論的話題是做爲一個軟件工程師是一個持續學習的過程。由於現有的趨勢和技術在軟件領域會很快過時,每一個人都要作好隨時作出改變的準備。這將會是一個持續而單調的過程,放鬆對於咱們來講是奢侈的。
在招聘市場上會有不少開發和工程師的工做,儘管數據科學和分析、
大數據專家、AI專家在最近三年已經上升了不少,可是仍是沒有和全棧開發或者全棧工程師的需求在一個數量級上。
在IT領域,除掉一些專業性的領域,只有幾個是最熱的。什麼緣由呢?這是因爲某些技術的飽和以及不少創業公司挖掘新的業務致使的。創業公司和微服務爆炸式的增加引發了一系列技術人員需求。,在這些裏面,全棧工程師就是其中一個。前端

爲何全棧工程師這麼受歡迎

公認的全棧工程師的定義是:"全棧的意思是開發者可以熟練的掌握前端和後端的開發技術."。從技術的角度來講,這並非行業設定的標準,這是技術進化的一面。一個全棧工程師常常努力去學習開源的技術去應用到他/她的工做當中。我認爲全棧工程師是一個如下技能的簡化組合:前端開發+後端開發+開發運維+設計。
爲了作一個web應用,一個全棧工程師應該知道怎麼樣去配置,優化,自動化部署應用java

全棧工程師是一個廣度優先搜索

若是你學過圖論,你應該遇到過圖的遍歷算法,每一個學計算機的人都應該知道這些。web

  • BFS(廣度優先搜索):一種首先搜索根節點全部的臨近節點,再遞歸進行搜索的遍歷算法。算法

  • DFS(深度優先搜索):一種首先搜索根節點最大深度的節點,再回來繼續按一樣的方式搜索其餘節點的算法。
    那麼,你學哪種?DFS仍是BFS?數據庫

這是一個我的的選擇問題。一個博士生可能更傾向於選擇深度優先學習方法由於他/她能夠縮小他們的工做範圍到一個模塊。可是在2017年作專業的軟件開發工做,你並無充足的時間來構建、測試和修復你的應用。後端

一個全棧開發工程師是一個廣度優先的學習方法,你要儘量的去學習多個領域(像前端開發,開發運維等),而後在後續的工做中再去加深你在這些領域的理解。當你在學校的時候,你在同時學習多門課程的過程當中使用的是BFS算法,因此這個技術你應該很熟悉吧。O(∩_∩)O~~緩存

做爲一個全棧工程師,你須要顧全一個應用從開始到結束的全部階段,你須要在各方面親力親爲,而後深刻挖掘。你學的越多,你對你的團隊就越有做用,你也會愈來愈牛B。服務器

在2017年,公司須要一我的掌握更多的技能。這不像是找一個你們都不知道的領域的傳統的候選人。擁抱開源讓不少機會都擺在了你的面前。架構

你在學習方面有熱情嗎?

若是你是有很是強的學習能力,又對嘗試新的事物很是熱心,那麼這個職業將會很是適合你。全棧開發是一個學習、實現、提升的過程。

持續的工做將會給你帶來各類不一樣的視野,你能夠將這些都應用在開發中。做爲一個全棧開發工程師,爲了解決問題,你須要去知道怎麼去開發,用哪一種方法,怎麼樣去面對一個新的需求。

解除對Web開發人員的限制

全部的職業都在持續的進化。計算機科學和軟件開發也不例外。不久之前,人們還習慣於僱傭一個專家去作一個任務。可是如今,在雲計算的時代,一個掌握更多技術的更適合如今的狀況。就像在兒童動漫中皮卡丘進化成了雷丘,一個傳統的web開發如今也正在向全棧開發工程師轉變。在這個領域這些改變是毋庸置疑的,我將會在下面說明。

誰是全棧開發工程師?

全棧開發是一個相對性的術語。就像色譜中的波長範圍同樣,全棧開發工程師須要的技能是根據需求而定的。可是我認爲,一個合格的全棧開發工程師須要如下技能:

  • 能熟練的使用CSS&JS(查詢,單頁應用,DOM和ES6),知道自動化工具(Grunt,Gul)和Browserify。

  • 至少熟悉一個web框架。好比:Djiango或者Node JS等。

  • 使用過SQL或者NoSQL數據庫一段時間(MySQL,MongoDB).能很好的進行數據庫建模,會實現高級的查詢和SQL join語法。

  • 知道如何在AWS EC2用Apache2 或者Nginx 做爲一個web服務器去部署代碼。會使用Docker或者虛擬化環境部署工具

  • 能夠用不一樣的組件設計web應用,有足夠的能力對架構重構有必定的看法

  • 選擇最好的解決方案並持續優化

  • 可使用Chef或Ansible週期性自動發佈應用。自動化記錄日誌和故障檢索。

  • 喜歡轉變環境,從一個領域到另外一個領域,或者一個技術到另一種技術,而且可以很快的完成任務。

  • 有可以用JS、Chrome插件和漸進式的web應用的方式開發hybird移動App。(譯者注:I'm dead

爲何你要選擇全棧開發?

當有多個職業能夠選擇的時候,爲何咱們要選擇全棧開發?首先,它可讓你一直學習新的事物。技術變化很是快,長時間作一樣的工做會讓你的職業生涯毀掉。你懂的越多,你就越有價值,你能夠在各方面有更好的看法。
其次,這個工做錢多。(譯者注:說的好)若是你是一個全棧工程師的話,選擇多而且鈔票多。在Indeed.com上一個薪資調查顯示,舊金山全棧開發工程師的平均工資是$130,576/年,一個傳統的web開發工程師的平均工資是$94,614/年。
哪怕是爆炸和擁擠的印度招聘市場,全棧工程師在2017年也很是的搶手。印度的創業公司已經開發意識到全棧工程師的重要意義,全棧會愈來愈重要。多數城市的軟件公司都在招聘軟件全棧開發工程師。

考慮負面的影響

作全棧工程師也有一些肯定,因此並非全部人都適合作全棧工程師。有如下肯定:

  • 人們可能會說你門門瞭解,沒有哪一門精通。儘管這些可能有一部分是對的,但精通你使用的技術是你本身的責任。開一個博客,常常記下當前項目中對你有幫助的筆記,也許之後你能用的到。

  • 對於新手來講,你須要工做來證實本身,能夠在創業公司作全棧工程師。只有少數人能夠在開始階段得到很大程度的自主權。對於大多數人來講,公司決定了你在開始階段將會作哪些工做。因此最好在出大學校園以前就作好規劃。

爲何又如何能成爲一個全棧開發工程師

我很自豪的稱我本身爲全棧開發工程師(在理論上和實際上)。你可能會說沒有人是完美的。這是真的。我離完美差的遠呢。我正在精通全棧開發的路上,並且在前三年的職業生涯之旅上經歷了酸甜苦辣。許多事情已經改變,或者正在改變,我寫了這篇文章而你剛好讀到。就像我我開始跟你說的同樣,全棧開發並非一個精確的定義。它是一個持續性的學習過程,全棧開發的關鍵是旋轉按鈕,而不是打開和關閉開關。(譯者注:這點很值得思考)
個人職業生涯開始於Python和Flask,而後學習了數據庫,像MongoDB和MySQL,緩存使用Redis,提交代碼使用Git,使用javascript,學會理解Celery和RabbotMQ的事件處理機制和消息隊列的原理。在那以後,我使用Diango框架,我又熟悉了AWS和Nginx web服務器。我使用CoffeeScript和Backbone JS,也用過Angular JS取爲公司開發Chrome擴展。由於我在幾家很優秀的創業公司工做,我有很大的自由度去作這些工做。我打心底感謝他們。

寫在最後

我給後來開發者的建議以下:
要一直保持學習的熱情。不要知道了就止步。能夠參加技術研討會和科技大會去發現最近開發流行的技術。不論是開發運維、UI/UX或者是後端開發,這取決於你。保持閱讀的良好習慣,多動手實驗。不要懼怕CSS。(譯者注:(⊙o⊙)…)買一個AWS的雲主機來作負載均衡的實踐。祝你早日實現全棧的夢想,吃好,睡好,保持好精力。

原文連接

相關文章
相關標籤/搜索