最近網(wǎng)上在熱烈討論一則傳聞,說Facebook在招聘所謂的“全棧工程師”(Full Stack Engineer),要求應征者對開發(fā)堆棧的每個方面都有所掌握。那究竟何為 “全棧工程師”呢?從字面上來理解,全棧工程師必須熟悉開發(fā)堆棧的每一個層次,或者至少熟悉絕大多數(shù)并且對所有的軟件技術有天生的熱情和興趣。
對于這樣的開發(fā)者,他們非常擅長使用掌握的技術讓自己的生活變得輕松,這也正是為什么Facebook會希望雇傭他們,他們用自己的腦子與熱情編碼, 好的產品也自然能在最短的時間呈現(xiàn)。那么,具體而言,一個合格的“全棧工程師”要具備哪些素質呢?
開發(fā)堆棧剖析
服務器,網(wǎng)絡以及宿主環(huán)境
需要理解哪些模塊可能失效以及為什么,而不能理所當然地認為,只要不斷增加資源就能解決所有問題。
知道如何運用操作系統(tǒng)、云存儲、網(wǎng)絡資源,并能理解數(shù)據(jù)冗余以及可用性是必需的。
了解應用的規(guī)模是如何對硬件造成限制的。
還有多線程和競態(tài)條件,這些概念在開發(fā)機上往往不會遇到,但是他們在現(xiàn)實的部署環(huán)境中卻無處不在。
全棧工程師還必須要能夠與DevOps很好地協(xié)作。他們所設計的系統(tǒng)應該提供有用的錯誤消息和日 志能力,這樣DevOps就能夠及時獲得這些信息,并采取有價值的行動。
數(shù)據(jù)建模
如果數(shù)據(jù)模型存在缺陷,那么就常常需要在業(yè)務邏輯和更高的層面上使用丑陋的代碼來彌補那些數(shù)據(jù)模型沒辦法覆蓋的死角。
知道如何建立合理的范式關系模型,具備完善的外鍵、索引、視圖、查詢表等等。
還要熟悉非關系型數(shù)據(jù)的存儲,知道非關系型數(shù)據(jù)庫在哪些方面超越關系型數(shù)據(jù)庫。
業(yè)務邏輯
這是系統(tǒng)應用價值的關鍵所在。
掌握SOLID設計能力(單一職責,開放且封閉,Liskov替代性,接口分離,依賴注入)。
熟悉一些常用的框架。
API/Action/MVC
這些關乎外部世界如何與業(yè)務邏輯及數(shù)據(jù)模型交互。
會使用到大量的框架。
有能力寫出清晰、一致、使用簡單的接口。
用戶界面
全棧工程師需要:a)懂得如何構建易讀的布局;b)能意識到藝術家和圖形設計師的作用。總之,實現(xiàn)一套好的視覺設計方案尤為關鍵。
熟練掌握HTML5/CSS。
從目前的趨勢來看,JavaScript將會是明日之星,最近這一領域碩果累累(NodeJs, backbone, knockout, Angular(自己的加的, 原文沒有))。因此,掌握JavaScript必不可少。
用戶體驗
全棧工程師應該意識到:用戶僅僅是希望一切運轉良好。
一個好的系統(tǒng)是不會讓用戶得腕管綜合征或產生眼疲勞的。全棧工程師能審視全局,可以將一個需要8次點擊+3個步驟的過程,簡化為僅需要一次點擊。
知道如何向用戶提示錯誤信息。如果出現(xiàn)故障,真誠道歉。有時一些無意的錯誤信息,會讓用戶感到莫名奇妙。
理解用戶和市場需求
這層關系到系統(tǒng)架構,但也絕不是一個不能碰的角色(有可能翻譯有誤,原文:but that is too much of a hands off role)。
全棧工程師要領悟客戶使用軟件過程中會需要些什么以及整個市場需要些什么。
其他方面
能寫出高質量的單元測試,時至今日,甚至連JavaScript都能寫出單元測試了。
知道如何使用可重復的自動化工具來構建系統(tǒng)、測試、撰寫文檔以及按需部署。
系統(tǒng)的安全意識非常重要,要知道,開發(fā)堆棧中的每一層都可能存在薄弱環(huán)節(jié)。
總結
將代碼與某個特定的實現(xiàn)(無論是軟件庫,操作系統(tǒng),硬件,等等)緊綁在一起并不是好的實踐。全棧工程師雖然學術淵博,但不意味著他們能抄 捷徑,除非他們是在開發(fā)一個建完即扔的一次性原型。
技術型的創(chuàng)業(yè)企業(yè)在初期為了滿足靈活性,對全棧工程師的需求比較大,但是,隨著企業(yè)的成熟,會需要越來越多的專業(yè)型人才。
要成為一名全棧工程師,至少要使用過多種編程語言在各種領域的不同平臺工作多年。全棧工程師除了像“高級工程師”那樣要掌握多門編程語言, 還必須具有更高的視野將所有的模塊聯(lián)系起來。值得注意的是,在以上列表中,僅有3——5項是與編碼有關的。
-
工程師
+關注
關注
59文章
1603瀏覽量
71033 -
Facebook
+關注
關注
3文章
1432瀏覽量
58933
發(fā)布評論請先 登錄
電子工程師設計要點與經(jīng)驗分享
什么是BSP工程師
電子工程師設計要點與經(jīng)驗分享
大普技術田學紅榮獲2025年東莞市優(yōu)秀工程師稱號
作為一名PCB質檢工程師,我為什么在用手持式面銅測試儀?
硬件工程師看了只會找個角落默默哭泣#硬件工程師 #MDD #MDD辰達半導體 #產品經(jīng)理 #軟件工程師
一個優(yōu)秀的射頻測試工程師需要具備哪些技能?
如何成為一名合格的KaihongOS南向驅動開發(fā)工程師
如何成為一名合格的KaihongOS北向應用開發(fā)工程師
如何成為一名嵌入式軟件工程師?
一名優(yōu)秀的全棧工程師應當具備哪些素質?
評論