丹楓在心
全棧工程師需要學(xué)習(xí)多種技術(shù)和領(lǐng)域,包括但不限于以下內(nèi)容:
1、前端技術(shù):HTML、CSS、JavaScript、React、Angular、Vue等
2、后端技術(shù):Java、Python、、Ruby on Rails等
3、數(shù)據(jù)庫:SQL、NoSQL、MongoDB等
4、服務(wù)器管理:Linux命令行、Docker、Nginx、Apache等
5、版本控制:Git、SVN等
6、網(wǎng)絡(luò)協(xié)議:HTTP、TCP/IP等
7、安全性:Web安全、數(shù)據(jù)加密、認(rèn)證與授權(quán)等
除了技術(shù)方面,全棧工程師還需要具備團隊協(xié)作、項目管理、溝通能力和解決問題的能力。
全棧工程師工作內(nèi)容及任職要求
1、在原有的產(chǎn)品框架上進(jìn)行功能板塊的獨立開發(fā),包括PC端.移動端.微信小程序等應(yīng)用,并進(jìn)行代碼維護(hù)工作,優(yōu)化代碼質(zhì)量,抽象組件,提取公共業(yè)務(wù)模塊;
2.深度參與產(chǎn)品需求評審,提出可行的技術(shù)方案,確保產(chǎn)品具有優(yōu)質(zhì)的用戶體驗;
3.協(xié)助系統(tǒng)功能的測試,及時修復(fù)對應(yīng)的問題,對項目功能的可交付落地負(fù)責(zé);
4.承擔(dān)一部分前端UI.交互設(shè)計,以及后端接口.服務(wù)器運維等開發(fā)工作;
5.基于公司宏觀產(chǎn)品線,不斷理解和優(yōu)化產(chǎn)品架構(gòu),關(guān)注前后端前沿技術(shù),并反哺其它開發(fā)模塊和團隊成員,指出架構(gòu)中的問題,輸出合理的調(diào)整建議,引領(lǐng)和推動團隊技術(shù)進(jìn)步;
任職要求:
1、全日制統(tǒng)招本科及以上學(xué)歷,計算機.軟件工程等相關(guān)專業(yè);
2、精通各種前端技術(shù),包括等,了解模塊化思想,能進(jìn)行模塊化開發(fā),掌握常用的e6語法;
3、熟練掌握React/Vue中至少一種前端框架,并使用對應(yīng)的技術(shù)棧開發(fā)過至少1個以上的項目(有小程序開發(fā)經(jīng)驗者優(yōu)先);
4、熟悉框架,有搭建或維護(hù)koa2中間服務(wù)器的經(jīng)驗,能編寫API接口,了解ql語法,能使用nodej操作數(shù)據(jù)庫(增刪改查);
5、認(rèn)可低代碼開發(fā)環(huán)境,并有前端組件化的思維,能根據(jù)業(yè)務(wù)抽離出獨立的模塊(有低代碼開發(fā)經(jīng)歷者優(yōu)先);
6、自我驅(qū)動,優(yōu)秀的邏輯思維能力.溝通能力和學(xué)習(xí)能力,有高度的團隊協(xié)作精神,能承擔(dān)一定的工作壓力;
淡水氤氳
全棧工程師是指掌握多種技能,并能利用多種技能獨立完成產(chǎn)品的人。也叫全端工程師(同時具備前端和后臺能力),英文Full Stack developer。如何成為全棧工程師,從前端到后端的技術(shù)很多,全棧工程師并不需要你真的掌握所有的技術(shù),你應(yīng)該將自己的精力聚焦于關(guān)鍵開發(fā)技能以及一些必須掌握的附加技能上。你必須要會版本管理,精通一門語言,熟練運用開發(fā)框架和第三方庫,精通前端技術(shù),熟悉數(shù)據(jù)庫與緩存,當(dāng)然還需要基本的設(shè)計能力,溝通能力,和組織能力。全棧工程師決不是一夜練成的,你需要打好技術(shù)基礎(chǔ),強化核心技能,并持續(xù)學(xué)習(xí)
依我以希
為了在這個牛逼的市場里獲得成功,我們這些開發(fā)者――通常都是完美主義者――應(yīng)經(jīng)常把“如果你想做正確的事”當(dāng)做自己的座右銘,并經(jīng)常質(zhì)問自己。這會強迫我們自己集中精力在一處,而且必須學(xué)習(xí)所有東西,所以做一個全棧工程師往往要學(xué)會以下技能,濟南IT培訓(xùn)優(yōu)就業(yè)的小編整理發(fā)布:
1、服務(wù)管理/運維
一個開發(fā)者必須了解基礎(chǔ)的服務(wù)器管理知識。包括當(dāng)不限于以下知識:
通過終端或其他沒有用戶界面的環(huán)境來遠(yuǎn)程連接服務(wù)器
會寫基本的shell腳本
服務(wù)器上的用戶和群組管理
管理像Apache和Nginx這樣的服務(wù)器程序來提供應(yīng)用
防火墻管理和權(quán)限管理
安裝和更新軟件
除了這些基礎(chǔ)技能,開發(fā)者必須懂得怎樣去創(chuàng)建一個好的、健康的、分離的開發(fā)環(huán)境,在 Docker 或者像 Vagrant 這樣的虛擬機環(huán)境中。如果上面所有的技術(shù)你都不熟悉,那我必須給你推薦一本超棒的書,點這里購買。
開發(fā)者必須對版本控制系統(tǒng)非常熟練,為了讓開發(fā)有靠譜的生產(chǎn)備份和可分享、可協(xié)同的代碼庫,這些代碼庫能夠根據(jù)時間來跟蹤代碼變化?,F(xiàn)在已經(jīng)沒有開發(fā)者的工作流是完全離開版本控制的了。我們有一個非常棒的關(guān)于版本控制的視頻教程,點這里購買。
2、云
和實際管理或者虛擬服務(wù)器不同,一個開發(fā)者也許要知道云主機平臺,比如Heroku, Google Cloud, Azure, AWS等等。
有一點必須說明的是,平臺和工具更多的是為了炒作而不是其實用性。盡管有很多平臺和工具的實用性并不如宣傳的那么好,但是了解這些大家都在談?wù)摰姆?wù),從長遠(yuǎn)來看會很有用――客戶可能會隨時要求更換服務(wù)提供商。幸運的是,我們擁有這些云主機部署權(quán)威指南。
3、后端
在后端,除了要懂選擇什么語言以外,比如 PHP 和眾多的框架 and CMSes,一個全棧開發(fā)者必須熟悉:
Web服務(wù)器,比如Nginx和Apache,和運維緊密相關(guān)
不幸的是,NodeJS 已經(jīng)可以將 JS、CSS 和其他資源文件編譯成靜態(tài)可以方便緩存的文件了。幸運的是,也有辦法避免學(xué)習(xí) NodeJS,用PHP也是可以的
像Composer這樣的PHP()包管理工具在現(xiàn)代化的開發(fā)環(huán)境中已經(jīng)離不開了
好的API 設(shè)計,自從大部分新型網(wǎng)頁都基于 API 而且僅僅為前端服務(wù)(下面會詳細(xì)描述)
ElasticSearch (introduction here)這樣的搜索引擎對于網(wǎng)站性能的提高是非常重要的
cronjobs 和后端的工作,使用Gearman 或者 Crunz 這類的庫
了解緩存,Varnish, Redis 等牛B的工具可以分片存儲數(shù)據(jù),這樣可以將一個項目部署的多個主機上
4、數(shù)據(jù)庫
數(shù)據(jù)庫是一個單獨的部分,因為除了很好地掌握我們基本上不會有結(jié)構(gòu)變化的關(guān)系數(shù)據(jù)庫(MySQL或者PostgreSQL)的數(shù)據(jù)模式之外,一個全棧工程師應(yīng)該對非關(guān)系型數(shù)據(jù)庫有所了解,如MongoDB, Redis,或Cassandra ,更不用說像Neo4j這樣的圖形數(shù)據(jù)庫了。
不幸的是,這些都是服務(wù)器上的東西,都在全棧工程師的控制下。也有幾個類似 Mong 的遠(yuǎn)程解決方案,像RestDB或者Google-owned Firebase等。
5、前端
想知道一個正常的前端知識圖譜是怎么樣的,可以在JavaScript 版塊看這篇絕世好文。但是作為一個全棧工程師,你需要了解
NodeJS and NPM
Yarn
預(yù)處理器和編譯器(如Babel),用來編譯 Typescript, ES6, LESS, SCSS, SaSS
構(gòu)建工具,如 Grunt 和 Gulp
框架,如 VueJS、React、Angular
模塊打包工具,如 Webpack、Browserify、Rollup
6、設(shè)計
在設(shè)計方面,全棧開發(fā)者需要了解怎樣在一個產(chǎn)品變成真正可用的 HTML 、CSS 代碼之前,畫一個原型圖。然后就可以去用 JS 寫交互、后端也可以用假數(shù)據(jù)來模擬生產(chǎn)環(huán)境。只有這個關(guān)鍵的原型圖完成,用戶體驗設(shè)計和接口設(shè)計就緒,真正的開發(fā)才能開始。這本身就是一項艱巨的任務(wù),需要一套特殊的工具:
Photoshop和Illustrator 或者一些開源的工具比如Gimp/Inkscape。訪問Design channel來了解更多這樣的工具。
一個牛的、快速的編輯器,比如Atom或Sublime Text(這兒有十種好用的sublime插件)
像Subtlepatterns的背景選擇器和顏色選擇器能夠搭配一些顏色
CSS的柵格系統(tǒng)
上面所說的前端所需要了解的所有知識和 JS 數(shù)據(jù)模擬
將原型圖發(fā)表到網(wǎng)上供大家瀏覽并給于反饋,Ngrok就非常好用
7、日志系統(tǒng)
為了高效監(jiān)控應(yīng)用的健康度,全棧開發(fā)者必須能夠追蹤錯誤,找到錯誤日志然后從中提取出有用的信息。全棧開發(fā)者也需要從日志中預(yù)測一些趨勢,比如 CPU 或者 I/O 占用率的上漲,以防應(yīng)用不知道什么時候就掛了。這部分和運維也有一些關(guān)系,但是需要一些特別的技能:
推薦一篇非常棒的ELK stack的文章,這會幫助你了解做日志系統(tǒng)所需要的知識。里面包括了查找日志的ElasticSearch ,收集日志的Logstash,把日志用非常棒的圖表展現(xiàn)出來的的Kibana,甚至還有提供解決方案的。
8、移動端
最后,我們該說說移動端了。隨著iOS和安卓上的的webview變得越來越高效,還有 PWA(漸進(jìn)式web應(yīng)用)的到來,native 應(yīng)用正在變得黯淡,因為他們開發(fā)起來實在是太復(fù)雜了。所以一個全棧工程師必須了解 PWA 或者 React Native,或者像NativeScript, Tabris, Cordova, Phonegap或者其他webview來讓客戶端應(yīng)用調(diào)用 API跑起來。
優(yōu)質(zhì)工程師考試問答知識庫