MyronKiven
殷血丹霞
為了在這個(gè)牛逼的市場(chǎng)里獲得成功,我們這些開發(fā)者――通常都是完美主義者――應(yīng)經(jīng)常把“如果你想做正確的事”當(dāng)做自己的座右銘,并經(jīng)常質(zhì)問(wèn)自己。這會(huì)強(qiáng)迫我們自己集中精力在一處,而且必須學(xué)習(xí)所有東西,所以做一個(gè)全棧工程師往往要學(xué)會(huì)以下技能,濟(jì)南IT培訓(xùn)優(yōu)就業(yè)的小編整理發(fā)布:
1、服務(wù)管理/運(yùn)維
一個(gè)開發(fā)者必須了解基礎(chǔ)的服務(wù)器管理知識(shí)。包括當(dāng)不限于以下知識(shí):
通過(guò)終端或其他沒(méi)有用戶界面的環(huán)境來(lái)遠(yuǎn)程連接服務(wù)器
會(huì)寫基本的shell腳本
服務(wù)器上的用戶和群組管理
管理像Apache和Nginx這樣的服務(wù)器程序來(lái)提供應(yīng)用
防火墻管理和權(quán)限管理
安裝和更新軟件
除了這些基礎(chǔ)技能,開發(fā)者必須懂得怎樣去創(chuàng)建一個(gè)好的、健康的、分離的開發(fā)環(huán)境,在 Docker 或者像 Vagrant 這樣的虛擬機(jī)環(huán)境中。如果上面所有的技術(shù)你都不熟悉,那我必須給你推薦一本超棒的書,點(diǎn)這里購(gòu)買。
開發(fā)者必須對(duì)版本控制系統(tǒng)非常熟練,為了讓開發(fā)有靠譜的生產(chǎn)備份和可分享、可協(xié)同的代碼庫(kù),這些代碼庫(kù)能夠根據(jù)時(shí)間來(lái)跟蹤代碼變化?,F(xiàn)在已經(jīng)沒(méi)有開發(fā)者的工作流是完全離開版本控制的了。我們有一個(gè)非常棒的關(guān)于版本控制的視頻教程,點(diǎn)這里購(gòu)買。
2、云
和實(shí)際管理或者虛擬服務(wù)器不同,一個(gè)開發(fā)者也許要知道云主機(jī)平臺(tái),比如Heroku, Google Cloud, Azure, AWS等等。
有一點(diǎn)必須說(shuō)明的是,平臺(tái)和工具更多的是為了炒作而不是其實(shí)用性。盡管有很多平臺(tái)和工具的實(shí)用性并不如宣傳的那么好,但是了解這些大家都在談?wù)摰姆?wù),從長(zhǎng)遠(yuǎn)來(lái)看會(huì)很有用――客戶可能會(huì)隨時(shí)要求更換服務(wù)提供商。幸運(yùn)的是,我們擁有這些云主機(jī)部署權(quán)威指南。
3、后端
在后端,除了要懂選擇什么語(yǔ)言以外,比如 PHP 和眾多的框架 and CMSes,一個(gè)全棧開發(fā)者必須熟悉:
Web服務(wù)器,比如Nginx和Apache,和運(yùn)維緊密相關(guān)
不幸的是,NodeJS 已經(jīng)可以將 JS、CSS 和其他資源文件編譯成靜態(tài)可以方便緩存的文件了。幸運(yùn)的是,也有辦法避免學(xué)習(xí) NodeJS,用PHP也是可以的
像Composer這樣的PHP()包管理工具在現(xiàn)代化的開發(fā)環(huán)境中已經(jīng)離不開了
好的API 設(shè)計(jì),自從大部分新型網(wǎng)頁(yè)都基于 API 而且僅僅為前端服務(wù)(下面會(huì)詳細(xì)描述)
ElasticSearch (introduction here)這樣的搜索引擎對(duì)于網(wǎng)站性能的提高是非常重要的
cronjobs 和后端的工作,使用Gearman 或者 Crunz 這類的庫(kù)
了解緩存,Varnish, Redis 等牛B的工具可以分片存儲(chǔ)數(shù)據(jù),這樣可以將一個(gè)項(xiàng)目部署的多個(gè)主機(jī)上
4、數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)是一個(gè)單獨(dú)的部分,因?yàn)槌撕芎玫卣莆瘴覀兓旧喜粫?huì)有結(jié)構(gòu)變化的關(guān)系數(shù)據(jù)庫(kù)(MySQL或者PostgreSQL)的數(shù)據(jù)模式之外,一個(gè)全棧工程師應(yīng)該對(duì)非關(guān)系型數(shù)據(jù)庫(kù)有所了解,如MongoDB, Redis,或Cassandra ,更不用說(shuō)像Neo4j這樣的圖形數(shù)據(jù)庫(kù)了。
不幸的是,這些都是服務(wù)器上的東西,都在全棧工程師的控制下。也有幾個(gè)類似 Mong 的遠(yuǎn)程解決方案,像RestDB或者Google-owned Firebase等。
5、前端
想知道一個(gè)正常的前端知識(shí)圖譜是怎么樣的,可以在JavaScript 版塊看這篇絕世好文。但是作為一個(gè)全棧工程師,你需要了解
NodeJS and NPM
Yarn
預(yù)處理器和編譯器(如Babel),用來(lái)編譯 Typescript, ES6, LESS, SCSS, SaSS
構(gòu)建工具,如 Grunt 和 Gulp
框架,如 VueJS、React、Angular
模塊打包工具,如 Webpack、Browserify、Rollup
6、設(shè)計(jì)
在設(shè)計(jì)方面,全棧開發(fā)者需要了解怎樣在一個(gè)產(chǎn)品變成真正可用的 HTML 、CSS 代碼之前,畫一個(gè)原型圖。然后就可以去用 JS 寫交互、后端也可以用假數(shù)據(jù)來(lái)模擬生產(chǎn)環(huán)境。只有這個(gè)關(guān)鍵的原型圖完成,用戶體驗(yàn)設(shè)計(jì)和接口設(shè)計(jì)就緒,真正的開發(fā)才能開始。這本身就是一項(xiàng)艱巨的任務(wù),需要一套特殊的工具:
Photoshop和Illustrator 或者一些開源的工具比如Gimp/Inkscape。訪問(wèn)Design channel來(lái)了解更多這樣的工具。
一個(gè)牛的、快速的編輯器,比如Atom或Sublime Text(這兒有十種好用的sublime插件)
像Subtlepatterns的背景選擇器和顏色選擇器能夠搭配一些顏色
CSS的柵格系統(tǒng)
上面所說(shuō)的前端所需要了解的所有知識(shí)和 JS 數(shù)據(jù)模擬
將原型圖發(fā)表到網(wǎng)上供大家瀏覽并給于反饋,Ngrok就非常好用
7、日志系統(tǒng)
為了高效監(jiān)控應(yīng)用的健康度,全棧開發(fā)者必須能夠追蹤錯(cuò)誤,找到錯(cuò)誤日志然后從中提取出有用的信息。全棧開發(fā)者也需要從日志中預(yù)測(cè)一些趨勢(shì),比如 CPU 或者 I/O 占用率的上漲,以防應(yīng)用不知道什么時(shí)候就掛了。這部分和運(yùn)維也有一些關(guān)系,但是需要一些特別的技能:
推薦一篇非常棒的ELK stack的文章,這會(huì)幫助你了解做日志系統(tǒng)所需要的知識(shí)。里面包括了查找日志的ElasticSearch ,收集日志的Logstash,把日志用非常棒的圖表展現(xiàn)出來(lái)的的Kibana,甚至還有提供解決方案的。
8、移動(dòng)端
最后,我們?cè)撜f(shuō)說(shuō)移動(dòng)端了。隨著iOS和安卓上的的webview變得越來(lái)越高效,還有 PWA(漸進(jìn)式web應(yīng)用)的到來(lái),native 應(yīng)用正在變得黯淡,因?yàn)樗麄冮_發(fā)起來(lái)實(shí)在是太復(fù)雜了。所以一個(gè)全棧工程師必須了解 PWA 或者 React Native,或者像NativeScript, Tabris, Cordova, Phonegap或者其他webview來(lái)讓客戶端應(yīng)用調(diào)用 API跑起來(lái)。

獨(dú)步幽森
什么是全棧開發(fā)工程師呢?開發(fā)工程師的種類是很多種,很多人在企業(yè)招聘中會(huì)看到全棧工程師的招聘。很多人覺(jué)得這種職位可望不可即,并且用人單位也很難招到這樣一個(gè)人。什么是全棧工程師?成為全棧開發(fā)工程師需要具備哪些能力呢?下面山東電腦培訓(xùn)為大家具體介紹。企業(yè)對(duì)全棧開發(fā)工程師的期望遠(yuǎn)遠(yuǎn)超過(guò)普通人的能力。全棧開發(fā)工程師至少需要深入了解棧中的每個(gè)組件,以便做出明智的選擇并向管理層解釋。在學(xué)習(xí)中,棧中每個(gè)層都會(huì)添加新的組件,并且每隔幾年就會(huì)添加新的層,所以山東IT培訓(xùn)認(rèn)為全棧開發(fā)工程師不僅需要具備技能能力,學(xué)習(xí)能力和接受能力也是非常關(guān)鍵的。雖然有些人確實(shí)擁有完整的全棧技術(shù)能力。但是還是有許多開發(fā)人員,設(shè)計(jì)人員和項(xiàng)目經(jīng)理仍然沒(méi)有很好的掌握。在招聘中,山東IT培訓(xùn)發(fā)現(xiàn)一些聲稱是全棧工程師的人只能列出組件的一半以上,更不用說(shuō)組件之間的交互了。一些全棧工程師可能不會(huì)編寫代碼,這樣的人僅僅只能充當(dāng)系統(tǒng)架構(gòu)師或集成工程師。在全棧開發(fā)中,還是很多細(xì)小的分類,應(yīng)該正確了解自己是屬于哪個(gè)棧,例如:web棧、移動(dòng)棧等等。一名優(yōu)秀的全棧開發(fā)工程師,應(yīng)該可以在沒(méi)有其他人幫助的情況下自行構(gòu)建和部署完整的工作應(yīng)用程序。山東電腦培訓(xùn)認(rèn)為這樣就意味著他們可以編寫前端,后端代碼,能夠配置服務(wù)器,當(dāng)然還可以設(shè)計(jì)數(shù)據(jù)庫(kù)表。
優(yōu)質(zhì)工程師考試問(wèn)答知識(shí)庫(kù)