Page cover image

System Design, Actually

Understanding the essence of System Design, and how you could learn it systematically.

Introduction

在經歷過 2023 ~ 2024 的 Tech Layoff,現今軟體就業市場的 要求變的十分的高

而 System Design Interview (系統設計面試),由於他能涵蓋的深度與廣度十分充足,也逐漸成為公認能鑑定 senior engineer 的標準。

However

在此篇文章,筆者會試著探討對於現今 Jr/New Grad 「System Design 學習障礙」 的觀察,網路上的學習資源有哪些優劣。

最後,提出一個幾個筆者認為能讓學習 system design 事半功倍的 mindset,並希望最終能說服你 System Design 就等同 Problem Solving,和 之所以 System Design 會難,是因為多數人都沒把 Problem Solving 學好

System Design Interview Propaganda

作為 Jr, New Grad, or 想增進架構能力的人,初次會接觸的教材諸如:

但當讀者試著參考、依賴以上的素材去學時,多少會發現一些怪味道 (待會會提到)

我們採用 System Design Interview: A Step-By-Step Guide 的幾個敘述,來試著傳達問題在哪:

For system design interviews, we suggest focusing on scale and performance

These non-functional requirements are what make our design unique and challenging

For example, designing a Twitter clone to support a few hundred user is easy

The more senior the role is, the more important it is for us to demonstrate our ability to handle to non-functional requirements

在琢磨這些資源的陳述方式後,會發現包含了以下的主旋律

相對於上列的套路。筆者認為以下的哲學,才是實務和學習時,看待系統設計比較實際的方式:

Interview-Style System Design, 會帶來什麼問題?

❌ 選擇追求 Grand Design

❌ 忽略功能性需求 (functional requirement)

❌ 忽略 Profiling 與 Benchmarking

結語:如何克服 「System Design 學習障礙」

在此文中,描述了網路上的 System Design 學習資源,以及常見的 認知誤區 會如何讓 System Design 的學習事倍功半。

而克服 System Design 這門知識混亂的學問,筆者認為可以從兩個方向進行主題式的學習。

Software Architecture

System Programming

Last updated