什么是全棧開發者

jopen 10年前發布 | 11K 次閱讀 程序員

純粹基于道德而掌握開發堆棧的每一方面的預期是合理的嗎?可能不是,但非死book這樣要求。一個非死book的員工在OSCON告訴我,非死book只雇傭全棧開發者。那么全棧開發者是什么意思呢?

對我來說全棧開發者是對每一層都熟悉的人,如果不真正對所有的軟件技術感興趣不會對它們精通。

好的開發者熟悉整個堆棧,他們是知道如何使生活周邊的事更容易的人。這就是為什么在辦公室我如此反對偏執的原因,當然,政治及溝通挑戰在大型組織中還是按固有的套路。我認為非死book所持有的招聘政策是:如果聰明的人用腦用心,就能在更短的時間內構件更好的產品。

全棧的層:

1.服務器、網絡和服務器環境

  1. 知道哪里可能崩了和為什么會崩,沒有什么是理所當然的。

  2. 適當的使用文件系統,云存儲、網絡資源,必須具備數據冗余和可用性的概念。

  3. 知道應用的伸縮性對硬件的需求。

  4. 什么是多線程和競爭條件?想想看,在開發機上你可能看不到這些,但是現實環境中它們就是會發生。

  5. 全棧coder還要能與運維并肩作戰。提供有價值的錯誤信息和日志。確保它們是可靠的,因為運維會在你之前看到這些東西。(原文為DevOps

2.數據建模

  1. 如果數據模型有缺陷,業務邏輯和上層邏輯就要用奇怪的代碼(很丑)來彌補數據模型的缺陷。

  2. 全棧開發者要能夠建立合理的、標準的關系模型,包括外鍵、索引、視圖、查找表等。

  3. 全棧開發者要熟悉非關系型數據存儲(應該指的不止是NoSQL),并且知道它們相對關系型存儲優勢所在。

3,業務邏輯

  1. 應用提供的核心價值。

  2. 可靠的面向對象技能。

  3. 可能會用到的框架。

4,API層、Action 層、MVC

  1. 理解外部對數據模型和業務邏輯的操作。

  2. 該層會有很多框架應用。

  3. 全棧開發者要具備編寫清晰、一致和易用的接口。過高的復雜度讓人厭惡。

5,UI

  1. 全棧coder:a)知道如何創建可讀的頁面布局;b)或者明白自己需要幫助設計師。A或B,關鍵是要能有好的視覺設計。

  2. 掌握HTML5和CSS。

  3. JS正在逐步成為語言新銳,Javascript的世界里已經完成了很多激動人心的工作(node, backbone, knockout...)。

6.用戶體驗

  1. 全棧coder要知道用戶需要的就是It works!

  2. 一個好的系統不會廢了用戶的手腕和眼睛。一個全棧coder會發現和審視需要8次點擊、3步操作的流程,并最終把它一鍵搞定。

  3. 提供有價值的錯誤信息。如果崩潰了,就要向用戶致歉。有時候程序員會寫出讓用戶自我感覺很二的錯誤信息。

7.知道用戶和業務到底要什么
  1. 現在我們模糊了架構的界限,但卻可能遠離了實際需求。

  2. 全棧coder要明確知道用戶使用軟件時的場景,而且要領會業務。

關于這個問題的其它方面:

  1. 編寫高質量的單元測試能力。順便說一下現如今連JS也可以做單元測試了。

  2. 持續集成。發掘程序構建中重復、可自動化的流程,在一定程度上自動完成測試、文檔和部署。

  3. 對安全性的敏感,不同的層都可能有自己的脆弱點。

最后:

應用嚴重依賴一個特定的第三方實現(lib、系統、硬件等)是非常糟糕的實踐。全棧開發者要知道了解全面不代表就可以走捷徑。當然在拋棄原型法中,他們可以這么干。

在技術起步時很需要全棧開發者的多面技能。然而,在團隊定型后,會越來越需要專注技能。

我不覺得在具備了多語言、多平臺甚至跨行業的職業生涯之前,你可以稱自己為全棧開發者。全棧遠超“高級工程師”,它更接近是多語言的開發者并且能在更高的角度看到之間的關聯。注意在我的列表中只有3-5項涉及到編碼。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!