網(wǎng)站建設(shè)公司認(rèn)為連一個(gè)簡單的web棧模型:包含前端技術(shù)和后端技術(shù)。我們知道,前端工程師就是負(fù)責(zé)頁面瀏覽器端編程的人,后端工程師就是負(fù)責(zé)服務(wù)器端編程的人,那么什么才是全棧工程師呢?

對于全棧工程師,業(yè)界并沒有嚴(yán)格的定義,并不是說一定要一種都不能少地具備哪幾項(xiàng)知識(shí)才能叫做全棧工程師。我傾向于認(rèn)為,應(yīng)該從能力和思維方式兩方面,來判定一個(gè)人是否是一個(gè)合格的全棧工程師。國外是怎么定義全棧工程師的呢?在著名的問答網(wǎng)站Quora上有人提出了這個(gè)問題。一個(gè)獲得了高票的回答是:全棧工程師是指,一個(gè)能處理數(shù)據(jù)庫、服務(wù)器、系統(tǒng)工程和客戶端的所有工作的工程師。根據(jù)項(xiàng)目的不同,客戶需要的可能是移動(dòng)棧、Web棧,或者原生應(yīng)用程序棧?;旧?,當(dāng)客戶需要一個(gè)全棧工程師的時(shí)候,客戶需要的是一個(gè)全能的“大神”。簡單來說,全棧工程師就是可以獨(dú)立完成一個(gè)產(chǎn)品的人。當(dāng)客戶讓他去做一些舒適區(qū)之外的工作時(shí),他敢于迎難而上,并成功完成任務(wù)。我們每一個(gè)工程師,進(jìn)入到公司和企業(yè)工作之后,就會(huì)有一個(gè)職位頭銜。我的職位頭銜是“UI工程師”,其他人的頭銜可能是“交互設(shè)計(jì)師”“PHP開發(fā)工程師”,等等。“全棧工程師”不需要頭銜。他既有全面的技術(shù)能力,也渴望跨界工作的狀態(tài)。“全棧”好像是一個(gè)遙不可及的夢想,所以對于初次了解“全棧工程師”這個(gè)概念的工程師而言,有可能覺得“不可思議”或者抱著“這不可能”的排斥心理。但如果我們回頭看看Web開發(fā)的歷史,就知道“全棧”其實(shí)沒那么難。Web開發(fā)流程有人曾開玩笑說,全棧工程師是資本家的陰謀,因?yàn)槔习逑牍鸵粋€(gè)人來做三個(gè)人的工作。其實(shí)在2000年第一次互聯(lián)網(wǎng)泡沫破裂之前,那時(shí)候的Web工程師也許符合“全棧工程師”的簡單定義:一人包攬整個(gè)網(wǎng)站的構(gòu)建。
那時(shí)的Web工程師們所面臨的挑戰(zhàn)比今天小很多,他們可能只是制作一些靜態(tài)的頁面,不會(huì)面對如今富交互的Web應(yīng)用程序。那時(shí)網(wǎng)站可能包含數(shù)據(jù)庫和一些HTML表單,但僅此而已,甚至只需要將一些靜態(tài)頁發(fā)布到服務(wù)器上。在網(wǎng)站的前端無需視覺設(shè)計(jì)和交互設(shè)計(jì),因?yàn)榫W(wǎng)站屈指可數(shù),市場競爭很小,工程師僅用一些基本的HTML標(biāo)簽和閃亮的GIF圖片就可以吸引網(wǎng)民的目光。同時(shí),網(wǎng)站訪問量都比較小,前端資源的體積也不大,無需關(guān)注服務(wù)器壓力和CDN,網(wǎng)民對加載速度的容忍度比較高,也不需要過多考慮用戶體驗(yàn)。但隨著技術(shù)的發(fā)展、用戶量的增加、客戶端種類變多,每一個(gè)小小的細(xì)節(jié)都需要優(yōu)化和考慮。在海量的訪問量面前,也許改變一個(gè)按鈕的位置和顏色就能影響上千萬的訂單。如今的互聯(lián)網(wǎng)產(chǎn)品已不是以一己之力就可以完成的樂高積木了,Web開發(fā)需要以某種可控的方式來管理。于是,所有認(rèn)真對待互聯(lián)網(wǎng)產(chǎn)品的大公司都引入了流水線開發(fā)流程,在這條流水線上誕生了多個(gè)非常專業(yè)的職位。
產(chǎn)品經(jīng)理:產(chǎn)品經(jīng)理其實(shí)是對一個(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í)候也從微觀的角度分解用戶場景,有時(shí)候會(huì)召集一些用戶專門來訪談,或者觀察用戶對產(chǎn)品的使用情況。從輸出品的角度來說,用戶研究員一般輸出用戶研究報(bào)告來交付給產(chǎn)品經(jīng)理和交互設(shè)計(jì)師,作為產(chǎn)品設(shè)計(jì)的目標(biāo)參考。
交互設(shè)計(jì)師:交互設(shè)計(jì)師常被簡稱為“交互”。他與視覺設(shè)計(jì)師最大的區(qū)別是,交互設(shè)計(jì)師更多著眼于如何
優(yōu)化用戶界面的信息分布和操作流程。交互設(shè)計(jì)師的輸出品一般是描述用戶與網(wǎng)站“交互”過程的流程圖,以及描述頁面信息結(jié)構(gòu)的線框圖。輸出的線框圖會(huì)交付給視覺設(shè)計(jì)師。
視覺設(shè)計(jì)師:在細(xì)分交互設(shè)計(jì)師和視覺設(shè)計(jì)師的大公司,視覺設(shè)計(jì)師根據(jù)交互設(shè)計(jì)師輸出的線框圖來做一些潤色和設(shè)計(jì),輸出最終的產(chǎn)品視覺稿之后將視覺稿交付給前端工程師。在一些不細(xì)分交互設(shè)計(jì)師和視覺設(shè)計(jì)師的小公司,二者被統(tǒng)稱為“設(shè)計(jì)師”,他們的職責(zé)就是負(fù)責(zé)整個(gè)用戶界面的設(shè)計(jì)。
前端工程師:產(chǎn)品視覺稿在得到產(chǎn)品經(jīng)理和交互設(shè)計(jì)師等多方確認(rèn)之后,會(huì)交給前端工程師,由前端工程師制作頁面,實(shí)現(xiàn)視覺稿以及交互功能。從頭銜上的變化就可以看出,這時(shí)候才真正開始編碼。前端工程師需要非常熟悉HTML、CSS和JavaScript,以及性能、語義化、多瀏覽器兼容、SEO、自動(dòng)化工具等廣泛的知識(shí)。
后臺(tái)工程師:使用服務(wù)器編程語言,進(jìn)行服務(wù)器功能的開發(fā)。在編程語言的選擇上,很多公司都會(huì)出于團(tuán)隊(duì)已有成員的知識(shí)儲(chǔ)備、程序員的供給量或者語言性能方面來進(jìn)行選擇。在這一方面,后臺(tái)語言的選擇是相對自由的一件事,不像前端工程師,為了頁面兼容性,必須使用HTML和CSS。如果關(guān)注各大公司招聘信息的話,您就會(huì)了解,不同公司使用不同的后臺(tái)語言,比如傳統(tǒng)的C#和C++、Java、PHP,或者新潮的RoR和Python。小公司的后臺(tái)工程師除了負(fù)責(zé)功能開發(fā),可能還會(huì)負(fù)責(zé)服務(wù)器的配置和調(diào)試、數(shù)據(jù)庫的配置和管理等工作。在大公司,這些工作會(huì)分別委派給后臺(tái)工程師、運(yùn)維工程師、數(shù)據(jù)庫管理員(DBA)等崗位。
運(yùn)維工程師:運(yùn)維工程師是跟服務(wù)器打交道的人,他會(huì)關(guān)注服務(wù)器的性能、壓力、成本和安全等信息。測試工程師:顧名思義,測試工程師保證產(chǎn)品的可用性,即使在小公司,這一職位也是不可或缺的。流水線的優(yōu)勢由于有了流水線,其中每個(gè)職位的可用工作時(shí)間都會(huì)作為“資源”來管理,因此需要一位項(xiàng)目經(jīng)理來把控項(xiàng)項(xiàng)目進(jìn)度,并對人力資源進(jìn)行調(diào)控。比如一個(gè)項(xiàng)目立項(xiàng)時(shí),就要預(yù)約好這個(gè)周期版本需要實(shí)現(xiàn)哪些優(yōu)先級較高的特性,而把優(yōu)先級不那么高的特性推遲。對于確定在這一周期要實(shí)現(xiàn)的特性,就要安排本周進(jìn)行設(shè)計(jì)、下周完成開發(fā)、下下周進(jìn)行測試等。在項(xiàng)目管理中,經(jīng)常會(huì)用到甘特圖。甘特圖(GanttChart)是柱狀圖的一種,顯示項(xiàng)目、子項(xiàng)目、進(jìn)度以及其他與時(shí)間相關(guān)的系統(tǒng)的進(jìn)展情況。流水線在大公司的任何一個(gè)嚴(yán)謹(jǐn)?shù)拇笮晚?xiàng)目里都是必不可少的,因?yàn)闊o論是Web產(chǎn)品還是App產(chǎn)品,它的復(fù)雜性都已經(jīng)超出了單個(gè)工程師可以控制的程度。通過把復(fù)雜度分解到各個(gè)組件,每一個(gè)組件就可以進(jìn)行很好的質(zhì)量控制。

用于項(xiàng)目管理的甘特圖。Web頁面的生成和傳遞需要經(jīng)歷復(fù)雜的過程,因此容錯(cuò)能力就是首當(dāng)其沖要考慮的問題。數(shù)據(jù)從位于深圳某個(gè)機(jī)房里的服務(wù)器傳輸?shù)接脩羰謾C(jī)瀏覽器頁面上進(jìn)行運(yùn)算和渲染,這個(gè)過程中的每個(gè)環(huán)節(jié)都可能出錯(cuò),所以每一步都要做好容錯(cuò)處理。如果服務(wù)器出現(xiàn)錯(cuò)誤,是否能在30秒內(nèi)切換到備用機(jī)?后臺(tái)數(shù)據(jù)異常時(shí)返回什么結(jié)果給前端,等等。Web頁面可以在無數(shù)種設(shè)備上顯示。兼容性在此時(shí)成為了前端工程師需要考慮的一個(gè)重要問題。不同的用戶在不同手機(jī)上瀏覽頁面,顯示的方法會(huì)有些許不同,甚至要考慮到如果瀏覽器不支持JavaScript,則需要給出特定的提示。模塊化的Web開發(fā)流程在很大程度上提高了服務(wù)的可靠性和可用性,讓我們對每一個(gè)環(huán)節(jié)都能單獨(dú)進(jìn)行測試。這讓大型Web開發(fā)真正變得可管理、可控制、質(zhì)量可評估?;谝陨戏N種如果你已經(jīng)掌握了上述技能,那么,你就是一個(gè)
網(wǎng)站建設(shè)公司里面的全棧高手了。好了本文關(guān)于“一個(gè)全棧建站工程師需要掌握那些?”的建站知識(shí)就分享到這里,謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。