- Web全棧工程師的自我修養(yǎng)
- 余果
- 1247字
- 2019-01-28 09:44:18
Facebook只招全棧工程師
“全棧”是一個(gè)外來詞,對于中國讀者而言,會(huì)覺得它很陌生。當(dāng)我第一次對某人提到“全棧工程師”時(shí),他一頭霧水:“全棧?您是說全端工程師嗎?”
其實(shí),“全?!狈g自英文full-stack,表示為了完成一個(gè)項(xiàng)目,所需要的一系列技術(shù)的集合。“?!笔侵敢幌盗凶幽K的集合。這些軟件子模塊或者組件組合在一起即可實(shí)現(xiàn)既定功能,不再需要其他模塊。
全棧中的“?!迸c計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu)中的“堆?!辈皇峭粋€(gè)概念,后者是指先入后出的串行數(shù)據(jù)結(jié)構(gòu)。順便說下,“隊(duì)列”是指先入先出的串行數(shù)據(jù)結(jié)構(gòu)。
IT行業(yè)之外的人其實(shí)很難理解Web開發(fā)是多么復(fù)雜的工程。人們一般認(rèn)為,在計(jì)算機(jī)公司或者互聯(lián)網(wǎng)公司工作的人,就應(yīng)該能夠解決與計(jì)算機(jī)相關(guān)的所有問題:電腦開不了機(jī)、應(yīng)該買什么型號(hào)的手機(jī)、家里上不了網(wǎng),等等。在他們眼中,計(jì)算機(jī)行業(yè)的從業(yè)者天生就帶有“全棧光環(huán)”。
但是拿著這本書的您知道,要開發(fā)一個(gè)Web頁面,工程師需要掌握的知識(shí)至少包括:服務(wù)器(比如Linux)、數(shù)據(jù)庫(比如MySQL)、服務(wù)器端編程語言(比如PHP)、前端標(biāo)記語言和腳本語言(HTML、CSS、JavaScript)等。這些技術(shù)中的每一個(gè),都需要幾年的學(xué)習(xí)和練習(xí)才能達(dá)到精通的程度。Web工程是一個(gè)如此大的專業(yè)類別,以至于IT公司為每一個(gè)環(huán)節(jié)都設(shè)置了專門的部門和崗位,來把每一個(gè)環(huán)節(jié)做好。
服務(wù)器、數(shù)據(jù)庫、服務(wù)器端編程語言、HTML、CSS、JavaScript等組合在一起就是一個(gè)“?!薄_@個(gè)“棧”是用來制作Web站點(diǎn)的,所以又叫Web棧(Web-Stack)。
如果要開發(fā)一個(gè)在手機(jī)中運(yùn)行的應(yīng)用,開發(fā)者需要的知識(shí)包括:服務(wù)器、數(shù)據(jù)庫、服務(wù)器端編程語言、iOS或者Android開發(fā)技術(shù)。這些技術(shù)的集合稱為App棧(App-Stack)。

一個(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ā)工程師”,等等?!叭珬9こ處煛辈恍枰^銜。他既有全面的技術(shù)能力,也渴望跨界工作的狀態(tài)。
“全棧”好像是一個(gè)遙不可及的夢想,所以對于初次了解“全棧工程師”這個(gè)概念的工程師而言,有可能覺得“不可思議”或者抱著“這不可能”的排斥心理。但如果我們回頭看看Web開發(fā)的歷史,就知道“全?!逼鋵?shí)沒那么難。
- 高手是如何做產(chǎn)品設(shè)計(jì)的(全2冊)
- 零基礎(chǔ)學(xué)Visual C++第3版
- Android項(xiàng)目開發(fā)入門教程
- Angular UI Development with PrimeNG
- Learning Selenium Testing Tools with Python
- 動(dòng)手玩轉(zhuǎn)Scratch3.0編程:人工智能科創(chuàng)教育指南
- KnockoutJS Starter
- SharePoint Development with the SharePoint Framework
- Go并發(fā)編程實(shí)戰(zhàn)
- 大模型RAG實(shí)戰(zhàn):RAG原理、應(yīng)用與系統(tǒng)構(gòu)建
- ServiceNow:Building Powerful Workflows
- Java SE實(shí)踐教程
- RubyMotion iOS Develoment Essentials
- Practical Microservices
- Web Developer's Reference Guide