全棧開發者

純粹基於道德而掌握開發堆棧的每一方面的預期是合理的嗎?可能不是,但Facebook這樣要求。一個Facebook的員工在OSCON告訴我,Facebook只僱傭全棧開發者。那麼全棧開發者是什麼意思呢? 對我來講全棧開發者是對每一層都熟悉的人,若是不真正對全部的軟件技術感興趣不會對它們精通。 好的開發者熟悉整個堆棧,他們是知道如何使生活周邊的事更容易的人。這就是爲何在辦公室我如此反對偏執的緣由,固然,政治及溝通挑戰在大型組織中仍是按固有的套路。我認爲Facebook所持有的招聘政策是:若是聰明的人用腦用心,就能在更短的時間內構件更好的產品。node


全棧的層:

一、服務器、網絡和服務器環境程序員

  1. 知道哪裏可能崩了和爲何會崩,沒有什麼是理所固然的。
  2. 適當的使用文件系統,雲存儲、網絡資源,必須具有數據冗餘和可用性的概念。
  3. 知道應用的伸縮性對硬件的需求。
  4. 什麼是多線程和競爭條件?想一想看,在開發機上你可能看不到這些,可是現實環境中它們就是會發生。
  5. 全棧coder還要能與運維並肩做戰。提供有價值的錯誤信息和日誌。確保它們是可靠的,由於運維會在你以前看到這些東西。(原文爲DevOps

二、數據建模安全

  1. 若是數據模型有缺陷,業務邏輯和上層邏輯就要用奇怪的代碼(很醜)來彌補數據模型的缺陷。
  2. 全棧開發者要可以創建合理的、標準的關係模型,包括外鍵、索引、視圖、查找表等。
  3. 全棧開發者要熟悉非關係型數據存儲(應該指的不止是NoSQL),而且知道它們相對關係型存儲優點所在。

三、業務邏輯服務器

  1. 應用提供的核心價值。
  2. 可靠的面向對象技能。
  3. 可能會用到的框架。

四、API層、Action 層、MVC網絡

  1. 理解外部對數據模型和業務邏輯的操做。
  2. 該層會有不少框架應用。
  3. 全棧開發者要具有編寫清晰、一致和易用的接口。太高的複雜度讓人厭惡。

五、UI多線程

  1. 全棧coder:a)知道如何建立可讀的頁面佈局;b)或者明白本身須要幫助設計師。A或B,關鍵是要能有好的視覺設計。
  2. 掌握HTML5和CSS。
  3. JS正在逐步成爲語言新銳,Javascript的世界裏已經完成了不少激動人心的工做(node, backbone, knockout...)。

六、用戶體驗架構

  1. 全棧coder要知道用戶須要的就是It works!
  2. 一個好的系統不會廢了用戶的手腕和眼睛。一個全棧coder會發現和審視須要8次點擊、3步操做的流程,並最終把它一鍵搞定。
  3. 提供有價值的錯誤信息。若是崩潰了,就要向用戶致歉。有時候程序員會寫出讓用戶自我感受很二的錯誤信息。

7.知道用戶和業務到底要什麼框架

  1. 如今咱們模糊了架構的界限,但卻可能遠離了實際需求。
  2. 全棧coder要明確知道用戶使用軟件時的場景,並且要領會業務。

關於這個問題的其它方面:運維

  1. 編寫高質量的單元測試能力。順便說一下現現在連JS也能夠作單元測試了。
  2. 持續集成。發掘程序構建中重複、可自動化的流程,在必定程度上自動完成測試、文檔和部署。
  3. 對安全性的敏感,不一樣的層均可能有本身的脆弱點。

最後: 應用嚴重依賴一個特定的第三方實現(lib、系統、硬件等)是很是糟糕的實踐。全棧開發者要知道了解全面不表明就能夠走捷徑。固然在拋棄原型法中,他們能夠這麼幹。 在技術起步時很須要全棧開發者的多面技能。然而,在團隊定型後,會愈來愈須要專一技能。 我不以爲在具有了多語言、多平臺甚至跨行業的職業生涯以前,你能夠稱本身爲全棧開發者。全棧遠超「高級工程師」,它更接近是多語言的開發者而且能在更高的角度看到之間的關聯。注意在個人列表中只有3-5項涉及到編碼。佈局


翻譯原文:什麼是全棧開發者 英文原文:What is a Full Stack developer?
相關文章
相關標籤/搜索