Java全棧工程師需要掌握哪些技術
最近網上在熱烈討論一則傳聞,說Facebook在招聘所謂的“全棧工程師”(Full Stack Engineer),要求應徵者對開發堆疊的每個方面都有所掌握。那究竟何為 “全棧工程師”呢?從字面上來理解,全棧工程師必須熟悉開發堆疊的每一個層次,或者至少熟悉絕大多數並且對所有的軟體技術有天生的熱情和興趣。
對於這樣的開發者,他們非常擅長使用掌握的技術讓自己的生活變得輕鬆,這也正是為什麼Facebook會希望僱傭他們,他們用自己的腦子與熱情編碼, 好的產品也自然能在最短的時間呈現。那麼,具體而言,一個合格的“全棧工程師”要具備哪些素質呢?
開發堆疊剖析
1.伺服器,網路以及宿主環境
需要理解哪些模組可能失效以及為什麼,而不能理所當然地認為,只要不斷增加資源就能解決所有問題。
知道如何運用作業系統、雲端儲存、網路資源,並能理解資料冗餘以及可用性是必需的。
瞭解應用的規模是如何對硬體造成限制的。
還有多執行緒和競態條件,這些概念在開發機上往往不會遇到,但是他們在現實的部署環境中卻無處不在。
全棧工程師還必須要能夠與Devops很好地協作。他們所設計的系統應該提供有用的錯誤訊息和日 志能力,這樣DevOps就能夠及時獲得這些資訊,並採取有價值的行動。
2.資料建模
如果資料模型存在缺陷,那麼就常常需要在業務邏輯和更高的層面上使用醜陋的程式碼來彌補那些資料模型沒辦法覆蓋的死角。
知道如何建立合理的正規化關係模型,具備完善的外來鍵、索引、檢視、查詢表等等。
還要熟悉非關係型資料的儲存,知道非關係型資料庫在哪些方面超越關係型資料庫。
3.業務邏輯
這是系統應用價值的關鍵所在。
掌握SOLID設計能力(單一職責,開放且封閉,Liskov替代性,介面分離,依賴注入)。
熟悉一些常用的框架。
API/Action/MVC
這些關乎外部世界如何與業務邏輯及資料模型互動。
會使用到大量的框架。
有能力寫出清晰、一致、使用簡單的介面。
4.使用者介面
全棧工程師需要:a)懂得如何構建易讀的佈局;b)能意識到藝術家和圖形設計師的作用。總之,實現一套好的視覺設計方案尤為關鍵。
熟練掌握HTML5/CSS。
從目前的趨勢來看,JavaScript將會是明日之星,最近這一領域碩果累累(NodeJs, backbone, knockout, Angular(自己的加的, 原文沒有))。因此,掌握JavaScript必不可少。
5.使用者體驗
全棧工程師應該意識到:使用者僅僅是希望一切運轉良好。
一個好的系統是不會讓使用者得腕管綜合徵或產生眼疲勞的。全棧工程師能審視全域性,可以將一個需要8次點選+3個步驟的過程,簡化為僅需要一次點選。
知道如何向使用者提示錯誤資訊。如果出現故障,真誠道歉。有時一些無意的錯誤資訊,會讓使用者感到莫名奇妙。
理解使用者和市場需求
這層關係到系統架構,但也絕不是一個不能碰的角色(有可能翻譯有誤,原文:but that is too much of a hands off role)。
全棧工程師要領悟客戶使用軟體過程中會需要些什麼以及整個市場需要些什麼。
其他方面
1.能寫出高質量的單元測試,時至今日,甚至連JavaScript都能寫出單元測試了。
2.知道如何使用可重複的自動化工具來構建系統、測試、撰寫文件以及按需部署。
3.系統的安全意識非常重要,要知道,開發堆疊中的每一層都可能存在薄弱環節。
我這邊有一份Java全棧工程師學習路線圖分享給大家
總結
將程式碼與某個特定的實現(無論是軟體庫,作業系統,硬體,等等)緊綁在一起並不是好的實踐。全棧工程師雖然學術淵博,但不意味著他們能抄 捷徑,除非他們是在開發一個建完即扔的一次性原型。
技術型的創業企業在初期為了滿足靈活性,對全棧工程師的需求比較大,但是,隨著企業的成熟,會需要越來越多的專業型人才。
要成為一名Java全棧工程師,至少要使用過多種程式語言在各種領域的不同平臺工作多年。全棧工程師除了像“高階工程師”那樣要掌握多門程式語言, 還必須具有更高的視野將所有的模組聯絡起來。值得注意的是,在以上列表中,僅有3——5項是與編碼有關的。
如果你想學習Java全棧技術或者想往Java全棧工程師方面發展可以來找我。而現在我就有一個平臺可以提供給你們學習,你想拿高薪的,想學習的,想就業前景好的,想跟別人競爭能取得優勢的,想進阿里面試但擔心面試不過的,你都可以來,群號為:
相關文章
- Java開發需要掌握哪些技術?Java程式設計師必備技能Java程式設計師
- 搞大資料,Java 工程師需要掌握哪些知識?大資料Java工程師
- 全棧工程師技術學習路線圖全棧工程師
- 作為一名前端工程師,你需要學習哪些技術棧呢?前端工程師
- 大資料工程師需要學習哪些技術?大資料工程師
- 做大資料工程師需要掌握哪些技能呢?大資料工程師
- 嵌入式需要掌握哪些技術?
- java高階工程師必備技術棧-由淺入深掌握Shiro許可權框架Java工程師框架
- Web前端技術分享:全棧工程師常用的開發工具Web前端全棧工程師
- linux網路工程師需要掌握哪些技能?linux網路工程師技能分析Linux工程師
- 2020年Java程式設計師需要哪些技術Java程式設計師
- 後端開發者需要掌握的技術棧後端
- 成為一名合格的Java工程師,需要掌握哪些基本知識Java工程師
- java全棧工程師:從java後端到全棧,高階電商全棧系統大課Java全棧工程師後端
- 成為Java全棧工程師的步驟Java全棧工程師
- 高階軟體測試工程師,需要掌握哪些技能工程師
- 新時代的網路工程師需要掌握哪些技能工程師
- Java全棧工程師未來發展前景如何?Java全棧工程師
- Java程式設計師技術培訓需要培訓哪些?Java程式設計師
- 學習軟體測試需要掌握哪些技術?
- 你想當全棧工程師嗎?全棧工程師
- Linux運維工程師需要掌握哪些知識?Linux入門教程Linux運維工程師
- 做Java開發需要哪些技術?Java
- [ 招聘 | 上海 ] 軟體工程師 / 全棧工程師 / 晶片設計工程師軟體工程工程師全棧晶片
- 雲端計算人才技術要求現狀:入行需要掌握哪些技術?
- 2024年的雲原生架構需要哪些技術棧架構
- 【引向】全棧開發工程師之路全棧工程師
- 全棧工程師學習路線全棧工程師
- 要不要做全棧工程師全棧工程師
- 轉行Java需要掌握哪些技能?Java
- 轉:成為Java高階程式設計師需要掌握哪些?Java程式設計師
- 全棧工程師和架構師的區別全棧工程師架構
- 【杭州】【兼職】全棧開發工程師全棧工程師
- 2019年如何成為全棧工程師?全棧工程師
- 快速創業之全棧技術棧創業全棧
- 怎麼做一名高薪前端工程師 需要必備哪些技術和工具高薪前端工程師
- 華瑞IT學校:優秀Java工程師需要掌握八大技能Java工程師
- 運維工程師需要掌握的7大武器運維工程師
- 零基礎轉行學Web前端,需要掌握哪些技術?Web前端