工程師被分為三個主要等級:
初級工程師:
- 教育背景為大學或碩士,或者有不到2年的全職軟體開發工作經驗。
- 具備一些相關知識或經驗,需要其他團隊成員的幫助。
- 能夠獨立開發部分網頁功能,但無法完整開發整個應用程式。
- 在開發項目中與資深工程師合作,學習並研究新技術。
須具備:
具備基本的 Linux 系統操作知識。
了解基礎的演算法和資料結構概念。
熟悉物件導向設計,了解 SOLID 設計原則。
掌握基本的 PHP 程式開發,並遵守 PSR-12 程式碼風格規範。
熟悉版本控制工具如 Git,並能與團隊協作。
具備基本的 Laravel 或 Symfony 等框架開發經驗。
能夠寫單元測試,並理解 RESTful API 設計原則。
掌握基本的資料庫設計與 SQL 語句撰寫。
了解簡單的資安防禦概念,如 SQL Injection、XSS 等。
有 CI/CD 相關工具的基本了解與應用。
理解基本的 HTTP 與 Websocket 通訊協議。
資深工程師:
- 擁有至少2年相關的全職軟體開發工作經驗。
- 能夠獨立完成分配的技術工程,並執行全端產品的開發。
- 協助初級工程師解決問題,並協助首席工程師完成開發。
- 有權選擇自己想要開發的項目和合作團隊。
須具備:
擁有深入的 Linux 系統操作知識。
熟練掌握演算法和資料結構,並在系統設計中應用。
精通各種設計模式的應用。
掌握多種後端語言,並深入理解 PHP 的高階語言特性。
深入理解 PHP 執行流程與原理,以及非同步與併發編程。
具備 Laravel 或其他框架的深入開發經驗,理解框架核心與設計模式。
熟悉 OSI Model,以及 TCP/UDP 協議的深入認識。
深入理解 Cache 與 Queue 的使用與優化。
對資料庫有深入理解,包括性能優化、事務處理、索引設計等。
熟悉並能解決並發編程中的競態條件與鎖機制。
在微服務架構中具有豐富的實踐經驗,能處理大流量請求。
首席工程師:
- 團隊中最專業的工程師,負責推動新科技、技術、設計與工具。
- 能夠快速且完整地執行全端整個產品的開發。
- 負責設計並執行開發計劃,分配團隊工作,並保持開發進度。
- 幫助團隊其他工程師完成開發項目,並制定公司科技使用的方向、策略和團隊架構。
須具備:
深入了解 Linux 系統的底層設計原理,包括核心模組運作、Process 的 Context Switch、I/O Models 演化等。
能夠選用最合適的資料結構與演算法來解決複雜的商業邏輯與技術問題。
除了熟悉既有的 Design Pattern 外,也能識別並避免使用 Anti-Pattern。
對PHP 的底層有深刻的認識,包括效能提升原因、記憶體管理策略等。
深入理解 Laravel 框架底層實作,能夠深度調整與整合框架流程與元件。
精通除 PHP 外的其他語言,並能比較其特性與底層實作。
在 Redis 使用上有更深入的底層知識掌握,包括 Transaction 機制、Storage Persistency 策略等。
對資料庫有深入的底層知識,包括索引選擇、排序演算法、事務處理等。
能夠隨時調整與設計符合商業情境的系統架構,並研究並導入新技術或系統架構。