บทที่ 20 · Part 5 — Decisions & Delivery
Communicating Design
แปลงเรื่องเดียวกันให้ CTO/squad/regulator/vendor เข้าใจ, diagram ที่รอดการรีวิว, RFC template และการรับ pushback
Design ที่ไม่มีใครเข้าใจจะไม่ถูกสร้าง Design ที่ถูกสร้างแต่ไม่มีใครอธิบายได้จะไม่ได้งบ ไม่ได้อนุมัติ และไม่ได้ถูกดูแล การสื่อสารไม่ใช่ส่วนที่ soft ของงานนี้ — สำหรับ solution architect มันคือตัวงาน งาน design ทั้งหมดใน 19 บทก่อนกลายเป็นเรื่องจริงได้ผ่านบทนี้เท่านั้น
จบบทนี้คุณจะ
- อธิบายระบบเดียวกันให้ CTO, squad, risk officer และ vendor เข้าใจได้ โดยข้อเท็จจริงไม่เปลี่ยน
- พูด executive pitch 60 วินาทีที่มีทุกช่องครบ
- วาด diagram ที่รอดการรีวิว และรู้ว่าทำไม unlabelled arrow เป็นปัญหา
- เขียน RFC ตาม template และระบุสถานะของทุกคำกล่าว (verified / assumption / needs decision)
- รับ pushback 6 แบบได้ และรู้ว่าเมื่อไหร่ต้อง escalate
[!TIP] ทักษะแกน: ความจริงเดียว หลายระดับความสูง คุณจะอธิบายระบบเดียวกันให้ CTO, squad ของ engineer, risk officer และ vendor
ข้อเท็จจริงต้องเหมือนกันเป๊ะในทั้ง 4 บทสนทนา — การเปลี่ยนเรื่องเล่าตามผู้ฟังคือวิธีที่ architect เสียเครดิตอย่างถาวร
สิ่งที่เปลี่ยนคือ ระดับความสูง: รายละเอียดไหนที่ใส่ และคุณเทียบ design กับอะไร
แปลตามผู้ฟัง
| ผู้ฟัง | เขาสนใจอะไรจริงๆ | เปิดด้วย | ห้ามทำ |
|---|---|---|---|
| CTO / CIO | ความเสี่ยง, ต้นทุน, เวลา, ความเข้ากับกลยุทธ์, สิ่งที่คุณต้องการจากเขา | การตัดสินใจ, ต้นทุน, ความเสี่ยง, และเรื่องเดียวที่ต้องการให้ตัดสินวันนี้ | เปิดด้วย component diagram · ห้ามเสนอทางเลือกโดยไม่มีคำแนะนำ |
| Product owner | ผู้ใช้เจออะไร, อะไรขึ้นเมื่อไหร่, อะไรอยู่นอก scope | พฤติกรรมที่ผู้ใช้เห็น รวมถึงพฤติกรรมตอน degrade และตอนล้ม | ใช้คำอย่าง "idempotency" โดยไม่แปลเป็นผลลัพธ์ที่ผู้ใช้เจอ |
| Engineering squad | contract, data model, edge case, ใครเป็นเจ้าของอะไร, วันจันทร์ทำอะไร | API และ data model แล้วต่อด้วย failure table | ปัดผ่านส่วนที่ยาก — เขาจะเจอ และแล้วเขาจะไม่เชื่อส่วนที่เหลือ |
| Risk / Compliance / Audit | control, หลักฐาน, data flow, ใครทำอะไรได้, อะไรถูก log | data flow diagram, จุด control, audit trail, retention | เดาการตีความทางกฎระเบียบ — ให้พูดว่า "นี่คือความเข้าใจของเราจาก [แหล่ง] ขอให้ยืนยันด้วย" |
| Security | trust boundary, authn/authz, secret, blast radius, data classification | trust-boundary diagram และรายการ threat | อ้างว่าอะไร "ปลอดภัย" — ให้อธิบายว่ามันป้องกันอะไรและไม่ป้องกันอะไร |
| Partner / vendor | interface, ปริมาณ, SLA, การจัดการ error, กระบวนการ support | contract และตัวเลข | เปิดเผยสถาปัตยกรรมภายใน, ขีดจำกัดภายใน หรือ roadmap ที่เป็นความลับ — แชร์ interface ไม่ใช่ internals |
| Operations / on-call | จะรู้ได้อย่างไรว่ามันพัง และต้องทำอะไร | alert, dashboard, runbook, kill switch | ส่งของโดยไม่มี runbook แล้วบอกว่าเสร็จแล้ว |
Executive version 60 วินาที — จำรูปนี้ไว้
"เรากำลังสร้าง X เพื่อให้ [ผลลัพธ์ทางธุรกิจ] วิธีการคือ [1 ประโยค] ต้นทุนประมาณ [ตัวเลข] และใช้เวลา [ระยะเวลา] ความเสี่ยงหลักคือ [ความเสี่ยง] และเราจัดการด้วย [การบรรเทา] trade-off ที่เรายอมรับคือ [สิ่งที่ยอมเสีย] เพราะ [เหตุผลที่รับได้] จากคุณผมต้องการ [การตัดสินใจ 1 ข้อที่เฉพาะเจาะจง]"
[!TIP] 6 ประโยค ฝึกพูดออกเสียงจนเป็นอัตโนมัติ ถ้าเติมช่องใดช่องหนึ่งไม่ได้ คุณยังไม่พร้อมนำเสนอ — และช่องที่ว่างนั้นบอกคุณตรงๆ ว่าต้องไปทำอะไรมาก่อน
Diagram ที่รอดการรีวิว
ใช้ C4 model — 4 ระดับ และวาดเฉพาะระดับที่ผู้ฟังต้องการ
| ระดับ | แสดงอะไร | ผู้ฟัง | จำกัดไว้ที่ |
|---|---|---|---|
| 1 · Context | ระบบของคุณเป็นกล่องเดียว บวกผู้ใช้และระบบภายนอก | ผู้บริหาร, partner, compliance | ~10 กล่อง — เป็น diagram ที่คุณจะใช้บ่อยที่สุดและเป็นอันที่ขาดบ่อยที่สุด |
| 2 · Container | app, service, ฐานข้อมูล, queue — และ protocol ระหว่างกัน | engineer, ops, security | ~15 กล่อง · นี่คือ "architecture diagram" ที่คนหมายถึง |
| 3 · Component | ข้างใน 1 container | ทีมที่สร้างมัน | เฉพาะอันที่ซับซ้อน ปกติไม่คุ้มที่จะวาด |
| 4 · Code | class | ปกติไม่มีใคร | generate ถ้าต้องใช้ · ห้าม maintain ด้วยมือ |
กฎ 7 ข้อของ diagram ที่ไม่ถูกรื้อในห้องรีวิว
- ทุกกล่องมีชื่อและมีจุดประสงค์ — "Service" ไม่ใช่ชื่อ · "Transfer Service — รับและบันทึกการเคลื่อนย้ายเงิน" คือชื่อ
- ทุกลูกศรกำกับว่าอะไรไหลและไหลอย่างไร —
HTTPS/JSON, sync,Kafka, async, at-least-once· ลูกศรที่ไม่มีป้ายซ่อนการตัดสินใจที่สำคัญที่สุดในหน้านั้น - ทิศทางหมายถึง dependency และต้องสม่ำเสมอ — การผสม "เรียก" กับ "ส่งข้อมูลไป" ใน diagram เดียวกันรับประกันว่า reviewer จะสับสน
- แสดง trust boundary เป็น container เส้นประ — internet / DMZ / internal / ขอบเขตข้อมูลบัตร / partner · security และ audit อ่านอันนี้ก่อน และถ้าไม่มีเขาจะถาม
- 1 diagram 1 คำถาม — diagram ที่ตอบ "การจ่ายเงินไหลอย่างไร" ไม่ใช่ diagram เดียวกับ "อะไร deploy อยู่ที่ไหน" · วาด 2 อัน
- ใส่ legend และวันที่ และเก็บ source ไว้ข้างโค้ดเพื่อให้อัปเดตได้ — diagram ที่ไม่มีวันที่ใน wiki คือข้อมูลผิดภายใน 6 เดือน
- Diagram as code (Mermaid, PlantUML, Structurizr) ถูกรีวิวใน pull request และคงความทันสมัย — ภาพวาดใน slide deck ไม่
ตัวอย่างข้างบนคือ Level-2 ที่มี trust boundary
สังเกตว่า ทุกลูกศรบอก protocol และ sync/async และ ขอบเขตข้อมูลบัตรแยกออกมาเป็น boundary ของตัวเอง — 2 อย่างนี้คือสิ่งที่ security กับ audit จะถามหาก่อนอย่างอื่น
วินัยบนกระดาน (ทั้งในสัมภาษณ์และในประชุมจริง)
LAYOUT — ใช้ layout เดิมทุกครั้ง เพื่อให้มือของคุณว่างพอที่จะคิดเรื่องโจทย์
แทนที่จะคิดเรื่องรูป
┌──────────────┬───────────────────────────────┬──────────────┐
│ REQUIREMENTS │ ARCHITECTURE (อันใหญ่) │ ESTIMATES │
│ functional │ │ QPS │
│ quality │ │ storage │
│ non-goals │ │ peak │
├──────────────┤ ├──────────────┤
│ API/CONTRACT │ │ DEEP DIVE / │
│ DATA MODEL │ │ FAILURES │
└──────────────┴───────────────────────────────┴──────────────┘
6 ข้อที่ต้องทำระหว่างนั้น:
- เขียน requirement และ NON-GOAL ก่อน ไว้ที่มุมกระดาน และปล่อยให้มองเห็นตลอด — คุณจะชี้ไปที่มันทั้ง session
- บรรยายไปพร้อมกับที่วาด — "ผมวาง cache ที่นี่เพราะ pattern 1 คือ 300 read/s และทนความเก่าได้ 5 วินาที"
- เว้นที่ว่างไว้ — คุณจะต้องเพิ่มของ
- เวลาสมมติอะไร ให้พูดคำว่า "สมมติว่า" แล้วเขียนมันลงไป
- เวลาไม่รู้ ให้พูดว่า "ผมไม่รู้ นี่คือวิธีที่ผมจะหาคำตอบ" — ในประชุมจริงมันสร้างความเชื่อถือ ในการสัมภาษณ์ได้คะแนนสูงกว่าคำตอบผิดที่พูดอย่างมั่นใจ
- คุม session เอง — "เหลืออีก 15 นาที ผมอยากใช้มันกับ ledger กับเส้นทาง reconciliation อันนั้นมีประโยชน์ที่สุดไหม" · ทั้งผู้สัมภาษณ์และ stakeholder ตอบสนองดีกับ architect ที่บริหารเวลาอย่างชัดเจน
RFC template
1 เอกสารต่อ 1 design ที่มีนัยสำคัญ เก็บใน version control ข้างโค้ด เป้าหมาย 3–6 หน้า — ถ้ายาวกว่านั้นไม่มีใครอ่าน และความยาวมักซ่อนการตัดสินใจที่ยังไม่ได้ตัดสิน
# RFC-021: Wallet-to-wallet transfers
Author · Reviewers · Status (Draft|In review|Approved|Superseded) · Date
Approval required from: <ตำแหน่งที่ระบุชื่อ สำหรับอะไรที่กระทบ production>
## 1. Summary (ไม่เกิน 5 ประโยค)
เรากำลังสร้างอะไร เพื่อใคร และวิธีการ 1 บรรทัด
## 2. Problem & context
ทำไมตอนนี้ · วันนี้มีอะไรอยู่ · อะไรพังหรือขาด · ลิงก์ไป business case
ใส่ตัวเลขที่ให้เหตุผลว่างานนี้ควรทำ
## 3. Goals / Non-goals
ชัดเจนและทดสอบได้
Non-goal เป็นหัวข้อที่มีค่าที่สุดในเอกสาร — มันคือสิ่งที่หยุด scope creep
ในอีก 6 สัปดาห์
## 4. Requirements
รายการ functional · quality attribute พร้อมตัวเลข (latency, availability,
consistency, durability, retention) · constraint
สำหรับทุก requirement ด้าน compliance หรือนโยบาย:
*แหล่งที่มา และใครยืนยัน พร้อมวันที่*
## 5. Proposed design
Context diagram แล้วต่อด้วย container diagram · API contract ·
data model พร้อม access pattern table ·
request trace ของ happy path และ failure path อย่างน้อย 2 เส้น
## 6. Alternatives considered
2-3 ทางเลือก พร้อมเหตุผลที่แพ้ · ต้องมี "ไม่ทำอะไร / ขยายระบบเดิม" ด้วย
เอกสารที่ไม่มีทางเลือกที่ถูกปฏิเสธอ่านเหมือนการตัดสินใจที่ไม่เคยเกิดขึ้นจริง
## 7. Trade-offs accepted
เรายอมเสียอะไร และทำไมมันรับได้ในบริบทนี้
## 8. Failure modes & operations
Failure table · SLO และ error budget · alert · ลิงก์ runbook ·
พฤติกรรมตอน degrade รวมถึง *ใครเป็นเจ้าของการตัดสิน fail-open/fail-closed* ·
kill switch
## 9. Security & privacy
Trust boundary · data classification · โมเดล authn/authz ·
การจัดการ secret · อะไรถูก log และอะไรถูก mask ·
retention และการลบ · threat ที่พิจารณาและที่อยู่นอก scope
## 10. Rollout & migration
กลยุทธ์ flag · ขั้นการ ramp พร้อม metric ที่เป็น gate ของแต่ละขั้น ·
เงื่อนไขและขั้นตอน rollback · แผน migrate ข้อมูล (expand-migrate-contract) ·
และวิธียืนยันความถูกต้องในแต่ละขั้น
## 11. Cost
ค่า infra รายเดือนโดยประมาณ และ cost per business event ถ้าทำได้
## 12. Open questions & decisions needed
ใครต้องตัดสินอะไร ภายในเมื่อไหร่ เพื่อให้โปรเจกต์เดินต่อได้
ให้เฉพาะเจาะจง — "Compliance ยืนยันระยะเวลา retention ภายใน 15 ส.ค."
## Appendix: ADR ที่เกิดจาก RFC นี้
วินัยทางภาษาในเอกสาร design
ระบุสถานะของทุกคำกล่าวให้แม่น เพราะ reviewer และ auditor ปรับระดับความเชื่อถือของคุณจากข้อนี้
| สถานะ | รูปประโยค |
|---|---|
| Verified | "วัดใน load test วันที่ 2026-08-05: 1,240 tps ที่ p99 620 ms" (ลิงก์หลักฐาน) |
| From a source | "rail ระบุ timeout 30 s ในเอกสาร [ลิงก์ไปหัวข้อของ spec]" |
| Assumption | "เราสมมติ peak factor 10× ต้องยืนยันกับ telemetry ของ production" |
| Estimate | "ประมาณ 300 tps เอาแค่ order of magnitude" |
| Needs a decision | "ระยะเวลา retention: รอการยืนยันจาก Compliance" |
ห้ามเขียนคำว่า "tested", "approved", "compliant" หรือ "production-ready" เว้นแต่มันเป็นความจริงและคุณชี้หลักฐานได้
คำกล่าวที่เกินจริงเพียงข้อเดียวที่ถูกจับได้ในห้องรีวิว ทำให้ reviewer กลับไปตรวจเอกสารทั้งฉบับใหม่ — และเขาทำถูก
Design review ที่ผลิตการตัดสินใจออกมาได้
| ก่อน | ระหว่าง | หลัง |
|---|---|---|
| ส่งเอกสารล่วงหน้า 48 ชม. · ระบุการตัดสินใจที่คุณต้องการอย่างเฉพาะเจาะจง · เชิญคนที่ตัดสินใจได้ บวกคนขี้สงสัย 1 คน และคนที่จะต้องดูแลมัน 1 คน | 5 นาที context, 10 นาที design, 30 นาทีคุย · จดบนหน้าจอที่แชร์ให้คนเห็นว่าข้อกังวลของเขาถูกบันทึก · จับเวลา rabbit hole: "เอาไปคุยต่อข้างนอก ผมจดเป็น open question ข้อ 4" | ภายใน 24 ชม.: เผยแพร่การตัดสินใจ, เจ้าของ, วันที่ และ open question · เขียน ADR · อัปเดตเอกสาร · ความเงียบหลังรีวิวคือวิธีที่ design ตายอย่างเงียบๆ |
การ facilitate ที่ได้ผล:
- ถามว่า "อะไรจะต้องเป็นจริง เพื่อให้ design นี้เป็น design ที่ผิด"
- ถามคนที่ senior และเงียบที่สุดโดยตรง
- แยก "ผมไม่เห็นด้วย" ออกจาก "ผมไม่เข้าใจ" ให้เร็ว
- เมื่อ 2 คนกำลังเถียงกัน เรียกชื่อเกณฑ์ที่เขาไม่เห็นด้วยกันจริงๆ — "คุณกำลัง optimize เพื่อความเร็วในการส่งของ เขากำลัง optimize เพื่อ operability ที่นี่อันไหนสำคัญกว่า และใครเป็นคนตัดสิน"
รับ pushback
| คุณได้ยิน | สิ่งที่มักอยู่เบื้องหลัง | ตอบด้วย |
|---|---|---|
| "อันนี้ over-engineered" | เขาไม่เห็นว่า requirement ข้อไหนขับความซับซ้อนนี้ — และบางครั้งเขาถูก | ไล่ทุก component กลับไปหา requirement ที่ระบุไว้ · ถ้าอันไหนไล่กลับไม่ได้ ให้ลบ และขอบคุณเขา |
| "ทำไมไม่ใช้ X เฉยๆ" | ความสงสัยจริง หรือการเชียร์เครื่องมือที่คุ้นเคย | "เป็นทางเลือกที่ดี มันอยู่ใน matrix แล้ว มันแพ้ที่ [เกณฑ์] เพราะ [เหตุผล] ถ้า [เกณฑ์] เปลี่ยน X จะเป็นคำตอบที่ถูก" |
| "เราไม่มีเวลาทำอย่างนั้น" | เป็น constraint จริง และเป็นการขอให้คุณช่วยเขาเลือก | เสนอแผนแบ่งขั้น: อะไรขึ้นตอนนี้, อะไรเลื่อน, และความเสี่ยงที่ชัดเจนของการเลื่อน · ให้คนที่รับผิดชอบเลือกโดยเห็นความเสี่ยง — ห้ามรับการตัดสินใจนั้นมาไว้กับตัวเองอย่างเงียบๆ |
| "vendor บอกว่าเขาจัดการเรื่องนั้นได้" | คำกล่าวที่ไม่มีหลักฐาน | "ขอเป็นลายลักษณ์อักษรและทดสอบใน pilot ตัวเลขไหนที่เราต้องให้เขายืนยัน" |
| "ทำแบบระบบเดิมก็พอ" | ความกลัวความเสี่ยงที่ไม่คุ้นเคย · มักมีความรู้เชิงสถาบันที่จริง | ถามว่าระบบเดิมทำอะไรถูก — มักมีเหตุผลที่ได้มาด้วยความเจ็บปวด · แล้วระบุเฉพาะเจาะจงว่าคุณกำลังเปลี่ยนอะไรและทำไม |
| คนที่ senior กว่าล้มการตัดสินใจของคุณในเรื่องความเสี่ยงจริง | ระดับการยอมรับความเสี่ยงต่างกัน หรือเขามีข้อมูลที่คุณไม่มี | ระบุความเสี่ยง 1 ครั้ง เป็นลายลักษณ์อักษร ด้วยภาษาที่เป็นกลาง พร้อมการบรรเทาที่คุณแนะนำ แล้วทำตามการตัดสินใจของเขาอย่างมืออาชีพ · escalate เฉพาะเมื่อมันข้ามเส้นด้านความปลอดภัย กฎหมาย หรือกฎระเบียบ — และตอนนั้นให้ escalate ผ่านช่องทางที่ถูกต้อง เป็นลายลักษณ์อักษร โดยไม่มีดราม่า |
Influence without authority
Solution architect ส่วนใหญ่ไม่มีอำนาจสั่งการทีมที่จะสร้าง design สิ่งที่ได้ผล เรียงตามประสิทธิผล:
- เป็นประโยชน์อย่างพิสูจน์ได้ — ทำ estimation ที่ไม่มีใครทำ, เขียน failure table ที่ไม่มีใครเขียน
- ให้ชื่อของคนอื่นอยู่บนไอเดียที่ดี
- สร้างมัน 1 ครั้งเป็น reference implementation แทนที่จะเขียนเอกสารมาตรฐาน
- ทำให้ทางที่ถูกเป็นทางที่ง่าย (template, library, paved road)
- อย่าชนะการเถียงที่ไม่จำเป็นต้องเถียง
อำนาจตามหลังประวัติของการถูกต้องในทางที่คนอื่นตรวจสอบได้
Lab 20 และ Capstone
Lab 20 (90 นาที)
หยิบ design ที่ดีที่สุดของคุณจากLab 18 แล้วผลิต:
| ผลงาน | เกณฑ์ |
|---|---|
| (ก) C4 Level-1 และ Level-2 เป็นโค้ด | ทุกลูกศรมีป้าย, มี trust boundary, มีวันที่ |
| (ข) Executive pitch 60 วินาที | นำเสนอต่อกลุ่มและจับเวลา — จะถูกตัดที่ 60 วินาที |
| (ค) design เดียวกันอธิบายให้ "compliance officer" ที่ถามแต่เรื่อง data flow, control และ retention | — |
| (ง) 2 หน้าของ RFC ครอบคลุม failure mode และ rollout | — |
Peer scoring 2 ข้อ: สถานะของทุกคำกล่าวชัดไหม (verified / assumption / needs decision)? และ คำอธิบาย 2 แบบมีข้อเท็จจริงชุดเดียวกันไหม?
Capstone (1 วันเต็ม หรือ 1 สัปดาห์แบบ part-time)
เลือกระบบจริงในองค์กรของคุณ — ในอุดมคติคืออันที่คุณไม่พอใจ แล้วผลิต RFC ที่ครบ:
- การประเมินสถานะปัจจุบัน พร้อมตัวเลขที่วัดได้
- Target design
- แผน migration ด้วย expand-migrate-contract หรือ strangler fig
- Failure table
- SLO
- Cost model พร้อม cost-per-transaction
- ADR 3 ฉบับ
- รายการการตัดสินใจที่คุณต้องการ จากคนที่ระบุชื่อ
นำเสนอใน 20 นาทีต่อคณะที่เล่นบท CTO, product owner และ risk officer
เกณฑ์ผ่าน
- ทุก component ไล่กลับไปหา requirement ได้
- ทุกตัวเลขถูกกำกับว่า verified / estimated / assumed
- failure table มีสัญญาณตรวจจับทุกแถว
- แผน migration ย้อนกลับได้ทุกขั้น
- คุณขอการตัดสินใจที่ถูกต้อง จากคนที่ถูกต้อง
ถ้าทำสิ่งนี้ได้ คุณกำลังทำงานนี้อยู่จริง
[!NOTE] สรุปบทนี้ ความจริงเดียว หลายระดับความสูง — ข้อเท็จจริงห้ามเปลี่ยนตามผู้ฟัง · executive version 6 ประโยค และช่องที่เติมไม่ได้บอกคุณว่าต้องไปทำอะไร · ลูกศรที่ไม่มีป้ายซ่อนการตัดสินใจที่สำคัญที่สุด · diagram as code รอด diagram ใน slide ไม่รอด · ระบุสถานะของทุกคำกล่าวใน RFC และห้ามเคลมคำว่า tested/approved/compliant โดยไม่มีหลักฐาน · และความเงียบหลัง design review คือวิธีที่ design ตายอย่างเงียบๆ