企業(內部)培訓

1. 功能需求

工程師如何挖掘領域技術需求,並轉化為架構。

  • 分析與理解架構需求是否重視 Concurrency ? Latency ? Throughput ?

  • 分析與理解架構需求如何受限 CPU ? Memory ? Storage/IO ? Bandwidth ?

  • 分析與理解架構需求數據場景 OLTP ? OLAP ? Big Data ?

  • 其它。

以上皆會可能影響程式語言、函式庫、網頁框架、資料庫及人員的選用。


2. 非功能需求

2-1. 法律遵循。

  • 為何工程師需要瞭解法律?法律如何影響軟體架構?

  • 創業家 / CTO / 架構架構師必須懂的軟體相關法律。

  • 接案 / 外包工程師必須懂的軟體相關法律。

  • 其它。

2-2. 安全性。

  • 你真的瞭解 Cookie 和 Session 嗎?一個很多資深工程師自以為懂的問題。

  • Prepared statement 真能有效防止 SQL injection 嗎?

  • XSS / CSRF 是什麼?如何有效防止類似的攻擊?

  • 你真的瞭解各種 DDoS 的攻擊嗎?如何有效防範?給軟體架構的省思為何?

  • 透視網頁常見安全風險:一趟用戶註冊 / 登入流程可能引發的安全之旅。

  • 其它。

2-3. 維護性。

  • 分析與理解 KISS / YAGNI / SOLID / DRY,並探討可能引發的副作用。

  • Defensive Programming 不如 Offensive Programming 嗎?探討那些未思考之處。

  • 程式碼註解要或不要?不要好嗎?要的話,準則為何?

  • API 設計準則,什麼是好的 API?

  • Pair programming 的優點與缺點。

  • Code review 的優點與缺點。

  • 其它。

2-4. 可用性。

  • 如何在軟體設計層面設計出高可用性?

  • 如何在軟體架構層面設計出高可用性?

  • 其它。

2-5. 擴展性。

  • 每個軟體工程師必須懂的分布式理論。

  • 如何在軟體設計層面設計出擴展性?

  • 如何在軟體架構層面設計出擴展性?

  • 其它。

2-6. 效能。

  • 分析與理解常見的效能 trade-off,你該用什麼交換。

  • 每個軟體工程師必須懂的 Concurrency 與 Parallelism。

  • 每個軟體工程師必須懂的 Garbage Collection。

  • 簡單幾招讓你快速深入理解 C / C++ / Rust / Python / PHP / Ruby / Java / Scala / Golang / Erlang / C# 底層差異。

  • 如何增進程式效能?

  • 如何增進作業系統效能?Linux 作業系統如何對應不同場景的最佳化。

  • 資料庫效能增進方法?資料庫設計如何對應不同場景的最佳化。

  • 其它。

2-7. 敏捷。

  • 分析與理解 Scrum / Kanban,並探討常見的失敗原因。

  • 組織真的適合敏捷嗎?很多敏捷團隊成員不了解系統邊界,或以為敏捷不需要文件,而這通常是危險警號。

  • 其它。


3. 約束

  • 如何分析與理解時間與預算約束。

  • 如何分析與理解技術約束。平台、程式語言、框架與法律等。

  • 如何分析與理解組織約束。

  • 其它。


4. 原則

  • Coding Style 該如何定?

  • 架構如何分層?資料庫不夠快時,加上 Cache 層真的好嗎?

  • 其它。