全棧工程師(Full-Stack Engineer):一個(gè)能處理數(shù)據(jù)庫(kù)、服務(wù)器、系統(tǒng)工程和客戶端的所有工作的工程師。根據(jù)項(xiàng)目的不同,客戶需要的可能是移動(dòng)棧、Web棧,或者原生應(yīng)用程序棧。
全棧:表示為了完成一個(gè)項(xiàng)目,所需要的一系列技術(shù)的集合。應(yīng)該從能力和思維方式兩方面,來(lái)判定一個(gè)人是否是一個(gè)合格的全棧工程師。簡(jiǎn)單來(lái)說(shuō)*全棧工程師就是可以獨(dú)立完成一個(gè)產(chǎn)品的人。
1、Web開發(fā)流程
大中型互聯(lián)網(wǎng)公司的產(chǎn)品研發(fā)流水線:產(chǎn)品設(shè)計(jì)--》交互設(shè)計(jì)--》視覺(jué)設(shè)計(jì)--》前端開發(fā)、后臺(tái)開發(fā)--》測(cè)試--》發(fā)布。
產(chǎn)品經(jīng)理:產(chǎn)品經(jīng)理其實(shí)是對(duì)一個(gè)產(chǎn)品負(fù)根本責(zé)任的管理者。他通常的工作包括制訂產(chǎn)品規(guī)劃、協(xié)調(diào)多方資源、把控產(chǎn)品方向和質(zhì)量細(xì)節(jié),等等。有時(shí)候,他會(huì)從頭策劃一個(gè)新的產(chǎn)品,而更多的時(shí)候,他是在優(yōu)化已有產(chǎn)品的一個(gè)部分。總之,在流水線中,產(chǎn)品經(jīng)理需要從策劃跟進(jìn)到發(fā)布,是一個(gè)非常重要的角色。
用戶研究員:用戶研究員的工作是研究用戶行為,有時(shí)候他會(huì)從宏觀的角度分析數(shù)據(jù),有時(shí)候也從微觀的角度分解用戶場(chǎng)景,有時(shí)候會(huì)召集一些用戶專門來(lái)訪談,或者觀察用戶對(duì)產(chǎn)品的使用情況。從輸出品的角度來(lái)說(shuō),用戶研究員一般輸出用戶研究報(bào)告來(lái)交付給產(chǎn)品經(jīng)理和交互設(shè)計(jì)師,作為產(chǎn)品設(shè)計(jì)的目標(biāo)參考。
交互設(shè)計(jì)師:交互設(shè)計(jì)師常被簡(jiǎn)稱為“交互”。他與視覺(jué)設(shè)計(jì)師最大的區(qū)別是,交互設(shè)計(jì)師更多著眼于如何優(yōu)化用戶界面的信息分布和操作流程。交互設(shè)計(jì)師的輸出品一般是描述用戶與網(wǎng)站“交互”過(guò)程的流程圖,以及描述頁(yè)面信息結(jié)構(gòu)的線框圖。輸出的線框圖會(huì)交付給視覺(jué)設(shè)計(jì)師。
視覺(jué)設(shè)計(jì)師:在細(xì)分交互設(shè)計(jì)師和視覺(jué)設(shè)計(jì)師的大公司,視覺(jué)設(shè)計(jì)師根據(jù)交互設(shè)計(jì)師輸出的線框圖來(lái)做一些潤(rùn)色和設(shè)計(jì),輸出最終的產(chǎn)品視覺(jué)稿之后將視覺(jué)稿交付給前端工程師。在一些不細(xì)分交互設(shè)計(jì)師和視覺(jué)設(shè)計(jì)師的小公司,二者被統(tǒng)稱為“設(shè)計(jì)師”,他們的職責(zé)就是負(fù)責(zé)整個(gè)用戶界面的設(shè)計(jì)。
前端工程師:產(chǎn)品視覺(jué)稿在得到產(chǎn)品經(jīng)理和交互設(shè)計(jì)師等多方確認(rèn)之后,會(huì)交給前端工程師,由前端工程師制作頁(yè)面,實(shí)現(xiàn)視覺(jué)稿以及交互功能。從頭銜上的變化就可以看出,這時(shí)候才真正開始編碼。前端工程師需要非常熟悉HTML、CSS和JavaScript,以及性能、語(yǔ)義化、多瀏覽器兼容、SEO、自動(dòng)化工具等廣泛的知識(shí)。
后臺(tái)工程師:使用服務(wù)器編程語(yǔ)言,進(jìn)行服務(wù)器功能的開發(fā)。在編程語(yǔ)言的選擇上,很多公司都會(huì)出于團(tuán)隊(duì)已有成員的知識(shí)儲(chǔ)備、程序員的供給量或者語(yǔ)言性能方面來(lái)進(jìn)行選擇。在這一方面,后臺(tái)語(yǔ)言的選擇是相對(duì)自由的一件事,不像前端工程師,為了頁(yè)面兼容性,必須使用HTML和CSS。如果關(guān)注各大公司招聘信息的話,您就會(huì)了解,不同公司使用不同的后臺(tái)語(yǔ)言,比如傳統(tǒng)的C#和C++、Java、PHP,或者新潮的RoR和Python。小公司的后臺(tái)工程師除了負(fù)責(zé)功能開發(fā),可能還會(huì)負(fù)責(zé)服務(wù)器的配置和調(diào)試、數(shù)據(jù)庫(kù)的配置和管理等工作。在大公司,這些工作會(huì)分別委派給后臺(tái)工程師、運(yùn)維工程師、數(shù)據(jù)庫(kù)管理員(DBA)等崗位。
運(yùn)維工程師:運(yùn)維工程師是跟服務(wù)器打交道的人,他會(huì)關(guān)注服務(wù)器的性能、壓力、成本和安全等信息。
測(cè)試工程師:顧名思義,測(cè)試工程師保證產(chǎn)品的可用性,即使在小公司,這一職位也是不可或缺的。
備注:在項(xiàng)目管理中,經(jīng)常會(huì)用到甘特圖。甘特圖(Gantt Chart)是柱狀圖的一種,顯示項(xiàng)目、子項(xiàng)目、進(jìn)度以及其他與時(shí)間相關(guān)的系統(tǒng)的進(jìn)展情況。
2、技術(shù)的發(fā)展
提到全棧技術(shù),不得不提一個(gè)代表性的全棧框架——MEAN,它是MongoDB-Express-AngularJs-Node.js的縮寫,是從數(shù)據(jù)庫(kù)、服務(wù)器到前端頁(yè)面的一個(gè)完整技術(shù)棧。
MongoDB是一個(gè)面向文檔的、NoSQL類型的數(shù)據(jù)庫(kù)。MongoDB顛覆了傳統(tǒng)的基于表的數(shù)據(jù)存儲(chǔ)方式,而采取了類似JSON的文檔結(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù),因而它在儲(chǔ)存數(shù)據(jù)時(shí)可以更加靈活。
Express是一個(gè)Node.js框架,可以創(chuàng)建靈活的Web服務(wù),比如單頁(yè)面應(yīng)用程序、多頁(yè)面應(yīng)用程序和混合型App。
AngularJS是一個(gè)開源的JavaScript框架,由Google和開源社區(qū)共同維護(hù),它用來(lái)創(chuàng)建單頁(yè)面應(yīng)用程序。它的目標(biāo)是使用model-view-controller模式來(lái)規(guī)范Web應(yīng)用程序,讓開發(fā)和測(cè)試富交互的單頁(yè)面應(yīng)用程序變得更加輕松。
Node.js是一個(gè)運(yùn)行在服務(wù)器端的JavaScript運(yùn)行環(huán)境,它的底層是基于Chrome的JavaScript運(yùn)行環(huán)境——V8引擎。Node.js可以作為服務(wù)器端語(yǔ)言,用來(lái)創(chuàng)建快速、可擴(kuò)展的應(yīng)用程序。Node.js也可以在本機(jī)運(yùn)行,做一些本地操作,比如加速本地開發(fā)流程,或者實(shí)現(xiàn)一鍵發(fā)布。
MEAN可以說(shuō)是傳統(tǒng)的LAMP方案的有力競(jìng)爭(zhēng)者。因?yàn)閺姆?wù)器端到頁(yè)面端都采用同樣的語(yǔ)言(JavaScript)和同樣的架構(gòu)模式(MVC),所以一個(gè)擅長(zhǎng)JavaScript的工程師可以兼顧前后端的開發(fā),并且前端模板代碼和后臺(tái)模板代碼是可以復(fù)用的。
3、提供PaaS服務(wù)的平臺(tái)越來(lái)越多
隨著Web技術(shù)的發(fā)展和開源社區(qū)的積極努力,有很多公司提供便宜又方便的一條龍服務(wù),可以解決獨(dú)立開發(fā)者的大量麻煩。
比如Amazon提供的PaaS(Platform as a Service,平臺(tái)即服務(wù)),就可以讓創(chuàng)業(yè)公司的開發(fā)者省去架設(shè)和維護(hù)服務(wù)器的麻煩。
而GitHub在2012年獲得了一億美元融資,也可以看出市場(chǎng)對(duì)代碼托管市場(chǎng)的信心。可以預(yù)期,未來(lái)可能會(huì)出現(xiàn)越來(lái)越多為開發(fā)者提供服務(wù)的公司。以后,小公司也可以用更低廉的價(jià)格獲得世界級(jí)的IT服務(wù)支持,毫無(wú)疑問(wèn),更多的IT服務(wù)將托管在第三方的服務(wù)器上。
VPS(Virtual Private Server,虛擬專用服務(wù)器)是把一臺(tái)物理服務(wù)器虛擬成多個(gè)虛擬專用服務(wù)器的服務(wù)。每個(gè)VPS都可分配獨(dú)立的公網(wǎng)IP地址,運(yùn)行獨(dú)立的操作系統(tǒng),擁有獨(dú)立的磁盤空間、內(nèi)存、CPU資源、進(jìn)程和系統(tǒng)配置,模擬出“獨(dú)占”使用計(jì)算資源的體驗(yàn)。
4、一專多長(zhǎng)
我跟一位行業(yè)專家討論過(guò)全棧工程師的話題,他不是很贊同全棧工程師這個(gè)方向。他認(rèn)為,工程師應(yīng)該有專精的技能和目標(biāo),如果初學(xué)者貪圖大而全,反而樣樣不精。我理解他的擔(dān)心,如果一個(gè)工程師沒(méi)有堅(jiān)實(shí)的基礎(chǔ)(比如專業(yè)理論知識(shí),對(duì)常用設(shè)計(jì)模式的理解,或者特定職業(yè)的基礎(chǔ)知識(shí)),那么了解的非本專業(yè)技能越多,越容易迷失。
所以我認(rèn)為,全棧工程師首先要“一專多長(zhǎng)”。一專多長(zhǎng)的意思是,工程師首先有一個(gè)專精的方向,在這個(gè)方向上足夠精通之后(高級(jí)工程師級(jí)別),以此為突破點(diǎn)去學(xué)習(xí)更多的知識(shí),增加自己的長(zhǎng)處。如果還沒(méi)有獲得某個(gè)方向上足夠深入的理解,就不要囫圇吞棗地去學(xué)習(xí)其他領(lǐng)域的知識(shí)。
有些知識(shí)需要時(shí)間的積累,并不是快速閱讀就可以掌握的。“全棧工程師”這個(gè)名詞可能會(huì)引起讀者的誤解。勿在浮沙筑高臺(tái),“全棧”是一個(gè)長(zhǎng)期積累的過(guò)程,是專精型工程師在不斷解決問(wèn)題的過(guò)程中積累知識(shí)和經(jīng)驗(yàn)所形成的能力,而不是一蹴而就的過(guò)程。
5、解決問(wèn)題,而不是醉心技術(shù)
公司存在的意義就是解決問(wèn)題,公司要解決用戶的問(wèn)題,而員工要解決公司的問(wèn)題。
公司的問(wèn)題可能是降低成本、擴(kuò)大用戶群、增加成交量、優(yōu)化性能,等等。不同的問(wèn)題優(yōu)先級(jí)不一樣,投入同樣的時(shí)間,有的項(xiàng)目能為公司增加上百萬(wàn)的收入,而有的項(xiàng)目卻只能增加幾萬(wàn)。
互聯(lián)網(wǎng)領(lǐng)域發(fā)展很快,問(wèn)題的優(yōu)先級(jí)永遠(yuǎn)都是在動(dòng)態(tài)變化的,所以團(tuán)隊(duì)往往每半年或者三個(gè)月就要回顧一下當(dāng)前形勢(shì),并制定新的工作計(jì)劃。如果新計(jì)劃不是您擅長(zhǎng)的,怎么辦?您應(yīng)該馬上開始學(xué)習(xí)新的技術(shù),這就是我說(shuō)的關(guān)注問(wèn)題,而不是醉心技術(shù)。
高級(jí)工程師可以選擇往上下游去擴(kuò)展自己的能力,并承擔(dān)更多的責(zé)任,給公司帶來(lái)更大的收益,也給自己帶來(lái)更大的成長(zhǎng)空間。程序員在小公司里主動(dòng)去承擔(dān)更多責(zé)任,自己跟公司都會(huì)獲得相應(yīng)的成長(zhǎng)。在自由職業(yè)市場(chǎng),全棧工程師是最閃耀的明星。全棧工程師還是天生的創(chuàng)業(yè)者。
-
工程師
+關(guān)注
關(guān)注
59文章
1571瀏覽量
68562
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論