@shaykec/bridge 0.4.24 → 0.4.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/journeys/ai-engineer.yaml +34 -0
  2. package/journeys/backend-developer.yaml +36 -0
  3. package/journeys/business-analyst.yaml +37 -0
  4. package/journeys/devops-engineer.yaml +37 -0
  5. package/journeys/engineering-manager.yaml +44 -0
  6. package/journeys/frontend-developer.yaml +41 -0
  7. package/journeys/fullstack-developer.yaml +49 -0
  8. package/journeys/mobile-developer.yaml +42 -0
  9. package/journeys/product-manager.yaml +35 -0
  10. package/journeys/qa-engineer.yaml +37 -0
  11. package/journeys/ux-designer.yaml +43 -0
  12. package/modules/README.md +52 -0
  13. package/modules/accessibility-fundamentals/content.md +126 -0
  14. package/modules/accessibility-fundamentals/exercises.md +88 -0
  15. package/modules/accessibility-fundamentals/module.yaml +43 -0
  16. package/modules/accessibility-fundamentals/quick-ref.md +71 -0
  17. package/modules/accessibility-fundamentals/quiz.md +100 -0
  18. package/modules/accessibility-fundamentals/resources.md +29 -0
  19. package/modules/accessibility-fundamentals/walkthrough.md +80 -0
  20. package/modules/adr-writing/content.md +121 -0
  21. package/modules/adr-writing/exercises.md +81 -0
  22. package/modules/adr-writing/module.yaml +41 -0
  23. package/modules/adr-writing/quick-ref.md +57 -0
  24. package/modules/adr-writing/quiz.md +73 -0
  25. package/modules/adr-writing/resources.md +29 -0
  26. package/modules/adr-writing/walkthrough.md +64 -0
  27. package/modules/ai-agents/content.md +120 -0
  28. package/modules/ai-agents/exercises.md +82 -0
  29. package/modules/ai-agents/module.yaml +42 -0
  30. package/modules/ai-agents/quick-ref.md +60 -0
  31. package/modules/ai-agents/quiz.md +103 -0
  32. package/modules/ai-agents/resources.md +30 -0
  33. package/modules/ai-agents/walkthrough.md +85 -0
  34. package/modules/ai-assisted-research/content.md +136 -0
  35. package/modules/ai-assisted-research/exercises.md +80 -0
  36. package/modules/ai-assisted-research/module.yaml +42 -0
  37. package/modules/ai-assisted-research/quick-ref.md +67 -0
  38. package/modules/ai-assisted-research/quiz.md +73 -0
  39. package/modules/ai-assisted-research/resources.md +33 -0
  40. package/modules/ai-assisted-research/walkthrough.md +85 -0
  41. package/modules/ai-pair-programming/content.md +105 -0
  42. package/modules/ai-pair-programming/exercises.md +98 -0
  43. package/modules/ai-pair-programming/module.yaml +39 -0
  44. package/modules/ai-pair-programming/quick-ref.md +58 -0
  45. package/modules/ai-pair-programming/quiz.md +73 -0
  46. package/modules/ai-pair-programming/resources.md +34 -0
  47. package/modules/ai-pair-programming/walkthrough.md +117 -0
  48. package/modules/ai-test-generation/content.md +125 -0
  49. package/modules/ai-test-generation/exercises.md +98 -0
  50. package/modules/ai-test-generation/module.yaml +39 -0
  51. package/modules/ai-test-generation/quick-ref.md +65 -0
  52. package/modules/ai-test-generation/quiz.md +74 -0
  53. package/modules/ai-test-generation/resources.md +41 -0
  54. package/modules/ai-test-generation/walkthrough.md +100 -0
  55. package/modules/api-design/content.md +189 -0
  56. package/modules/api-design/exercises.md +84 -0
  57. package/modules/api-design/game.yaml +113 -0
  58. package/modules/api-design/module.yaml +45 -0
  59. package/modules/api-design/quick-ref.md +73 -0
  60. package/modules/api-design/quiz.md +100 -0
  61. package/modules/api-design/resources.md +55 -0
  62. package/modules/api-design/walkthrough.md +88 -0
  63. package/modules/clean-code/content.md +136 -0
  64. package/modules/clean-code/exercises.md +137 -0
  65. package/modules/clean-code/game.yaml +172 -0
  66. package/modules/clean-code/module.yaml +44 -0
  67. package/modules/clean-code/quick-ref.md +44 -0
  68. package/modules/clean-code/quiz.md +105 -0
  69. package/modules/clean-code/resources.md +40 -0
  70. package/modules/clean-code/walkthrough.md +78 -0
  71. package/modules/clean-code/workshop.yaml +149 -0
  72. package/modules/code-review/content.md +130 -0
  73. package/modules/code-review/exercises.md +95 -0
  74. package/modules/code-review/game.yaml +83 -0
  75. package/modules/code-review/module.yaml +42 -0
  76. package/modules/code-review/quick-ref.md +77 -0
  77. package/modules/code-review/quiz.md +105 -0
  78. package/modules/code-review/resources.md +40 -0
  79. package/modules/code-review/walkthrough.md +106 -0
  80. package/modules/daily-workflow/content.md +81 -0
  81. package/modules/daily-workflow/exercises.md +50 -0
  82. package/modules/daily-workflow/module.yaml +33 -0
  83. package/modules/daily-workflow/quick-ref.md +37 -0
  84. package/modules/daily-workflow/quiz.md +65 -0
  85. package/modules/daily-workflow/resources.md +38 -0
  86. package/modules/daily-workflow/walkthrough.md +83 -0
  87. package/modules/debugging-systematically/content.md +139 -0
  88. package/modules/debugging-systematically/exercises.md +91 -0
  89. package/modules/debugging-systematically/module.yaml +46 -0
  90. package/modules/debugging-systematically/quick-ref.md +59 -0
  91. package/modules/debugging-systematically/quiz.md +105 -0
  92. package/modules/debugging-systematically/resources.md +42 -0
  93. package/modules/debugging-systematically/walkthrough.md +84 -0
  94. package/modules/debugging-systematically/workshop.yaml +127 -0
  95. package/modules/demo-test/content.md +68 -0
  96. package/modules/demo-test/exercises.md +28 -0
  97. package/modules/demo-test/game.yaml +171 -0
  98. package/modules/demo-test/module.yaml +41 -0
  99. package/modules/demo-test/quick-ref.md +54 -0
  100. package/modules/demo-test/quiz.md +74 -0
  101. package/modules/demo-test/resources.md +21 -0
  102. package/modules/demo-test/walkthrough.md +122 -0
  103. package/modules/demo-test/workshop.yaml +31 -0
  104. package/modules/design-critique/content.md +93 -0
  105. package/modules/design-critique/exercises.md +71 -0
  106. package/modules/design-critique/module.yaml +41 -0
  107. package/modules/design-critique/quick-ref.md +63 -0
  108. package/modules/design-critique/quiz.md +73 -0
  109. package/modules/design-critique/resources.md +27 -0
  110. package/modules/design-critique/walkthrough.md +68 -0
  111. package/modules/design-patterns/content.md +335 -0
  112. package/modules/design-patterns/exercises.md +82 -0
  113. package/modules/design-patterns/game.yaml +55 -0
  114. package/modules/design-patterns/module.yaml +45 -0
  115. package/modules/design-patterns/quick-ref.md +44 -0
  116. package/modules/design-patterns/quiz.md +101 -0
  117. package/modules/design-patterns/resources.md +40 -0
  118. package/modules/design-patterns/walkthrough.md +64 -0
  119. package/modules/exploratory-testing/content.md +133 -0
  120. package/modules/exploratory-testing/exercises.md +88 -0
  121. package/modules/exploratory-testing/module.yaml +41 -0
  122. package/modules/exploratory-testing/quick-ref.md +68 -0
  123. package/modules/exploratory-testing/quiz.md +75 -0
  124. package/modules/exploratory-testing/resources.md +39 -0
  125. package/modules/exploratory-testing/walkthrough.md +87 -0
  126. package/modules/git/content.md +128 -0
  127. package/modules/git/exercises.md +53 -0
  128. package/modules/git/game.yaml +190 -0
  129. package/modules/git/module.yaml +44 -0
  130. package/modules/git/quick-ref.md +67 -0
  131. package/modules/git/quiz.md +89 -0
  132. package/modules/git/resources.md +49 -0
  133. package/modules/git/walkthrough.md +92 -0
  134. package/modules/git/workshop.yaml +145 -0
  135. package/modules/hiring-interviews/content.md +130 -0
  136. package/modules/hiring-interviews/exercises.md +88 -0
  137. package/modules/hiring-interviews/module.yaml +41 -0
  138. package/modules/hiring-interviews/quick-ref.md +68 -0
  139. package/modules/hiring-interviews/quiz.md +73 -0
  140. package/modules/hiring-interviews/resources.md +36 -0
  141. package/modules/hiring-interviews/walkthrough.md +75 -0
  142. package/modules/hooks/content.md +97 -0
  143. package/modules/hooks/exercises.md +69 -0
  144. package/modules/hooks/module.yaml +39 -0
  145. package/modules/hooks/quick-ref.md +93 -0
  146. package/modules/hooks/quiz.md +81 -0
  147. package/modules/hooks/resources.md +34 -0
  148. package/modules/hooks/walkthrough.md +105 -0
  149. package/modules/hooks/workshop.yaml +64 -0
  150. package/modules/incident-response/content.md +124 -0
  151. package/modules/incident-response/exercises.md +82 -0
  152. package/modules/incident-response/game.yaml +132 -0
  153. package/modules/incident-response/module.yaml +45 -0
  154. package/modules/incident-response/quick-ref.md +53 -0
  155. package/modules/incident-response/quiz.md +103 -0
  156. package/modules/incident-response/resources.md +40 -0
  157. package/modules/incident-response/walkthrough.md +82 -0
  158. package/modules/llm-fundamentals/content.md +114 -0
  159. package/modules/llm-fundamentals/exercises.md +83 -0
  160. package/modules/llm-fundamentals/module.yaml +42 -0
  161. package/modules/llm-fundamentals/quick-ref.md +64 -0
  162. package/modules/llm-fundamentals/quiz.md +103 -0
  163. package/modules/llm-fundamentals/resources.md +30 -0
  164. package/modules/llm-fundamentals/walkthrough.md +91 -0
  165. package/modules/one-on-ones/content.md +133 -0
  166. package/modules/one-on-ones/exercises.md +81 -0
  167. package/modules/one-on-ones/module.yaml +44 -0
  168. package/modules/one-on-ones/quick-ref.md +67 -0
  169. package/modules/one-on-ones/quiz.md +73 -0
  170. package/modules/one-on-ones/resources.md +37 -0
  171. package/modules/one-on-ones/walkthrough.md +69 -0
  172. package/modules/package.json +9 -0
  173. package/modules/prioritization-frameworks/content.md +130 -0
  174. package/modules/prioritization-frameworks/exercises.md +93 -0
  175. package/modules/prioritization-frameworks/module.yaml +41 -0
  176. package/modules/prioritization-frameworks/quick-ref.md +77 -0
  177. package/modules/prioritization-frameworks/quiz.md +73 -0
  178. package/modules/prioritization-frameworks/resources.md +32 -0
  179. package/modules/prioritization-frameworks/walkthrough.md +69 -0
  180. package/modules/prompt-engineering/content.md +123 -0
  181. package/modules/prompt-engineering/exercises.md +82 -0
  182. package/modules/prompt-engineering/game.yaml +101 -0
  183. package/modules/prompt-engineering/module.yaml +45 -0
  184. package/modules/prompt-engineering/quick-ref.md +65 -0
  185. package/modules/prompt-engineering/quiz.md +105 -0
  186. package/modules/prompt-engineering/resources.md +36 -0
  187. package/modules/prompt-engineering/walkthrough.md +81 -0
  188. package/modules/rag-fundamentals/content.md +111 -0
  189. package/modules/rag-fundamentals/exercises.md +80 -0
  190. package/modules/rag-fundamentals/module.yaml +45 -0
  191. package/modules/rag-fundamentals/quick-ref.md +58 -0
  192. package/modules/rag-fundamentals/quiz.md +75 -0
  193. package/modules/rag-fundamentals/resources.md +34 -0
  194. package/modules/rag-fundamentals/walkthrough.md +75 -0
  195. package/modules/react-fundamentals/content.md +140 -0
  196. package/modules/react-fundamentals/exercises.md +81 -0
  197. package/modules/react-fundamentals/game.yaml +145 -0
  198. package/modules/react-fundamentals/module.yaml +45 -0
  199. package/modules/react-fundamentals/quick-ref.md +62 -0
  200. package/modules/react-fundamentals/quiz.md +106 -0
  201. package/modules/react-fundamentals/resources.md +42 -0
  202. package/modules/react-fundamentals/walkthrough.md +89 -0
  203. package/modules/react-fundamentals/workshop.yaml +112 -0
  204. package/modules/react-native-fundamentals/content.md +141 -0
  205. package/modules/react-native-fundamentals/exercises.md +79 -0
  206. package/modules/react-native-fundamentals/module.yaml +42 -0
  207. package/modules/react-native-fundamentals/quick-ref.md +60 -0
  208. package/modules/react-native-fundamentals/quiz.md +61 -0
  209. package/modules/react-native-fundamentals/resources.md +24 -0
  210. package/modules/react-native-fundamentals/walkthrough.md +84 -0
  211. package/modules/registry.yaml +1650 -0
  212. package/modules/risk-management/content.md +162 -0
  213. package/modules/risk-management/exercises.md +86 -0
  214. package/modules/risk-management/module.yaml +41 -0
  215. package/modules/risk-management/quick-ref.md +82 -0
  216. package/modules/risk-management/quiz.md +73 -0
  217. package/modules/risk-management/resources.md +40 -0
  218. package/modules/risk-management/walkthrough.md +67 -0
  219. package/modules/running-effective-standups/content.md +119 -0
  220. package/modules/running-effective-standups/exercises.md +79 -0
  221. package/modules/running-effective-standups/module.yaml +40 -0
  222. package/modules/running-effective-standups/quick-ref.md +61 -0
  223. package/modules/running-effective-standups/quiz.md +73 -0
  224. package/modules/running-effective-standups/resources.md +36 -0
  225. package/modules/running-effective-standups/walkthrough.md +76 -0
  226. package/modules/solid-principles/content.md +154 -0
  227. package/modules/solid-principles/exercises.md +107 -0
  228. package/modules/solid-principles/module.yaml +42 -0
  229. package/modules/solid-principles/quick-ref.md +50 -0
  230. package/modules/solid-principles/quiz.md +102 -0
  231. package/modules/solid-principles/resources.md +39 -0
  232. package/modules/solid-principles/walkthrough.md +84 -0
  233. package/modules/sprint-planning/content.md +142 -0
  234. package/modules/sprint-planning/exercises.md +79 -0
  235. package/modules/sprint-planning/game.yaml +84 -0
  236. package/modules/sprint-planning/module.yaml +44 -0
  237. package/modules/sprint-planning/quick-ref.md +76 -0
  238. package/modules/sprint-planning/quiz.md +102 -0
  239. package/modules/sprint-planning/resources.md +39 -0
  240. package/modules/sprint-planning/walkthrough.md +75 -0
  241. package/modules/sql-fundamentals/content.md +160 -0
  242. package/modules/sql-fundamentals/exercises.md +87 -0
  243. package/modules/sql-fundamentals/game.yaml +105 -0
  244. package/modules/sql-fundamentals/module.yaml +45 -0
  245. package/modules/sql-fundamentals/quick-ref.md +53 -0
  246. package/modules/sql-fundamentals/quiz.md +103 -0
  247. package/modules/sql-fundamentals/resources.md +42 -0
  248. package/modules/sql-fundamentals/walkthrough.md +92 -0
  249. package/modules/sql-fundamentals/workshop.yaml +109 -0
  250. package/modules/stakeholder-communication/content.md +186 -0
  251. package/modules/stakeholder-communication/exercises.md +87 -0
  252. package/modules/stakeholder-communication/module.yaml +38 -0
  253. package/modules/stakeholder-communication/quick-ref.md +89 -0
  254. package/modules/stakeholder-communication/quiz.md +73 -0
  255. package/modules/stakeholder-communication/resources.md +41 -0
  256. package/modules/stakeholder-communication/walkthrough.md +74 -0
  257. package/modules/system-design/content.md +149 -0
  258. package/modules/system-design/exercises.md +83 -0
  259. package/modules/system-design/game.yaml +95 -0
  260. package/modules/system-design/module.yaml +46 -0
  261. package/modules/system-design/quick-ref.md +59 -0
  262. package/modules/system-design/quiz.md +102 -0
  263. package/modules/system-design/resources.md +46 -0
  264. package/modules/system-design/walkthrough.md +90 -0
  265. package/modules/team-topologies/content.md +166 -0
  266. package/modules/team-topologies/exercises.md +85 -0
  267. package/modules/team-topologies/module.yaml +41 -0
  268. package/modules/team-topologies/quick-ref.md +61 -0
  269. package/modules/team-topologies/quiz.md +101 -0
  270. package/modules/team-topologies/resources.md +37 -0
  271. package/modules/team-topologies/walkthrough.md +76 -0
  272. package/modules/technical-debt/content.md +111 -0
  273. package/modules/technical-debt/exercises.md +92 -0
  274. package/modules/technical-debt/module.yaml +39 -0
  275. package/modules/technical-debt/quick-ref.md +60 -0
  276. package/modules/technical-debt/quiz.md +73 -0
  277. package/modules/technical-debt/resources.md +25 -0
  278. package/modules/technical-debt/walkthrough.md +94 -0
  279. package/modules/technical-mentoring/content.md +128 -0
  280. package/modules/technical-mentoring/exercises.md +84 -0
  281. package/modules/technical-mentoring/module.yaml +41 -0
  282. package/modules/technical-mentoring/quick-ref.md +74 -0
  283. package/modules/technical-mentoring/quiz.md +73 -0
  284. package/modules/technical-mentoring/resources.md +33 -0
  285. package/modules/technical-mentoring/walkthrough.md +65 -0
  286. package/modules/test-strategy/content.md +136 -0
  287. package/modules/test-strategy/exercises.md +84 -0
  288. package/modules/test-strategy/game.yaml +99 -0
  289. package/modules/test-strategy/module.yaml +45 -0
  290. package/modules/test-strategy/quick-ref.md +66 -0
  291. package/modules/test-strategy/quiz.md +99 -0
  292. package/modules/test-strategy/resources.md +60 -0
  293. package/modules/test-strategy/walkthrough.md +97 -0
  294. package/modules/test-strategy/workshop.yaml +96 -0
  295. package/modules/typescript-fundamentals/content.md +127 -0
  296. package/modules/typescript-fundamentals/exercises.md +79 -0
  297. package/modules/typescript-fundamentals/game.yaml +111 -0
  298. package/modules/typescript-fundamentals/module.yaml +45 -0
  299. package/modules/typescript-fundamentals/quick-ref.md +55 -0
  300. package/modules/typescript-fundamentals/quiz.md +104 -0
  301. package/modules/typescript-fundamentals/resources.md +42 -0
  302. package/modules/typescript-fundamentals/walkthrough.md +71 -0
  303. package/modules/typescript-fundamentals/workshop.yaml +146 -0
  304. package/modules/user-story-mapping/content.md +123 -0
  305. package/modules/user-story-mapping/exercises.md +87 -0
  306. package/modules/user-story-mapping/module.yaml +41 -0
  307. package/modules/user-story-mapping/quick-ref.md +64 -0
  308. package/modules/user-story-mapping/quiz.md +73 -0
  309. package/modules/user-story-mapping/resources.md +29 -0
  310. package/modules/user-story-mapping/walkthrough.md +86 -0
  311. package/modules/writing-prds/content.md +133 -0
  312. package/modules/writing-prds/exercises.md +93 -0
  313. package/modules/writing-prds/game.yaml +83 -0
  314. package/modules/writing-prds/module.yaml +44 -0
  315. package/modules/writing-prds/quick-ref.md +77 -0
  316. package/modules/writing-prds/quiz.md +103 -0
  317. package/modules/writing-prds/resources.md +30 -0
  318. package/modules/writing-prds/walkthrough.md +87 -0
  319. package/package.json +5 -3
  320. package/src/server.js +17 -7
@@ -0,0 +1,46 @@
1
+ slug: system-design
2
+ title: "System Design -- From Requirements to Architecture"
3
+ version: 1.0.0
4
+ description: "Master the system design interview framework and scalable distributed architecture."
5
+ category: architecture
6
+ tags: [system-design, architecture, scalability, distributed-systems, infrastructure]
7
+ difficulty: advanced
8
+
9
+ xp:
10
+ read: 20
11
+ walkthrough: 50
12
+ exercise: 30
13
+ quiz: 25
14
+ quiz-perfect-bonus: 15
15
+ game: 25
16
+ game-perfect-bonus: 15
17
+
18
+ time:
19
+ quick: 5
20
+ read: 25
21
+ guided: 60
22
+
23
+ prerequisites: [api-design]
24
+ related: [adr-writing, design-patterns]
25
+
26
+ triggers:
27
+ - "How do I design a scalable system?"
28
+ - "What is system design?"
29
+ - "How do I handle millions of users?"
30
+ - "What are the key components of distributed systems?"
31
+
32
+ visuals:
33
+ diagrams: [diagram-mermaid, diagram-architecture]
34
+ quiz-types: [quiz-drag-order, quiz-matching]
35
+ game-types: [scenario]
36
+ playground: bash
37
+ web-embeds: true
38
+ slides: true
39
+
40
+ sources:
41
+ - url: "https://github.com/donnemartin/system-design-primer"
42
+ label: "System Design Primer"
43
+ type: docs
44
+ - url: "https://dataintensive.net/"
45
+ label: "Designing Data-Intensive Applications"
46
+ type: docs
@@ -0,0 +1,59 @@
1
+ # System Design Quick Reference
2
+
3
+ ## Interview Framework
4
+
5
+ 1. **Requirements** — Functional + non-functional (scale, latency, availability)
6
+ 2. **Estimation** — DAU, QPS, storage (back-of-envelope)
7
+ 3. **High-level design** — Boxes and arrows, API, data flow
8
+ 4. **Deep dive** — 2–3 components in detail
9
+ 5. **Bottlenecks** — SPOFs, scale limits, mitigations
10
+
11
+ ## CAP Theorem
12
+
13
+ - **C**onsistency, **A**vailability, **P**artition tolerance — pick two
14
+ - In practice: **CP** (banking) or **AP** (social feeds)
15
+
16
+ ## Caching
17
+
18
+ | Strategy | When |
19
+ |----------|------|
20
+ | Cache-aside | App manages cache; on miss → DB → populate |
21
+ | Write-through | Write to cache + DB together |
22
+ | CDN | Static assets, edge |
23
+ | Redis/Memcached | App-layer hot data |
24
+
25
+ ## Database
26
+
27
+ | Type | Use case |
28
+ |------|----------|
29
+ | SQL | ACID, joins, relational |
30
+ | NoSQL document | Flexible schema, high write |
31
+ | NoSQL key-value | Simple lookups |
32
+ | Sharding | Partition by key (user_id, etc.) |
33
+ | Replication | Read replicas for scale |
34
+
35
+ ## Load Balancing
36
+
37
+ - Round-robin, least connections, consistent hashing
38
+ - Health checks to remove unhealthy nodes
39
+
40
+ ## Message Queues
41
+
42
+ - Decouple producers/consumers
43
+ - Async processing, buffering, retries
44
+ - Kafka, RabbitMQ, SQS
45
+
46
+ ## Rate Limiting
47
+
48
+ - Token bucket, sliding window, fixed window
49
+ - `429 Too Many Requests`, `Retry-After` header
50
+
51
+ ## Microservices vs Monolith
52
+
53
+ - Start monolith; extract when boundaries clear
54
+ - Per-service DB, independent deploy
55
+
56
+ ## Consistent Hashing
57
+
58
+ - Ring of hash space; nodes own ranges
59
+ - Add/remove node → minimal key movement
@@ -0,0 +1,102 @@
1
+ # System Design Quiz
2
+
3
+ ## Question 1
4
+
5
+ In the CAP theorem, partition tolerance means:
6
+
7
+ A) The system can split into multiple data centers
8
+ B) The system continues to operate despite network partitions
9
+ C) Data is partitioned across shards
10
+ D) You can choose between consistency and availability
11
+
12
+ <!-- ANSWER: B -->
13
+ <!-- EXPLANATION: Partition tolerance means the system still works when network links fail or messages are lost. In practice, you must assume partitions happen; you choose between CP (consistency + partition tolerance) or AP (availability + partition tolerance). -->
14
+
15
+ ## Question 2
16
+
17
+ Cache-aside (lazy loading) means:
18
+
19
+ A) The cache is populated when the app starts
20
+ B) The app checks the cache first; on miss, fetches from DB and populates cache
21
+ C) Writes go to cache first, then DB
22
+ D) The cache sits alongside the database
23
+
24
+ <!-- ANSWER: B -->
25
+ <!-- EXPLANATION: Cache-aside: app reads from cache first. On miss, app fetches from DB, writes to cache, returns to client. The app is responsible for cache population. -->
26
+
27
+ ## Question 3
28
+
29
+ When would you choose a message queue over synchronous HTTP calls?
30
+
31
+ A) When you need real-time responses
32
+ B) When you want to decouple services and handle traffic spikes asynchronously
33
+ C) When the database is too slow
34
+ D) When you need strong consistency
35
+
36
+ <!-- ANSWER: B -->
37
+ <!-- EXPLANATION: Message queues decouple producers and consumers. Async processing handles spikes, retries, and offloads heavy work. They trade latency for reliability and decoupling. -->
38
+
39
+ ## Question 4
40
+
41
+ Consistent hashing is used to:
42
+
43
+ A) Encrypt data across nodes
44
+ B) Minimize key reassignment when nodes are added or removed
45
+ C) Balance load evenly across all nodes
46
+ D) Ensure data consistency in a distributed database
47
+
48
+ <!-- ANSWER: B -->
49
+ <!-- EXPLANATION: Consistent hashing maps keys to a ring. When a node joins/leaves, only keys in that node's range need to move. Used in CDNs, caches, and distributed storage. -->
50
+
51
+ ## Question 5
52
+
53
+ For a URL shortener with 10:1 read:write ratio, the main scalability concern is:
54
+
55
+ A) Write throughput to the database
56
+ B) Read throughput — use caching aggressively
57
+ C) Storage capacity
58
+ D) Network latency between regions
59
+
60
+ <!-- ANSWER: B -->
61
+ <!-- EXPLANATION: With 10:1 read:write, reads dominate. Caching (CDN, app cache) for hot short URLs dramatically reduces DB read load. Writes are much lower volume. -->
62
+
63
+ ## Question 6
64
+
65
+ Fan-out on write (precomputing feeds) is preferable when:
66
+
67
+ A) Most users have millions of followers
68
+ B) Most users have few followers and read frequently
69
+ C) Writes are more frequent than reads
70
+ D) You need real-time consistency
71
+
72
+ <!-- ANSWER: B -->
73
+ <!-- EXPLANATION: Fan-out on write: when a user posts, push to all followers' feeds. Good when followers are modest in number; reads are fast. Bad for celebrities (millions of followers). -->
74
+
75
+ ## Question 7
76
+
77
+ <!-- VISUAL: quiz-drag-order -->
78
+
79
+ Put these system design interview steps in the recommended order:
80
+
81
+ A) Scale the design (bottlenecks, sharding, caching)
82
+ B) Clarify requirements and constraints
83
+ C) Design high-level components
84
+ D) Deep dive on 1–2 critical components
85
+ E) Identify and address trade-offs
86
+
87
+ <!-- ANSWER: B,C,A,D,E -->
88
+ <!-- EXPLANATION: Clarify requirements first. Design high-level components. Scale the design (handle load). Deep dive on critical parts. Discuss trade-offs and alternatives. -->
89
+
90
+ ## Question 8
91
+
92
+ <!-- VISUAL: quiz-matching -->
93
+
94
+ Match each scaling technique to its description:
95
+
96
+ A) Horizontal scaling → 1) Add more machines to handle load
97
+ B) Vertical scaling → 2) Add more RAM, CPU to existing machines
98
+ C) Sharding → 3) Partition data across multiple databases by key
99
+ D) Load balancer → 4) Distribute requests across multiple servers
100
+
101
+ <!-- ANSWER: A1,B2,C3,D4 -->
102
+ <!-- EXPLANATION: Horizontal = add more nodes. Vertical = add resources to existing nodes. Sharding = partition data by key. Load balancer = distribute incoming requests. -->
@@ -0,0 +1,46 @@
1
+ # System Design — Resources
2
+
3
+ ## Videos
4
+
5
+ - [System Design Interview — Gaurav Sen](https://www.youtube.com/playlist?list=PLMCXHnjXnTnvo6alSjVkgxV-VH6EPyvoX) — Structured approach and common problems.
6
+ - [ByteByteGo — System Design](https://www.youtube.com/@ByteByteGo) — Visual explanations of distributed systems.
7
+ - [Gaurav Sen — CAP Theorem](https://www.youtube.com/watch?v=k-Yaq8AHlFA) — CAP explained clearly.
8
+ - [Tech Dummies — System Design](https://www.youtube.com/playlist?list=PLkQkbY7JN6BpnK7Xn-HVXy4cR-LxxHrBQ) — Interview-style walkthroughs.
9
+
10
+ ## Articles and Guides
11
+
12
+ - [System Design Primer](https://github.com/donnemartin/system-design-primer) — Comprehensive GitHub repo with topics, patterns, and exercises.
13
+ - [High Scalability](http://highscalability.com/) — Case studies and patterns from real systems.
14
+ - [Martin Fowler — CQRS](https://martinfowler.com/bliki/CQRS.html) — Command Query Responsibility Segregation.
15
+ - [Martin Fowler — Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html) — Event sourcing pattern.
16
+ - [InfoQ — Distributed Systems](https://www.infoq.com/distributed-systems/) — Articles on distributed systems.
17
+
18
+ ## Books
19
+
20
+ - **Designing Data-Intensive Applications** by Martin Kleppmann — The definitive guide (DDIA).
21
+ - **System Design Interview** by Alex Xu — Two-volume interview preparation.
22
+ - **Building Microservices** by Sam Newman — Microservices architecture.
23
+
24
+ ## Tools and References
25
+
26
+ - [Consistent Hashing — Original Paper](https://www.akamai.com/blog/performance/what-is-consistent-hashing) — Akamai's explanation.
27
+ - [Redis Documentation — Caching Strategies](https://redis.io/docs/manual/patterns/) — Cache patterns with Redis.
28
+ - [AWS Well-Architected Framework](https://aws.amazon.com/architecture/well-architected/) — Scalability and reliability best practices.
29
+
30
+ ## Podcasts
31
+
32
+ - [Software Engineering Daily — Distributed Systems](https://softwareengineeringdaily.com/category/all-episodes/exclusive-content/distributed-systems/) — Technical deep dives on databases, caching, messaging.
33
+ - [The Pragmatic Engineer Podcast](https://newsletter.pragmaticengineer.com/) — Gergely Orosz on large-scale system decisions.
34
+ - [InfoQ Podcast](https://www.infoq.com/podcasts/) — Architecture and scalability interviews with industry leaders.
35
+
36
+ ## Interactive and Visual
37
+
38
+ - [ByteByteGo — System Design Visuals](https://bytebytego.com/) — Alex Xu's animated system design diagrams and newsletters.
39
+ - [Excalidraw](https://excalidraw.com/) — Collaborative whiteboard for sketching architecture diagrams.
40
+ - [System Design Primer — Anki Flashcards](https://github.com/donnemartin/system-design-primer#anki-flashcards) — Spaced-repetition cards for system design concepts.
41
+
42
+ ## Courses
43
+
44
+ - [MIT 6.824 — Distributed Systems (free)](https://pdos.csail.mit.edu/6.824/) — Lecture videos, labs on Raft, MapReduce, and more.
45
+ - [Grokking the System Design Interview](https://www.designgurus.io/course/grokking-the-system-design-interview) — Structured walkthrough of common design problems.
46
+ - [Educative — System Design for Developers](https://www.educative.io/courses/grokking-modern-system-design-interview-for-engineers-managers) — Interactive text-based course with diagrams.
@@ -0,0 +1,90 @@
1
+ # System Design Walkthrough — Learn by Doing
2
+
3
+ ## Before We Begin
4
+
5
+ <!-- hint:slides topic="System design process: requirements, estimation, high-level architecture, database choice, scaling, and CAP theorem" slides="6" -->
6
+
7
+ **Diagnostic Question:** When someone says "design a system," what do you think they mean first — the boxes and arrows, the data model, the APIs, or something else? Why might different people answer differently?
8
+
9
+ **Checkpoint:** You recognize that system design starts with understanding the problem before drawing anything. The "right" starting point depends on context.
10
+
11
+ ---
12
+
13
+ ## Step 1: Clarify Requirements
14
+
15
+ <!-- hint:progress -->
16
+
17
+ **Task:** You're asked to "design a URL shortener." Write down 3 functional and 3 non-functional requirements you'd ask the interviewer to clarify.
18
+
19
+ **Question:** Why does it matter whether the short URLs are 6 chars or 8 chars? What about read vs write ratio?
20
+
21
+ **Checkpoint:** You have a clear list of assumptions (scale, TTL, analytics, etc.).
22
+
23
+ ---
24
+
25
+ ## Step 2: Back-of-Envelope Estimation
26
+
27
+ **Task:** Assume 100M URLs/month. Estimate: (a) writes per second, (b) reads per second (assume 10:1 read:write), (c) storage for 5 years (50 bytes per record).
28
+
29
+ **Question:** What rounding and approximations did you use? How accurate do estimates need to be at this stage?
30
+
31
+ **Checkpoint:** You have rough QPS and storage numbers that bound the problem.
32
+
33
+ ---
34
+
35
+ ## Step 3: High-Level Diagram
36
+
37
+ <!-- hint:diagram mermaid-type="flowchart" topic="URL shortener architecture" -->
38
+
39
+ **Embed:** https://excalidraw.com/
40
+
41
+ **Task:** Draw a high-level architecture for the URL shortener: client, API, app servers, cache, database. Include the flow for "create short URL" and "resolve short URL."
42
+
43
+ **Question:** Where would a cache sit, and what keys would it use? What happens on a cache miss?
44
+
45
+ **Checkpoint:** You have a boxes-and-arrows diagram with clear data flow.
46
+
47
+ ---
48
+
49
+ ## Step 4: Choose a Database
50
+
51
+ <!-- hint:buttons type="single" prompt="Which database would you choose for a URL shortener?" options="SQL for consistency,NoSQL for scale,Depends on requirements" -->
52
+
53
+ **Task:** Would you use SQL or NoSQL for the URL shortener? Justify. Consider: schema, scale, consistency needs, operational simplicity.
54
+
55
+ **Question:** What if the requirement was "we need to list all URLs created by user X"? Does that change your choice?
56
+
57
+ **Checkpoint:** You can articulate tradeoffs between SQL and NoSQL for this use case.
58
+
59
+ ---
60
+
61
+ ## Step 5: Handle Scale and Bottlenecks
62
+
63
+ **Task:** Identify 2 bottlenecks: (1) DB write throughput, (2) cache stampede when a viral link gets massive traffic. Propose mitigations.
64
+
65
+ **Question:** What is a cache stampede? How would you prevent it (e.g., lock, probabilistic early expiration)?
66
+
67
+ **Checkpoint:** You can name concrete techniques (sharding, queuing, cache locking) for each bottleneck.
68
+
69
+ ---
70
+
71
+ ## Step 6: CAP and Consistency
72
+
73
+ <!-- hint:card type="concept" title="CAP Theorem" -->
74
+ <!-- hint:celebrate -->
75
+
76
+ **Task:** For the URL shortener, would you choose CP or AP? Why? What would "eventual consistency" mean for a redirect?
77
+
78
+ **Question:** Can a user tolerate seeing a 404 for a few seconds after creating a link? What about a banking transfer?
79
+
80
+ **Checkpoint:** You can explain why this system likely chooses AP and what tradeoffs that implies.
81
+
82
+ ---
83
+
84
+ ## Step 7: Rate Limiting
85
+
86
+ **Task:** Design a rate limit for the "create short URL" endpoint: 10 req/min per IP. Describe the algorithm (fixed window, sliding window, or token bucket) and what headers to return.
87
+
88
+ **Question:** What happens if a user hits the limit? Should you return 429 immediately or queue the request?
89
+
90
+ **Checkpoint:** You have a concrete rate-limiting strategy and response format.
@@ -0,0 +1,166 @@
1
+ # Team Topologies — Structuring Teams for Fast Flow
2
+
3
+ <!-- hint:slides topic="Team topologies: Conway's Law, four team types (stream-aligned, enabling, complicated-subsystem, platform), interaction modes, and cognitive load" slides="6" -->
4
+
5
+ ## Conway's Law
6
+
7
+ **"Organizations design systems that mirror their communication structure."** — Melvin Conway (1967)
8
+
9
+ If you have three teams working on a system, you'll get a three-part system. If teams don't talk to each other, the architecture will have hard boundaries where they don't. Conway's Law isn't a suggestion—it's an observation of how organizations actually work. The implication: **change the team structure to change the system architecture.**
10
+
11
+ ## The Four Fundamental Team Types
12
+
13
+ From *Team Topologies* by Skelton & Pais:
14
+
15
+ ```mermaid
16
+ flowchart TB
17
+ subgraph TeamTypes[Four Team Types]
18
+ SA[Stream-Aligned]
19
+ P[Platform]
20
+ E[Enabling]
21
+ CS[Complicated-Subsystem]
22
+ end
23
+ subgraph Modes[Interaction Modes]
24
+ Collab[Collaboration]
25
+ XaaS[X-as-a-Service]
26
+ Facil[Facilitating]
27
+ end
28
+ SA -->|XaaS| P
29
+ E -->|Facil| SA
30
+ CS -->|Collab| SA
31
+ ```
32
+
33
+ ```mermaid
34
+ flowchart TB
35
+ subgraph Types["Four Team Types"]
36
+ SA[Stream-Aligned Team]
37
+ P[Platform Team]
38
+ E[Enabling Team]
39
+ CS[Complicated-Subsystem Team]
40
+ end
41
+
42
+ SA -->|"owns full stream"| P
43
+ P -->|"provides platform"| SA
44
+ E -->|"helps learn"| SA
45
+ CS -->|"owns complex domain"| SA
46
+ ```
47
+
48
+ | Type | Purpose | Example |
49
+ |------|---------|---------|
50
+ | **Stream-aligned** | Own a full stream of value (e.g., checkout, search). They build, run, and evolve it. | "Checkout team" owns checkout end-to-end |
51
+ | **Platform** | Provide internal services, APIs, tooling so stream-aligned teams can ship without reinventing the wheel. | Platform team provides auth, deploy pipelines, observability |
52
+ | **Enabling** | Help stream-aligned teams learn new skills or adopt new tech. Temporary; they enable then step back. | Enable team helps adopt Kubernetes |
53
+ | **Complicated-subsystem** | Own a highly specialized domain (e.g., ML model, cryptography) that requires deep expertise. | Team owns payment compliance and PCI |
54
+
55
+ **Stream-aligned teams are the default.** Platform, enabling, and complicated-subsystem teams exist to *support* them.
56
+
57
+ ## The Three Interaction Modes
58
+
59
+ How teams work together matters as much as team type:
60
+
61
+ ```mermaid
62
+ flowchart LR
63
+ subgraph Modes["Interaction Modes"]
64
+ C[Collaboration]
65
+ X[X-as-a-Service]
66
+ F[Facilitating]
67
+ end
68
+
69
+ C -->|"high trust, discover together"| X
70
+ X -->|"clear API, SLA"| F
71
+ F -->|"teach, then step back"| C
72
+ ```
73
+
74
+ | Mode | When to Use | What It Looks Like |
75
+ |------|-------------|-------------------|
76
+ | **Collaboration** | Discovery, new domain, high ambiguity | Two teams work side-by-side; shared goals; flexible boundaries |
77
+ | **X-as-a-Service** | Stable, well-defined interface | Platform team provides a service; stream-aligned team consumes via API/SLA; low touch |
78
+ | **Facilitating** | Learning, adoption, transition | Enabling team teaches and supports; stream-aligned team learns; enabling steps back when done |
79
+
80
+ **Default to X-as-a-Service** for platform teams. Collaboration is expensive—use it when discovery is needed. Facilitating is time-bound.
81
+
82
+ ## Cognitive Load: The Key Constraint
83
+
84
+ Teams can only hold so much in their heads. **Cognitive load** has three dimensions:
85
+
86
+ 1. **Intrinsic** — inherent complexity of the domain (e.g., payments is hard)
87
+ 2. **Extraneous** — unnecessary complexity from tooling, process, unclear ownership
88
+ 3. **Germane** — productive learning that improves the team over time
89
+
90
+ **Goal:** Minimize extraneous, manage intrinsic, maximize germane. If a team's cognitive load is too high, they'll cut corners, create tech debt, or burn out. Splitting a team or adding a platform team can *reduce* load by simplifying what each team must understand.
91
+
92
+ ## Team Size: Two-Pizza Rule and Dunbar
93
+
94
+ - **Two-pizza rule** (Amazon): Team should be feedable by two pizzas—roughly 5–9 people. Larger teams need more coordination.
95
+ - **Dunbar's number:** Humans can maintain ~150 meaningful relationships, but effective *working* teams are typically 7±2. Beyond that, sub-teams form informally—design for it explicitly.
96
+
97
+ **When to split:** When cognitive load is too high, when wait times for decisions grow, or when the team naturally divides into sub-domains.
98
+
99
+ ## Team APIs
100
+
101
+ Teams interact through **APIs**—not just HTTP, but contracts: "We provide X; you consume Y; here's the SLA." A team API includes:
102
+
103
+ - **Documentation** — What we offer, how to use it
104
+ - **SLA** — Uptime, latency, support
105
+ - **Versioning** — How we evolve without breaking consumers
106
+ - **Support** — Who to ask, how to escalate
107
+
108
+ Platform teams should have clear team APIs so stream-aligned teams can self-serve.
109
+
110
+ ## Evolving Team Structures
111
+
112
+ Team topologies aren't static. As the product and organization evolve:
113
+
114
+ - **Early stage:** Few stream-aligned teams; maybe one platform person
115
+ - **Growth:** Add platform team when stream-aligned teams duplicate work
116
+ - **Scale:** Add enabling teams for big transitions (e.g., cloud migration)
117
+ - **Mature:** Complicated-subsystem teams when a domain requires dedicated expertise
118
+
119
+ **Avoid the Inverse Conway Maneuver pitfall:** Don't reorganize to "match" a desired architecture without also changing communication and incentives. Structure and behavior must align.
120
+
121
+ ## Common Pitfalls
122
+
123
+ | Pitfall | What Goes Wrong | Better Approach |
124
+ |---------|-----------------|-----------------|
125
+ | **Too many collaboration modes** | Everyone needs to work with everyone; meetings explode | Default to X-as-a-Service; limit collaboration to true discovery |
126
+ | **Platform team does project work** | Platform becomes a bottleneck; stream-aligned teams wait | Platform provides capabilities; stream-aligned teams build features |
127
+ | **Enabling never steps back** | Enabling team becomes permanent; stream-aligned doesn't own | Enabling has an exit criteria; handoff and step back |
128
+ | **Ignoring cognitive load** | Teams are overwhelmed; quality drops | Split teams or add platform; simplify ownership |
129
+ | **Reorg without behavior change** | New org chart, same silos | Change incentives, APIs, and communication patterns |
130
+
131
+ ## Four Team Types — Visual Summary
132
+
133
+ ```mermaid
134
+ flowchart TB
135
+ subgraph StreamAligned["Stream-Aligned (default)"]
136
+ SA1[Own full stream]
137
+ SA2[Build, run, evolve]
138
+ end
139
+
140
+ subgraph Platform["Platform"]
141
+ P1[Internal services, APIs]
142
+ P2[X-as-a-Service to streams]
143
+ end
144
+
145
+ subgraph Enabling["Enabling"]
146
+ E1[Teach, support]
147
+ E2[Step back when done]
148
+ end
149
+
150
+ subgraph Complicated["Complicated-Subsystem"]
151
+ C1[Specialized domain]
152
+ C2[Deep expertise required]
153
+ end
154
+
155
+ Platform --> StreamAligned
156
+ Enabling --> StreamAligned
157
+ Complicated --> StreamAligned
158
+ ```
159
+
160
+ ## Key Takeaways
161
+
162
+ 1. **Conway's Law** — Structure and architecture are linked; change one to change the other.
163
+ 2. **Stream-aligned first** — Default team type; others support them.
164
+ 3. **Interaction modes** — Collaboration (discovery), X-as-a-Service (default), Facilitating (learning).
165
+ 4. **Cognitive load** — The key constraint; design to reduce it.
166
+ 5. **Team APIs** — Clear contracts between teams enable autonomy.
@@ -0,0 +1,85 @@
1
+ # Team Topologies — Exercises
2
+
3
+ ## Exercise 1: Map Your Organization
4
+
5
+ **Task:** Create a diagram of your engineering organization (or a representative slice). Label each team by type: stream-aligned, platform, enabling, complicated-subsystem. Draw arrows for key interactions and label the mode (collaboration, X-as-a-Service, facilitating).
6
+
7
+ **Validation:**
8
+ - [ ] All teams classified
9
+ - [ ] Key interactions shown with mode labels
10
+ - [ ] At least one mismatch or improvement opportunity noted
11
+
12
+ **Hints:**
13
+ 1. Stream-aligned = owns a full value stream (e.g., "checkout," "search")
14
+ 2. Platform = provides services/tooling for other teams
15
+ 3. Enabling = temporary; helps teams learn then steps back
16
+ 4. Complicated-subsystem = highly specialized domain
17
+
18
+ ---
19
+
20
+ ## Exercise 2: Design a Platform Team API
21
+
22
+ **Task:** You're creating a platform team that will provide: CI/CD pipelines, observability (metrics, logs, traces), and a shared auth library. Write a one-page "team API" document: what each offering is, how to consume it, SLA (e.g., 99.9% uptime), and support path.
23
+
24
+ **Validation:**
25
+ - [ ] Each capability is defined
26
+ - [ ] Consumption path is clear (docs, examples, onboarding)
27
+ - [ ] SLA and support model specified
28
+ - [ ] A stream-aligned team could self-serve from this doc
29
+
30
+ **Hints:**
31
+ 1. SLA: What does "platform down" mean? Response time for support?
32
+ 2. Versioning: How do we evolve without breaking consumers?
33
+ 3. Onboarding: Link to runbooks, slack channel, office hours
34
+
35
+ ---
36
+
37
+ ## Exercise 3: Cognitive Load Assessment
38
+
39
+ **Task:** Pick a team (real or hypothetical). List 5 sources of cognitive load. Classify each as intrinsic, extraneous, or germane. For each extraneous source, propose one change to reduce it.
40
+
41
+ **Validation:**
42
+ - [ ] 5 sources identified
43
+ - [ ] Each classified correctly
44
+ - [ ] At least 2 extraneous sources with proposed fixes
45
+ - [ ] Fixes are concrete and actionable
46
+
47
+ **Hints:**
48
+ 1. Intrinsic: domain complexity (payments, ML, crypto)
49
+ 2. Extraneous: unclear ownership, brittle tooling, excessive context-switching
50
+ 3. Germane: learning a new system, deliberate practice
51
+ 4. Fixes: simplify ownership, add platform, reduce meetings
52
+
53
+ ---
54
+
55
+ ## Exercise 4: When to Add a Platform Team
56
+
57
+ **Task:** You have 3 stream-aligned teams. Each has built its own deploy pipeline, logging, and error tracking—slightly different in each case. Write a short proposal: when and why to add a platform team. Include: trigger (what signals "now"?), scope (what does platform own?), and transition plan (how do stream-aligned teams migrate?).
58
+
59
+ **Validation:**
60
+ - [ ] Clear trigger for adding platform
61
+ - [ ] Scope is defined (what platform owns vs. streams)
62
+ - [ ] Transition plan addresses "how do we get there"
63
+ - [ ] Proposal is 1 page or less
64
+
65
+ **Hints:**
66
+ 1. Trigger: duplication, inconsistency, long onboarding for new teams
67
+ 2. Scope: start with highest-leverage (deploy? observability?)
68
+ 3. Transition: platform builds v1; streams migrate over 2–3 months; deprecate old
69
+
70
+ ---
71
+
72
+ ## Exercise 5: Interaction Mode Mismatch
73
+
74
+ **Task:** Describe a scenario where two teams use the *wrong* interaction mode. Example: platform and stream-aligned in constant collaboration when X-as-a-Service would work. What are the symptoms? What would need to change to fix it?
75
+
76
+ **Validation:**
77
+ - [ ] Scenario is concrete (teams, domain, current mode)
78
+ - [ ] Wrong mode is justified (why is it a problem?)
79
+ - [ ] Correct mode identified
80
+ - [ ] Change plan includes: new API, SLA, communication pattern
81
+
82
+ **Hints:**
83
+ 1. Collaboration when X-as-a-Service would work: everyone in every meeting, no clear API
84
+ 2. Symptoms: platform is bottleneck, stream-aligned teams wait
85
+ 3. Fix: define team API, document, establish SLA, reduce ad-hoc communication
@@ -0,0 +1,41 @@
1
+ slug: team-topologies
2
+ title: "Team Topologies — Structuring Teams for Fast Flow"
3
+ version: 1.0.0
4
+ description: "Design teams for fast flow: Conway's Law, four team types, three interaction modes, and cognitive load."
5
+ category: leadership
6
+ tags: [team-topologies, organization-design, team-structure, conways-law, platform-teams]
7
+ difficulty: advanced
8
+
9
+ xp:
10
+ read: 20
11
+ walkthrough: 50
12
+ exercise: 30
13
+ quiz: 25
14
+ quiz-perfect-bonus: 15
15
+
16
+ time:
17
+ quick: 5
18
+ read: 25
19
+ guided: 60
20
+
21
+ prerequisites: []
22
+ related: [system-design, one-on-ones]
23
+
24
+ triggers:
25
+ - "How should I structure engineering teams?"
26
+ - "What are team topologies?"
27
+ - "What is Conway's Law?"
28
+ - "What are platform teams?"
29
+
30
+ visuals:
31
+ diagrams: [diagram-mermaid, diagram-architecture]
32
+ quiz-types: [quiz-matching, quiz-timed-choice]
33
+ slides: true
34
+
35
+ sources:
36
+ - label: "Team Topologies by Skelton & Pais"
37
+ type: book
38
+ url: "https://teamtopologies.com"
39
+ - label: "Conway's Law (original paper)"
40
+ type: article
41
+ url: "https://www.melconway.com/Home/Committees_Paper.html"