更新時(shí)間:2019-08-09 11:29:30 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2956次
最近網(wǎng)上在熱烈討論一則傳聞,說(shuō)Facebook在招聘所謂的“全棧工程師”(Full Stack Engineer),要求應(yīng)征者對(duì)開(kāi)發(fā)堆棧的每個(gè)方面都有所掌握。那究竟何為 “全棧工程師”呢?從字面上來(lái)理解,全棧工程師必須熟悉開(kāi)發(fā)堆棧的每一個(gè)層次,或者至少熟悉絕大多數(shù)并且對(duì)所有的軟件技術(shù)有天生的熱情和興趣。
對(duì)于這樣的開(kāi)發(fā)者,他們非常擅長(zhǎng)使用掌握的技術(shù)讓自己的生活變得輕松,這也正是為什么Facebook會(huì)希望雇傭他們,他們用自己的腦子與熱情編碼,
好的產(chǎn)品也自然能在最短的時(shí)間呈現(xiàn)。那么,具體而言,一個(gè)合格的“全棧工程師”要具備哪些素質(zhì)呢?
開(kāi)發(fā)堆棧剖析
1.服務(wù)器,網(wǎng)絡(luò)以及宿主環(huán)境
需要理解哪些模塊可能失效以及為什么,而不能理所當(dāng)然地認(rèn)為,只要不斷增加資源就能解決所有問(wèn)題。
知道如何運(yùn)用操作系統(tǒng)、云存儲(chǔ)、網(wǎng)絡(luò)資源,并能理解數(shù)據(jù)冗余以及可用性是必需的。
了解應(yīng)用的規(guī)模是如何對(duì)硬件造成限制的。
還有多線程和競(jìng)態(tài)條件,這些概念在開(kāi)發(fā)機(jī)上往往不會(huì)遇到,但是他們?cè)诂F(xiàn)實(shí)的部署環(huán)境中卻無(wú)處不在。
全棧工程師還必須要能夠與Devops很好地協(xié)作。他們所設(shè)計(jì)的系統(tǒng)應(yīng)該提供有用的錯(cuò)誤消息和日 志能力,這樣DevOps就能夠及時(shí)獲得這些信息,并采取有價(jià)值的行動(dòng)。
2.數(shù)據(jù)建模
如果數(shù)據(jù)模型存在缺陷,那么就常常需要在業(yè)務(wù)邏輯和更高的層面上使用丑陋的代碼來(lái)彌補(bǔ)那些數(shù)據(jù)模型沒(méi)辦法覆蓋的死角。
知道如何建立合理的范式關(guān)系模型,具備完善的外鍵、索引、視圖、查詢表等等。
還要熟悉非關(guān)系型數(shù)據(jù)的存儲(chǔ),知道非關(guān)系型數(shù)據(jù)庫(kù)在哪些方面超越關(guān)系型數(shù)據(jù)庫(kù)。
3.業(yè)務(wù)邏輯
這是系統(tǒng)應(yīng)用價(jià)值的關(guān)鍵所在。
掌握SOLID設(shè)計(jì)能力(單一職責(zé),開(kāi)放且封閉,Liskov替代性,接口分離,依賴注入)。
熟悉一些常用的框架。
API/Action/MVC
這些關(guān)乎外部世界如何與業(yè)務(wù)邏輯及數(shù)據(jù)模型交互。
會(huì)使用到大量的框架。
有能力寫出清晰、一致、使用簡(jiǎn)單的接口。
4.用戶界面
全棧工程師需要:a)懂得如何構(gòu)建易讀的布局;b)能意識(shí)到藝術(shù)家和圖形設(shè)計(jì)師的作用??傊?,實(shí)現(xiàn)一套好的視覺(jué)設(shè)計(jì)方案尤為關(guān)鍵。
熟練掌握HTML5/CSS。
從目前的趨勢(shì)來(lái)看,JavaScript將會(huì)是明日之星,最近這一領(lǐng)域碩果累累(NodeJs, backbone, knockout, Angular(自己的加的, 原文沒(méi)有))。因此,掌握J(rèn)avaScript必不可少。
5.用戶體驗(yàn)
全棧工程師應(yīng)該意識(shí)到:用戶僅僅是希望一切運(yùn)轉(zhuǎn)良好。
一個(gè)好的系統(tǒng)是不會(huì)讓用戶得腕管綜合征或產(chǎn)生眼疲勞的。全棧工程師能審視全局,可以將一個(gè)需要8次點(diǎn)擊+3個(gè)步驟的過(guò)程,簡(jiǎn)化為僅需要一次點(diǎn)擊。
知道如何向用戶提示錯(cuò)誤信息。如果出現(xiàn)故障,真誠(chéng)道歉。有時(shí)一些無(wú)意的錯(cuò)誤信息,會(huì)讓用戶感到莫名奇妙。
理解用戶和市場(chǎng)需求
這層關(guān)系到系統(tǒng)架構(gòu),但也絕不是一個(gè)不能碰的角色(有可能翻譯有誤,原文:but that is too much of a hands off role)。
全棧工程師要領(lǐng)悟客戶使用軟件過(guò)程中會(huì)需要些什么以及整個(gè)市場(chǎng)需要些什么。
其他方面
1.能寫出高質(zhì)量的單元測(cè)試,時(shí)至今日,甚至連JavaScript都能寫出單元測(cè)試了。
2.知道如何使用可重復(fù)的自動(dòng)化工具來(lái)構(gòu)建系統(tǒng)、測(cè)試、撰寫文檔以及按需部署。
3.系統(tǒng)的安全意識(shí)非常重要,要知道,開(kāi)發(fā)堆棧中的每一層都可能存在薄弱環(huán)節(jié)。
我這邊有一份Java全棧工程師學(xué)習(xí)路線圖分享給大家
總結(jié)
將代碼與某個(gè)特定的實(shí)現(xiàn)(無(wú)論是軟件庫(kù),操作系統(tǒng),硬件,等等)緊綁在一起并不是好的實(shí)踐。全棧工程師雖然學(xué)術(shù)淵博,但不意味著他們能抄捷徑,除非他們是在開(kāi)發(fā)一個(gè)建完即扔的一次性原型。
技術(shù)型的創(chuàng)業(yè)企業(yè)在初期為了滿足靈活性,對(duì)全棧工程師的需求比較大,但是,隨著企業(yè)的成熟,會(huì)需要越來(lái)越多的專業(yè)型人才。
要成為一名Java全棧工程師,至少要使用過(guò)多種編程語(yǔ)言在各種領(lǐng)域的不同平臺(tái)工作多年。全棧工程師除了像“高級(jí)工程師”那樣要掌握多門編程語(yǔ)言, 還必須具有更高的視野將所有的模塊聯(lián)系起來(lái)。值得注意的是,在以上列表中,僅有3——5項(xiàng)是與編碼有關(guān)的。
如果你想學(xué)習(xí)Java全棧技術(shù)或者想往Java全棧工程師方面發(fā)展可以來(lái)找動(dòng)力節(jié)點(diǎn)java學(xué)院。你想拿高薪的,想學(xué)習(xí)的,想就業(yè)前景好的,想跟別人競(jìng)爭(zhēng)能取得優(yōu)勢(shì)的,那就來(lái)動(dòng)力節(jié)點(diǎn)java學(xué)院吧,這里隨時(shí)歡迎您。有任何問(wèn)題可以在線咨詢,有專業(yè)老師為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743