全棧工程師修煉手冊(cè)

你常常聽(tīng)說(shuō)“全棧工程師”這個(gè)叫法吧,不過(guò)這到底表示什么意思呢,你覺(jué)得自己應(yīng)該成為一名全棧工程師么揩页?下面我們就來(lái)探討一下這個(gè)話題。


在Web與軟件開(kāi)發(fā)的世界中有3個(gè)基本的關(guān)注點(diǎn):前端烹俗、后端與全棧爆侣。我們先來(lái)看一下他們的含義。

何為全棧工程師幢妄?

前端工程師:

在打開(kāi)一個(gè)網(wǎng)站時(shí)兔仰,屏幕上的一切都屬于前端。前端工程師負(fù)責(zé)創(chuàng)建用戶界面背后的代碼蕉鸳。這些工程師不僅要熟悉HTML斋陪、JavaScript與CSS,還要掌握很多框架。這些框架有Foundation无虚、Angular JS缔赠、Ember JS、Backbone及Bootstrap等等友题。前端工程師要與設(shè)計(jì)師和其他專家協(xié)同工作嗤堰,從而將網(wǎng)站從模型轉(zhuǎn)換為可使用的模式。

后端工程師:

在你每天所訪問(wèn)的網(wǎng)站背后有服務(wù)器網(wǎng)絡(luò)度宦、數(shù)據(jù)庫(kù)以及各種應(yīng)用踢匣,他們相互協(xié)作將你所請(qǐng)求的網(wǎng)頁(yè)與數(shù)據(jù)傳遞給你。后端工程師負(fù)責(zé)構(gòu)建這些組件戈抄。

他們要擅長(zhǎng)各種編程語(yǔ)言离唬,如Python、.Net划鸽、Ruby输莺、Java及PHP等等,從而通過(guò)這些語(yǔ)言來(lái)編寫程序裸诽。他們還需要使用各種數(shù)據(jù)庫(kù)程序如MySQL嫂用、SQL Server及Oracle等來(lái)操縱信息并將其傳遞給最終用戶。后端工程師需要與組織中的各種經(jīng)理及其他成員通力配合來(lái)完成工作丈冬。

全棧工程師:

全棧工程師既要了解后端開(kāi)發(fā)嘱函,也要了解前端開(kāi)發(fā)。他們是“全方位”的工程師埂蕊,熟悉服務(wù)端的同時(shí)又懂客戶端用戶體驗(yàn)往弓。全棧工程師理解Web開(kāi)發(fā)進(jìn)程的每一個(gè)方面,同時(shí)又會(huì)就整體策略與最佳實(shí)踐對(duì)相關(guān)干系人提出建議與指導(dǎo)蓄氧。

角色演變

在早期的桌面計(jì)算時(shí)代函似,我們常常會(huì)看到一個(gè)人就完成了整個(gè)應(yīng)用的開(kāi)發(fā)工作。隨著程序變得越來(lái)越復(fù)雜匀们,以及越來(lái)越多的技術(shù)涌現(xiàn)了出來(lái)缴淋,一個(gè)人很難再完全掌控應(yīng)用開(kāi)發(fā)的各個(gè)方面。

在21世紀(jì)初期泄朴,一些擁有專業(yè)化技能的專家開(kāi)始出現(xiàn)重抖。由于復(fù)雜性的持續(xù)攀升,當(dāng)Web 2.0站點(diǎn)開(kāi)始出現(xiàn)時(shí)祖灰,很多程序員又回到了更簡(jiǎn)單的方式上來(lái)钟沛。相比于構(gòu)建復(fù)雜的數(shù)據(jù)庫(kù)和企業(yè)計(jì)算網(wǎng)絡(luò),開(kāi)發(fā)者開(kāi)始部署穩(wěn)定的LAMP棧(Linux局扶、Apache恨统、MySQL與PHP)叁扫,并創(chuàng)建出了靈活的面向?qū)ο笳Z(yǔ)言,如Django與Ruby on Rails畜埋。在這種環(huán)境下莫绣,全棧工程師的價(jià)值變得越來(lái)越大,因?yàn)樗麄兪煜ご蠖鄶?shù)現(xiàn)代框架與語(yǔ)言悠鞍。

運(yùn)維復(fù)雜性的回歸

不過(guò)对室,由于移動(dòng)計(jì)算與iOS和Android平臺(tái)的興起,我們又回到了復(fù)雜性的新時(shí)代:低成本的云服務(wù)器如Amazon Web Services和微軟的Azure咖祭、MongoDB等數(shù)據(jù)庫(kù)掩宜、Node.js與Angular.js等前端技術(shù)、Docker等容器技術(shù)么翰。這些平臺(tái)牺汤、服務(wù)與框架都擁有自身的特性。因此浩嫌,一個(gè)人幾乎無(wú)法成為能夠掌握所有技術(shù)的全棧工程師檐迟。

通才與專才

在當(dāng)前的環(huán)境下,成為全棧工程師的好處在于沒(méi)多少人擁有足夠的知識(shí)固该、經(jīng)驗(yàn)與溝通能力來(lái)整體把控使用了各種平臺(tái)與框架的項(xiàng)目锅减,如HTML5糖儡、機(jī)器學(xué)習(xí)及Scala等伐坏。因此,高水準(zhǔn)的全棧工程師總是供不應(yīng)求的握联。

不過(guò)桦沉,壞處則在于對(duì)于全棧工程師來(lái)說(shuō),他需要能夠熟練掌握這些組件金闽,但這是非常困難的事情纯露,況且未來(lái)還會(huì)有新的技術(shù)涌現(xiàn)出來(lái)。你可能很聰明代芜,但這些組件本身卻是非常復(fù)雜的埠褪,每幾個(gè)月都會(huì)出現(xiàn)新的語(yǔ)言和平臺(tái)。要想時(shí)刻保持技術(shù)上的領(lǐng)先是一件極其困難的事情挤庇。出于這個(gè)原因钞速,專才擁有自己獨(dú)特的優(yōu)勢(shì)。組織傾向于雇傭?qū)iT的角色嫡秕,因此相比于其他開(kāi)發(fā)者來(lái)說(shuō)渴语,專才在深層次的知識(shí)以及某個(gè)狹窄領(lǐng)域的經(jīng)驗(yàn)上會(huì)更勝一籌。

全棧工程師的前景

無(wú)論選擇在前端還是后端進(jìn)行深入學(xué)習(xí)昆咽,抑或是將自己定位成一個(gè)全棧的通才驾凶,從工作前景上來(lái)看都是好的牙甫。以北京為例,2017年北京全棧工程師的平均收入為20K调违,但是仍有75%的用戶覺(jué)得此數(shù)據(jù)偏低窟哺。

從簡(jiǎn)單的雛形到完美的成品,全棧工程師通常被認(rèn)為是萬(wàn)能多面手技肩,那全棧工程師到底做什么呢脏答?

全棧工程師需要哪些技能

為了在激烈的市場(chǎng)競(jìng)爭(zhēng)中占據(jù)一席之地,全棧工程師需要不斷學(xué)習(xí)各方面技能亩鬼,主要包含以下方面:

服務(wù)器管理/DevOps

程序員必須具備基本的服務(wù)器管理能力殖告,包括并不限于以下知識(shí):

1.在非GUI環(huán)境中,通過(guò)終端連接遠(yuǎn)程服務(wù)器

2.會(huì)寫Shell腳本編程

3.服務(wù)器上的用戶和群組管理

4.管理Apache和Nginx等服務(wù)器程序來(lái)提供應(yīng)用

5.管理防火墻和權(quán)限

6.安裝及更新軟件

除了這些基本功雳锋,程序員還需要懂得如何通過(guò)Docker或虛擬機(jī)來(lái)創(chuàng)建完善的黄绩、運(yùn)行良好的獨(dú)立開(kāi)發(fā)環(huán)境;以及熟練操作版本控制系統(tǒng),以便可靠地生成備份和可共享的協(xié)作代碼庫(kù)玷过,來(lái)根據(jù)時(shí)間追蹤代碼變化爽丹。?

云端/Cloud

除了物理服務(wù)器與虛擬服務(wù)器外,全棧工程師還需要了解云端辛蚊,例如Google Cloud粤蝎、Azure、AWS等袋马。?

雖然很多工具或平臺(tái)可能不會(huì)立即應(yīng)用初澎,但長(zhǎng)遠(yuǎn)看來(lái),熟悉每個(gè)人都在討論的服務(wù)可能會(huì)派上大用途虑凛,客戶可能隨時(shí)要求更換服務(wù)端碑宴,所以需要早做準(zhǔn)備。

后端/Back-end

除了需懂得選擇哪種語(yǔ)言桑谍,還應(yīng)該熟悉:?

1.與運(yùn)維緊密相關(guān)的Web服務(wù)器延柠,如Nginx和Apache

2.NodeJS會(huì)將JavaScript,CSS編譯為靜態(tài)文件锣披,用PHP可以避免NodeJS的問(wèn)題

3.依賴管理工具的使用贞间,比如PHP中的Composer

4.良好的API設(shè)計(jì),當(dāng)前大多數(shù)網(wǎng)站是基于API的雹仿,很少有獨(dú)立的前端交互

5.對(duì)性能提高非常重要的搜索引擎使用

6.用Gearman類工具增热,Crunz等庫(kù)進(jìn)行Cronjobs及后臺(tái)作業(yè)

7.緩存技術(shù)非常重要,使用Varnish盅粪,Redis或其他工具分片存儲(chǔ)數(shù)據(jù)

數(shù)據(jù)庫(kù)/Database

除了需掌握架構(gòu)穩(wěn)定的關(guān)系型數(shù)據(jù)庫(kù)钓葫,如MySQL , PostgreSQL票顾,一個(gè)全棧工程師還應(yīng)該對(duì)非關(guān)系型數(shù)據(jù)庫(kù)熟練應(yīng)用础浮,如MongoDB, Redis, Cassandra帆调,更不用說(shuō)Neo4j這樣的圖形數(shù)據(jù)庫(kù)了。

數(shù)據(jù)庫(kù)是在服務(wù)器上的豆同,需要全棧工程師的控制番刊,同時(shí)也存在遠(yuǎn)程解決方案,比如Mongo類的RestDB或Google的Firebase等影锈。

前端/Front-end

說(shuō)到前端芹务,技術(shù)棧可能比較混亂鸭廷。作為一個(gè)全棧工程師枣抱,你需要了解:

1.NodeJS和 NPM

2.Yarn

3.預(yù)處理器和編譯器(如Babel),用來(lái)編譯 Typescript, ES6, LESS, SCSS, SaSS

4.構(gòu)建和任務(wù)執(zhí)行工具辆床,如 Grunt和 Gulp

5.框架佳晶,如 VueJS、React讼载、Angular

6.模塊打包工具轿秧,如 Webpack、Browserify咨堤、Rollup

設(shè)計(jì)/Design

開(kāi)發(fā)者需要知道產(chǎn)品在轉(zhuǎn)為可用的HTML菇篡、CSS代碼前應(yīng)如何畫原型,然后用JavaScript進(jìn)行交互一喘,在后端用虛擬數(shù)據(jù)做模擬測(cè)試驱还,只有當(dāng)原型圖完成,用戶體驗(yàn)和交互界面設(shè)計(jì)完成津滞,產(chǎn)品才可以開(kāi)始真正的開(kāi)發(fā)铝侵。所以設(shè)計(jì)本身就是非常巨大的挑戰(zhàn)灼伤,需要使用一套特殊工具:

1.Photoshop 触徐,Illustrator或一些開(kāi)源工具如 Gimp , Inkscape等狐赡。

2.好用撞鹉、快速的編輯器,比如 Atom或 Sublime Text

3.背景選擇器颖侄,如Subtlepatterns和匹配顏色的顏色選擇器

4.CSS的柵格系統(tǒng)

5.用于JavaScript模擬的相關(guān)知識(shí)

6.把原型圖放到網(wǎng)上供用戶查看和反饋的方式鸟雏,比如Ngrok

日志

為了有效的監(jiān)控應(yīng)用的健康度,開(kāi)發(fā)者需要追蹤錯(cuò)誤览祖,找到這些日志并找出其中有價(jià)值的信息孝鹊,還需要預(yù)測(cè)一些趨勢(shì),比如需要注意CPU及I/O占用率的上漲展蒂,以防服務(wù)器突然崩潰又活。這些和運(yùn)維有一定聯(lián)系苔咪,也需要掌握更多專門的技能

移動(dòng)端

最后說(shuō)到移動(dòng)端,隨著 iOS和安卓的webview變得越來(lái)越高效柳骄,以及PWA(漸進(jìn)式web應(yīng)用)的到來(lái)团赏,原本的應(yīng)用逐漸不再流行,因?yàn)樗麄冮_(kāi)發(fā)起來(lái)過(guò)于復(fù)雜耐薯。所以一個(gè)全棧工程師必須了解 PWA或 React Native舔清,或NativeScript、Tabris曲初、Cordova体谒、Phonegap等好技術(shù)開(kāi)發(fā)出基于API的客戶端。

看完上述技能要求臼婆,全棧工程師是否仍然吸引著你?

需要注意的是其實(shí)大多數(shù)全棧工程師并不是精通所有技術(shù)营密,也會(huì)在某些方面有所偏重,畢竟每個(gè)人的時(shí)間與精力都是有限的目锭。全棧開(kāi)發(fā)工作可能無(wú)法使人成為某一領(lǐng)域的專家评汰,但卻能讓人很好的了解整個(gè)產(chǎn)品流程、項(xiàng)目需要的全部技術(shù)痢虹、以及對(duì)項(xiàng)目有更高層面的理解被去。?

如果想要向著全棧工程師的方向邁進(jìn),你應(yīng)該掌握很多知識(shí)與技能奖唯,并且熟悉上面提到的各種組件惨缆。此外,還要提升自己的個(gè)人溝通技能丰捷,這樣才能管理并與前端與后端開(kāi)發(fā)者實(shí)現(xiàn)較好的協(xié)作坯墨。

好消息是未來(lái)對(duì)于每一類Web開(kāi)發(fā)者來(lái)說(shuō)都是光明的,無(wú)論是前端病往、后端捣染,還是全棧。要堅(jiān)持學(xué)習(xí)一切有價(jià)值的東西停巷;掌握新的框架耍攘、語(yǔ)言與平臺(tái);并且與開(kāi)發(fā)者同事及最終用戶保持高效的溝通畔勤。在這種情況下蕾各,無(wú)論世界發(fā)生什么變化,你都會(huì)始終立于不敗之地庆揪。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末式曲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子缸榛,更是在濱河造成了極大的恐慌吝羞,老刑警劉巖始鱼,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異脆贵,居然都是意外死亡医清,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門卖氨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)会烙,“玉大人,你說(shuō)我怎么就攤上這事筒捺“啬澹” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵系吭,是天一觀的道長(zhǎng)五嫂。 經(jīng)常有香客問(wèn)我,道長(zhǎng)肯尺,這世上最難降的妖魔是什么沃缘? 我笑而不...
    開(kāi)封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮则吟,結(jié)果婚禮上槐臀,老公的妹妹穿的比我還像新娘。我一直安慰自己氓仲,他們只是感情好水慨,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著敬扛,像睡著了一般晰洒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上啥箭,一...
    開(kāi)封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天谍珊,我揣著相機(jī)與錄音,去河邊找鬼捉蚤。 笑死抬驴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缆巧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼豌拙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼陕悬!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起按傅,我...
    開(kāi)封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤捉超,失蹤者是張志新(化名)和其女友劉穎胧卤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拼岳,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枝誊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惜纸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叶撒。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖耐版,靈堂內(nèi)的尸體忽然破棺而出祠够,到底是詐尸還是另有隱情,我是刑警寧澤粪牲,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布古瓤,位于F島的核電站,受9級(jí)特大地震影響腺阳,放射性物質(zhì)發(fā)生泄漏落君。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一亭引、第九天 我趴在偏房一處隱蔽的房頂上張望叽奥。 院中可真熱鬧,春花似錦痛侍、人聲如沸朝氓。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赵哲。三九已至,卻和暖如春君丁,著一層夾襖步出監(jiān)牢的瞬間枫夺,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工绘闷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留橡庞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓印蔗,卻偏偏與公主長(zhǎng)得像扒最,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子华嘹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,286評(píng)論 25 707
  • 2016年4月10日岔霸,在一個(gè)春暖花開(kāi)季節(jié)、陽(yáng)光明媚的早晨俯渤,我完成了人生中第一個(gè)全程馬拉松比賽:42.195公...
    3只青蛙閱讀 871評(píng)論 0 7
  • 梅是我媽媽的姓呆细,杜蘅是古書上記載的一種香草。不起眼八匠,但中醫(yī)用它來(lái)治病絮爷。有《楚辭》中“香草美人”的意味。
    梅杜蘅閱讀 314評(píng)論 1 1