全棧工程師源于Facebook,是指能在任何能在一個技術棧的任何層次完成工作的工程師。
- 知道計算機操作系統的基本運行原理
- 知道如何操作數據庫
- 用一種語言寫后端的 API 代碼
- 前端合適的技術可以實現業務邏輯
- 工程管理,包括不限于需求分析、敏捷開發、文檔管理等等
這種說法最開始源于 Facebook,“Nothing at Facebook is Somebody Else’s Problem”,換句話說,有問題就馬上評估是否值得解決。如果值得解決,你就應該著手去解決,而不是假設別人比你更合適解決這個問題。
舉個例子,你原本是一個后端工程師,在做響應時間的調優,初期后端上改進很大,后期效果已經不明顯,但是你發現網絡傳輸和前端有很大空間。假設現在前端的工程師對這兩塊也不是很了解,這個時候怎么辦?
- 順其自然,不了了之。
- 從外面招一個會的工程師。
- 自己學相關知識然后直接去調整。
Facebook 之所以選擇第三種,有這么幾點理由:
- 本身的挑戰已經非常大了,極大的用戶量帶來極大的問題,很難從市面上直接找一個能解決問題的人。
- 如果解決掉新發現的一個問題大于手里正在做的事情,哪怕它不是自己擅長的,也應該自己去把它做好。
- 真正高素質的人不僅僅是掌握知識,而是擁有學習知識的知識,也就是學習能力。有了學習能力,具體的知識總能學會。
- 每個技術都有自己的背景和優勢劣勢。有時候強行規定使用的技術反而會限制大家的產出。倒不如根據需求去選擇合適的技術。
- 關注整個公司的產出和效率。大部分提升效率的地方往往來源于別人沒有思考過的問題,不如誰發現,誰解決。